قيد الاختبار حاليًا: سيتم فتح كود GitHub عند الاكتمال.

بنية الإطار ​

التأطير الثنائي مسبوق الطول الذي يحمل 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 (استدعاء إجراء عن بُعد) — زوج طلب-استجابة يستدعي دالة على خادم آخر عبر الشبكة، كما لو استُدعيت محليًا.