بنية الإطار
التأطير الثنائي مسبوق الطول الذي يحمل RPCs من Raft. على خلاف إطارات بروتوكول العميل المنتهية بـ \n، يُرسَل الطول أولًا ثم تُقرأ تلك البايتات بالضبط. تتبادل أزواج الطلب-الاستجابة على اتصال واحد بالتتابع، والطرف المتصل (dial) هو الطالب دائمًا.
الطلب (المتصل ← المستقبِل)
البنيةrefresh
الاستجابة (المستقبِل ← المتصل)
البنيةrefresh
| الحقل | الحجم | المحتوى |
|---|---|---|
tag | u8 | نوع RPC — راجع أنواع RPC (في الطلب فقط) |
len | u32، big-endian | عدد بايتات الحمولة (payload) التالية |
payload | len بايت | نوع openraft مُسلسَل بصيغة postcard |
قواعد إدارة الاتصال
- الحد الأقصى لـ
lenهو 64 ميبيبايت (يُفحص عند الاستقبال). أي إطار يتجاوز الحد، أو مشوَّه، أوtagغير معروف، أو خطأ في معالجة Raft — كلها تُعالَج بـإغلاق الاتصال، ويعيد الطرف المتصل (openraft) الاتصال ويحاول مجددًا. - يُعيد الطرف المتصل استخدام اتصال واحد لكل عقدة هدف. عند خطأ إدخال/إخراج، أو إذا أُلغيت رحلة ذهاب وإياب في منتصفها، يُهمَل ذلك الاتصال ويُفتح اتصال جديد في الاستدعاء التالي — فلا يُعاد أبدًا استخدام تدفق قُرئ نصفه بحالة غير متزامنة.
المصطلحات
- مسبوق بالطول (length-prefix) — تأطير يرسل طول الجسم أولًا، ثم يقرأ تلك البايتات بالضبط. لا حاجة لفاصل مثل
\n، فيمكن حمل أي بيانات ثنائية كما هي. - التسلسل (serialization) — تحويل بنية بيانات في الذاكرة إلى سلسلة بايتات مناسبة للنقل.
- RPC (استدعاء إجراء عن بُعد) — زوج طلب-استجابة يستدعي دالة على خادم آخر عبر الشبكة، كما لو استُدعيت محليًا.