مع بنيات استدعاء الإجراءات عن بُعد (RPC) التقليدية، يوجد تحدٍ أساسي: يجب أن يتوافق المنتجون والمستهلكون في النطاق والوقت. إذا أرسل منتجوك بيانات أكثر مما يستطيع مستهلكوك التعامل معه أو إذا أصبح مستهلكوك أو الخدمات النهائية غير متاحة، يتم إسقاط الأحداث. تتفاقم هذه المشكلة مع وجود مستهلكين متعددين يحتاجون إلى معالجة البيانات بشكل مستقل. على سبيل المثال، قد يصدر الواجهة الخلفية للتجارة الإلكترونية أحداثًا عند اكتمال المعاملات، والتي يجب قراءتها بواسطة نظام تحليلات وخدمة كشف احتيال. يمكننا حل هذه المشكلة عن طريق فصل المنتجين والمستهلكين - إدخال خدمة في المنتصف تمتص عمليات الكتابة مع السماح للقراء المستقلين بالاستهلاك بسرعتهم الخاصة.
نحن اليوم نطلق Cloudflare K2 في الإصدار التجريبي العام لحل هذه المشكلة. K2 هو بدائي تدفق أحداث دائم على منصة المطورين. ترسل الأحداث إلى تدفق K2، الذي يخزنها كسجل مرتب. يمكن للمستهلكين قراءتها بطرق متنوعة، على سبيل المثال عن طريق تقسيم القراءات عبر مجموعة من المستهلكين، أو تسليم جميع الرسائل إلى جميع المستهلكين. إنه بدون خادم بالكامل، ويتسع لكميات هائلة من البيانات، ويدعم الاحتفاظ طويل الأجل، لذلك حتى فترات التوقف الطويلة للمستهلك لا تفقد البيانات.
تحت الغطاء، ينفذ K2 سجلًا دائمًا مقسمًا فوق تخزين الكائنات R2، مما يسمح له بالتوسع إلى أحجام تخزين هائلة. إذا كنت مستعدًا للبدء، يمكنك إنشاء أول تدفق لك في ثوانٍ باتباع الدليل هنا. بنينا K2 أولاً لأننا كنا بحاجة إلى مخزن مؤقت دائم على الحافة، في البداية ليكون بمثابة طبقة الإدخال لـ Basin Pipelines. هندستنا الفريدة تعني أننا غالبًا لا نستطيع تشغيل برامج الأنظمة الموزعة التقليدية مثل Apache Kafka، ونحتاج إلى إعادة التفكير في كيفية بناء وتشغيل هذه الأنظمة.
عند تصميم نظام التخزين المؤقت الدائم الذي أصبح K2، قررنا الاعتماد على بدائي الحالة القوي الذي لدينا بالفعل: R2. تجمع أنظمة تخزين الكائنات مثل R2 بين تخزين دائم للغاية (11 9s!) وواجهات برمجة تطبيقات متسقة بقوة. فائدة ثانوية هي أنها تفصل الحوسبة عن التخزين، مما يعني أنه يمكن توسيع نطاق كل منهما بشكل مستقل. هذا يسمح لنا بتخزين كميات هائلة من البيانات التاريخية بتكلفة منخفضة.
المصدر: Hacker News · لخّصه HeadlinesBriefing