Ticketing
التوثيق

بنية الإطار

التأطير الثنائي مسبوق الطول الذي يحمل RPCs من Raft. على خلاف إطارات بروتوكول العميل المنتهية بـ \n، يُرسَل الطول أولًا ثم تُقرأ تلك البايتات بالضبط. تتبادل أزواج الطلب-الاستجابة على اتصال واحد بالتتابع، والطرف المتصل (dial) هو الطالب دائمًا.

الطلب (المتصل ← المستقبِل)

البنيةrefresh

الاستجابة (المستقبِل ← المتصل)

البنيةrefresh
الحقلالحجمالمحتوى
tagu8نوع RPC — راجع أنواع RPC (في الطلب فقط)
lenu32، big-endianعدد بايتات الحمولة (payload) التالية
payloadlen بايتنوع openraft مُسلسَل بصيغة postcard

قواعد إدارة الاتصال

  • الحد الأقصى لـ len هو 64 ميبيبايت (يُفحص عند الاستقبال). أي إطار يتجاوز الحد، أو مشوَّه، أو tag غير معروف، أو خطأ في معالجة Raft — كلها تُعالَج بـإغلاق الاتصال، ويعيد الطرف المتصل (openraft) الاتصال ويحاول مجددًا.
  • يُعيد الطرف المتصل استخدام اتصال واحد لكل عقدة هدف. عند خطأ إدخال/إخراج، أو إذا أُلغيت رحلة ذهاب وإياب في منتصفها، يُهمَل ذلك الاتصال ويُفتح اتصال جديد في الاستدعاء التالي — فلا يُعاد أبدًا استخدام تدفق قُرئ نصفه بحالة غير متزامنة.

المصطلحات

  • مسبوق بالطول (length-prefix) — تأطير يرسل طول الجسم أولًا، ثم يقرأ تلك البايتات بالضبط. لا حاجة لفاصل مثل \n، فيمكن حمل أي بيانات ثنائية كما هي.
  • التسلسل (serialization) — تحويل بنية بيانات في الذاكرة إلى سلسلة بايتات مناسبة للنقل.
  • RPC (استدعاء إجراء عن بُعد) — زوج طلب-استجابة يستدعي دالة على خادم آخر عبر الشبكة، كما لو استُدعيت محليًا.