قامت شركة DoorDash بتطوير Entity Cache، وهي عبارة عن منصة شفافة للتخزين المؤقت للوكيل لتقليل طلبات الخدمة الزائدة عن الحاجة عبر بنية الخدمات الصغيرة الخاصة بها. قامت الشركة ببناء النظام الأساسي لمعالجة الطلبات المتكررة للبيانات التي يتم الوصول إليها بشكل متكرر ولكنها تتغير بشكل غير متكرر، مما أدى إلى زيادة الحمل الخلفي، واستهلاك موارد حوسبة إضافية، وساهم في زيادة زمن الوصول مع توسع النظام البيئي للخدمات الصغيرة الخاصة بها. وفقًا لـ DoorDash، تدعم المنصة أكثر من 100 نقطة نهاية عبر 50 خدمة، وتخدم أكثر من 1.5 مليون طلب في الثانية مع توفر بنسبة 99.99999%.
تعمل Entity Cache، المبنية على Envoy وValkey، ضمن شبكة الخدمة المستندة إلى Envoy في DoorDash وتعترض طلبات HTTP وgRPC قبل وصولها إلى الخدمات الأولية. يقوم النظام الأساسي بنقل التخزين المؤقت إلى طبقة البنية التحتية عن طريق وضع وكيل شفاف بين خدمات العملاء والتطبيقات الأولية. تستمر الخدمات في تقديم الطلبات الحالية دون الحاجة إلى تغييرات في رمز التطبيق، بينما تتم إدارة سلوك ذاكرة التخزين المؤقت مركزيًا من خلال شبكة الخدمة.
بنية ذاكرة التخزين المؤقت للكيان (المصدر: منشور مدونة DoorDash)
وصف DoorDash هذا الأسلوب بأنه أكثر من مجرد طبقة تخزين مؤقت تقليدية.
لا تعد Entity Cache عملية تحسين واحدة، ولكنها مجموعة من الموثوقية والميزات التي تركز على الأداء والمصممة للعمل معًا على نطاق DoorDash.
يجمع النظام الأساسي بين التخزين المؤقت، والإبطال، ومعالجة الفشل، وتنسيق الطلب، وتحسينات الأداء لدعم اتصالات الخدمة الداخلية كبيرة الحجم. عندما يصل الطلب إلى ذاكرة التخزين المؤقت للكيان، يتحقق الوكيل من Valkey بحثًا عن استجابة مخزنة مؤقتًا صالحة. يتم إرجاع نتائج ذاكرة التخزين المؤقت مباشرةً، بينما يتم إعادة توجيه أخطاء ذاكرة التخزين المؤقت إلى الخدمات الأولية. يتم تخزين الاستجابة الناتجة وفقًا للسياسات التي تم تكوينها وإعادتها إلى الخدمة الطالبة. يسمح هذا النهج للفرق باعتماد التخزين المؤقت المركزي دون تنفيذ حلول منفصلة داخل التطبيقات الفردية.
يتطلب الحفاظ على حداثة وموثوقية ذاكرة التخزين المؤقت على نطاق واسع مقايضات دقيقة. تستخدم Entity Cache إبطالًا يستند إلى الأحداث يستند إلى Kafka، حيث تقارن الطوابع الزمنية للتحديث بالاستجابات المخزنة مؤقتًا لتحديث الإدخالات التي لا معنى لها دون الحاجة إلى حذف ذاكرة التخزين المؤقت الموزعة. تسمح عتبات TTL المزدوجة بتقديم الاستجابات القديمة قليلاً أثناء انقطاع الخدمة، بينما يقوم Envoy بإزالة مثيلات ذاكرة التخزين المؤقت غير الصحية وتوجيه الطلبات مباشرة إلى الخدمات الأولية عند الحاجة.
وصف DoorDash أيضًا كيف ساعد هذا التصميم أثناء فشل الإنتاج.
أثبت هذا التصميم أهميته خلال انقطاع التيار الرئيسي لعدة ساعات، عندما استمرت Entity Cache في تقديم البيانات المخزنة مؤقتًا القديمة ولكن الصالحة بدلاً من الفشل.

سير عمل مرونة ذاكرة التخزين المؤقت للكيان (المصدر: منشور مدونة DoorDash)
لدعم كميات الطلبات الكبيرة، قام DoorDash بتحسين العديد من مكونات ذاكرة التخزين المؤقت للكيان. يستخدم النظام الأساسي تجمعات عازلة مخصصة لتقليل الحمل الزائد لتخصيص الذاكرة، وآلية رحلة واحدة خالية من القفل لمنع العمل المكرر أثناء فقدان ذاكرة التخزين المؤقت، والتحديث المبكر الاحتمالي استنادًا إلى خوارزمية XFetch لتقليل تدافع ذاكرة التخزين المؤقت. يسمح XFetch بتحديث الإدخالات التي يتم الوصول إليها بشكل متكرر قبل انتهاء صلاحيتها، مما يقلل من احتمالية مواجهة العديد من الطلبات لإدخالات ذاكرة التخزين المؤقت منتهية الصلاحية في نفس الوقت.
وفقًا لـ DoorDash، أدت هذه التحسينات إلى خفض معدلات التخصيص بنسبة 50% إلى 60%، وزيادة إنتاجية كل حجرة بمقدار خمس مرات تقريبًا، وخفضت ارتفاعات زمن الوصول P99 بنسبة تصل إلى 80%. كما أبلغت الشركة أيضًا عن معدلات إصابة في ذاكرة التخزين المؤقت تزيد عن 90%، وانخفاض في الطلب الأولي بنسبة 60% إلى 95% أثناء التشغيل العادي، وتحسينات في زمن الوصول تصل إلى 90% لنقاط النهاية المدمجة حديثًا، وحوالي 2.1 مللي ثانية من الحمل الوكيل P99.
