دور دش از پلتفرم جدیدی به نام Entity Cache رونمایی کرده که یک کش پروکسی شفاف برای کاهش درخواستهای تکراری بین میکروسرویسهاست. این پلتفرم که روی Envoy و Valkey سوار شده، توانسته بیش از ۱۰۰ نقطه پایانی را در ۵۰ سرویس مختلف پوشش دهد و روزانه بیش از ۱.۵ میلیون درخواست در ثانیه را با دسترسی ۹۹.۹۹۹۹۹ درصد پردازش کند.
دور دش Entity Cache را برای حل مشکل درخواستهای مکرر به دادههای پرکاربرد اما کمتغییر طراحی کرده است. دادههایی که با گسترش اکوسیستم میکروسرویسها، بار بکاند را بالا میبردند، منابع محاسباتی اضافی مصرف میکردند و تأخیر انتهایی (Tail Latency) را افزایش میدادند.
Entity Cache درون مش سرویس (Service Mesh) مبتنی بر Envoy دور دش کار میکند و پیش از آنکه درخواستهای HTTP و gRPC به سرویسهای بالادستی برسند، آنها را رهگیری میکند. با قرار دادن یک پروکسی شفاف بین سرویسهای کلاینت و برنامههای بالادستی، کش به لایه زیرساخت منتقل میشود. سرویسها بدون نیاز به تغییر کد برنامه، همان درخواستهای قبلی را ارسال میکنند و رفتار کش بهصورت متمرکز از طریق مش سرویس مدیریت میشود.
دور دش تأکید دارد که Entity Cache یک لایه کش ساده نیست، بلکه مجموعهای از ویژگیهای قابلیت اطمینان و عملکرد است که در مقیاس این شرکت طراحی شدهاند. این پلتفرم ترکیبی از کش، ابطال (Invalidation)، مدیریت خطا، هماهنگی درخواست و بهینهسازیهای عملکرد را ارائه میدهد. وقتی درخواستی به Entity Cache میرسد، پروکسی Valkey را برای یافتن پاسخ معتبر بررسی میکند. اگر پاسخ در کش باشد، مستقیماً بازگردانده میشود؛ در غیر این صورت درخواست به سرویس بالادستی ارسال و پس از دریافت پاسخ در کش ذخیره و به کلاینت برگردانده میشود.
حفظ تازگی و قابلیت اطمینان کش در این مقیاس نیازمند مصالحههای دقیق است. Entity Cache از ابطال رویدادمحور مبتنی بر Kafka استفاده میکند و مهرهای زمانی بهروزرسانی را با پاسخهای کش مقایسه میکند تا ورودیهای کهنه را بدون نیاز به حذف کش توزیعشده تازه کند. آستانههای TTL دوگانه هم اجازه میدهد در هنگام قطعی، پاسخهای کمی کهنه ارائه شوند. همچنین Envoy نمونههای ناسالم کش را حذف و درخواستها را مستقیماً به سرویسهای بالادستی مسیریابی میکند.
این طراحی در یک قطعی چند ساعته بالادستی حیاتی بود و Entity Cache به جای خراب شدن، به ارائه دادههای کش کهنه اما معتبر ادامه داد.
برای پشتیبانی از حجم بالای درخواست، دور دش چند مؤلفه Entity Cache را بهینهسازی کرده است. استفاده از استخرهای بافر سفارشی (Custom Buffer Pools) سربار تخصیص حافظه را کاهش داده است. مکانیسم تکپرواز عاری از قفل (Lock-free Single-flight) از انجام کار تکراری در زمان عدم ضربه کش جلوگیری میکند. همچنین تازهسازی زودهنگام احتمالی مبتنی بر الگوریتم XFetch هجوم کش (Cache Stampede) را کاهش میدهد. XFetch به ورودیهای پرکاربرد اجازه میدهد قبل از انقضا تازه شوند و احتمال مواجهه همزمان بسیاری از درخواستها با ورودیهای کش منقضی را کم کند.
نتیجه این بهینهسازیها کاهش ۵۰ تا ۶۰ درصدی نرخ تخصیص، افزایش حدود پنجبرابری توان عملیاتی هر پاد، کاهش ۸۰ درصدی افزایش تأخیر P99، نرخ ضربه کش بالای ۹۰ درصد، کاهش ۶۰ تا ۹۵ درصدی درخواستهای بالادستی، بهبود تأخیر تا ۹۰ درصد برای نقاط پایانی تازه و سربار پروکسی P99 حدود ۲.۱ میلیثانیه بوده است.
استفاده از Valkey که یک پروژه متنباز و انشعاب از Redis است، نشاندهنده گرایش روزافزون شرکتهای بزرگ به راهحلهای بومی و متنباز برای کاهش وابستگی و افزایش انعطافپذیری است. دور دش با این رویکرد، استاندارد جدیدی برای کش کردن در مقیاس سرویسهای ابری تعریف کرده است.





