پرش به مطلب اصلی

نمای کلی سیستم کش

مقدمه

سیستم کش Planet یک راه‌حل کش‌گذاری رویداد محور (Event-Driven) است که برای به‌روزرسانی خودکار داده‌های کش شده بر اساس رویدادهای کسب‌وکار طراحی شده است. این سیستم از الگوی معماری تمیز (Clean Architecture) با جداسازی دقیق دغدغه‌ها پیروی می‌کند و الگوی استراتژی (Strategy Pattern) را برای حالت‌های مختلف پردازش پیاده‌سازی می‌کند.

این سیستم چالش‌های رایج کش‌گذاری را با موارد زیر حل می‌کند:

  • به‌روزرسانی خودکار کش هنگام تغییر داده‌های مرتبط
  • حفظ سازگاری داده‌ها در سراسر اپلیکیشن
  • ارائه دسترسی ایمن نوع (Type-Safe) به داده‌های کش شده
  • پشتیبانی از پردازش همزمان (Synchronous) و ناهمزمان (Asynchronous)
  • محافظت از داده‌های کش در برابر دستکاری مستقیم

ویژگی‌های کلیدی

  • معماری رویداد محور: کش به طور خودکار در پاسخ به رویدادهای کسب‌وکار به‌روزرسانی می‌شود
  • ایمنی نوع: تایپ قوی در سراسر سیستم با اعتبارسنجی مناسب
  • محافظت فیلد: از دستکاری مستقیم داده‌های کش جلوگیری می‌کند
  • تبدیل داده (Data Casting): اطمینان از ذخیره و بازیابی داده‌ها با نوع‌های صحیح
  • پردازش همزمان/ناهمزمان: حالت‌های پردازش انعطاف‌پذیر برای نیازهای عملکردی مختلف
  • معماری تمیز: جداسازی دقیق دغدغه‌ها با رابط‌های تعریف شده
  • مدیریت خطای قوی: مدیریت جامع خطا و لاگ‌گیری

اجزای اصلی

رابط‌ها و قراردادها (Interfaces)

  • CacheableModel: رابطی که مدل‌ها باید برای شرکت در کش‌گذاری پیاده‌سازی کنند
  • BusinessEvent: رابط برای رویدادهایی که به‌روزرسانی کش را راه‌اندازی می‌کنند
  • CacheHandler: رابط برای تولیدکننده‌های داده کش
  • CacheInitializerInterface: رابط برای مقداردهی‌کننده‌های داده کش

DTO ها و مجموعه‌ها (Collections)

  • CacheConfigDTO: پیکربندی برای هر کلید کش با اعتبارسنجی
  • CacheConfigCollection: مجموعه تایپ شده از پیکربندی‌های کش
  • CacheEventDTO: داده رویداد ارسال شده به کنترل‌کننده‌های کش همراه با فراداده (Metadata)
  • CacheHandlerResult: نتیجه کش واحد با شناسه موجودیت و داده
  • CacheHandlerResultCollection: مجموعه تایپ شده از نتایج کنترل‌کننده کش

سرویس‌های اصلی

  • CacheManager: هماهنگ‌کننده اصلی که الگوی استراتژی را پیاده‌سازی می‌کند
  • CacheEventSubscriber: شنونده رویداد با مدیریت خطای قوی
  • ModelDiscoveryService: کشف مدل کارآمد با کش‌گذاری
  • CacheStorageService: عملیات پایگاه داده با ایمنی تراکنش (Transaction)
  • CacheCastingService: مدیریت تبدیل نوع برای داده‌های کش

نمودار معماری

جریان رویداد

  1. مرحله کشف (یک‌بار):

    • سیستم تمام مدل‌های پیاده‌کننده CacheableModel را کشف می‌کند
    • پیکربندی‌های کش را جمع‌آوری می‌کند
    • نگاشت رویداد به مدل را می‌سازد
    • نگاشت را برای عملکرد کش می‌کند
  2. پردازش رویداد:

    • CacheEventSubscriber به BusinessEvent ها گوش می‌دهد
    • رویداد را با مدل‌های مرتبط تطبیق می‌دهد
    • CacheEventDTO را از داده رویداد ایجاد می‌کند
    • کنترل‌کننده‌های کش مناسب را فراخوانی می‌کند
    • نتایج را پردازش می‌کند (همزمان/ناهمزمان)
  3. اجرای کنترل‌کننده کش:

    • CacheEventDTO را دریافت می‌کند
    • منطق کسب‌وکار را پردازش می‌کند
    • CacheHandlerResultCollection برمی‌گرداند
    • شامل شناسه‌های موجودیت و داده‌های کش مربوطه
  4. ذخیره‌سازی:

    • ستون JSON cache مدل را به‌روزرسانی می‌کند
    • حالت‌های همزمان/ناهمزمان را مدیریت می‌کند
    • یکپارچگی داده‌ها را حفظ می‌کند

مراحل بعدی

بخش‌های زیر را برای یادگیری بیشتر درباره سیستم کش بررسی کنید: