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

البروتوكول — الخادم ↔ الخادم (العنقود)

بروتوكول RPC بين الأقران، يُستخدم في وضع العنقود فقط. تشارك العُقد حالة قفل واحدة عبر إجماع Raft — لا يُطبَّق أي تغيير في حالة القفل (حصول، تحرير، انتهاء) إلا بعد اقتراح القائد ← تكرار الأغلبية ← التثبيت، فيستمر الاستبعاد المتبادل حتى أثناء الانقسام أو تبديل الأدوار عند الأعطال. راجع آلية العمل للشرح المفاهيمي.

التدفق — من عملية حصول واحدة حتى تثبيتها

العميل
القائد
التابع 1
التابع 2
A · حصول (key)
AppendEntries (Grant)
AppendEntries (Grant)
OK
بلوغ الأغلبية ← تثبيت، يُطبَّق على كل عقدة
A · تم الحصول عليه (token)
طلباستجابةاستدعاء إجماع (RPC) عبر Raft

يحوّل القائد أمر القفل إلى أمر مُكرَّر، يحمله في RPC من نوع AppendEntries، ويثبّته بمجرد أن تسجله أغلبية تشمله هو نفسه (في عنقود من 3 عُقد، يكفي القائد مع التابع 1 — دون انتظار الباقي). لا تخرج استجابة العميل إلا بعد التثبيت، فبمجرد استلام استجابة، يكون ذلك القفل مكتوبًا لدى الأغلبية.

قواعد المنافذ والعناوين

  • تستخدم RPC بين الأقران منفذ Raft المخصص = منفذ العميل + 1000 (مثل 52256225). يُشتق تلقائيًا دون مفتاح إعداد منفصل، ولا يستمع إلا في وضع العنقود. يجب فتح كلا المنفذين في جدار الحماية.
  • يحمل الإعداد (cluster_self/cluster_peers) دائمًا عنوان العميل. الاتصال بقرين فقط يضيف +1000 إلى المنفذ — أما عنوان إعادة التوجيه M (تم النقل) المُعطى للعملاء فهو دائمًا عنوان العميل العادي.
  • تُميَّز الأدوار بالمنفذ فقط — لا توجد خطوة داخل البروتوكول للتمييز بين عميل وقرين. راجع الاتصال والمصادقة لترتيب الاتصال وقواعد المصادقة/TLS.

جدول المحتويات

انظر أيضًا