Hermes: Low Tail-Latency Via Prefix Consensus
إن هيرميس (Hermes) هو بروتوكول توافق آراء (BFT) ذو جولة دورية للقائد مكون من جولتين لعدد من العمليات، يعمل على القضاء على حالات توقف زمن الاستجابة المتأخرة الناتجة عن القادة البطيئين أو المنهارين عبر استخدام توافق بادئة (prefix consensus) لإتمام أثقل بادئة مشتركة من أي أصوات، مما يضمن استمرارية التقدم حتى عند انتهاء صلاحية الرؤى (views).
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
تخيل مجموعة من الأصدقاء يحاولون اتخاذ قرار بشأن فيلم لمشاهدته، لكنهم مشتتون في جميع أنحاء العالم، وبعضهم لديه اتصال إنترنت ضعيف، وقليل منهم أصدقاء مشاكسون يحاولون تخريب القرار عن طريق إرسال روابط مزيفة أو التظاهر بأنهم غير متصلين بالإنترنت. هذا هو عالم "تحمل الخطأ البيزنطي" (Byzantine Fault Tolerance - BFT). في علوم الحاسوب، هذه هي الطريقة التي تتفق بها شبكة من الحواسيب على حقيقة واحدة — مثل ترتيب المعاملات في سلسلة الكتل (blockchain) — دون الاعتماد على مدير مركزي واحد. والهدف هو الوصول إلى اتفاق بسرعة (زمن استجابة منخفض) حتى عندما تتعطل بعض الحواسيب أو تتصرف بشكل خبيث.
لسنوات، اعتمدت هذه الأنظمة على "قائد" لاقتراح الخطوة التالية. إذا كان القائد سريعاً ونزيهاً، يتفق الجميع بسرعة. ولكن إذا كان القائد بطيئاً أو تعطل، يتعين على المجموعة بأكملها الانتظار حتى ينتهي مؤقت زمني، ثم الاستسلام لهذا القائد واختيار قائد جديد. وهذا يخلق مقايضة مؤلمة: إذا ضبطت المؤقت لفترة طويلة، فستنتظر للأبد بسبب قائد معطل؛ وإذا ضبطته لفترة قصيرة، فستضيع الوقت في التخلي عن قادة كانوا فقط بطيئين قليلاً. هذه "معضلة المهلة الزمنية" (timeout dilemma) هي العائق الذي يبطئ نهاية النظام، مما يجعل أبطأ الطلبات تستغرق وقتاً طويلاً جداً للانتهاء.
يقدم هذا البحث "هيرميس" (Hermes)، وهو بروتوكول جديد مصمم لحل هذا الصداع تحديداً. بدلاً من الاستسلام عندما يكون القائد بطيئاً، يسمح "هيرميس" للمجموعة بإنهاء العمل الذي يمكنهم الاتفاق عليه، حتى لو فشل القائد. إنه يحول المهلة الزمنية الضائعة إلى قرار مثمر، مما يضمن أنه بغض النظر عما يحدث، سيستمر النظام في المضي قدماً دون فقدان التقدم الذي أحرزه بالفعل.
المشكلة: "فخ المهلة الزمنية"
تخيل سباق تتابع حيث يُفترض بقائد الفريق (القائد) أن يسلم العصا للعداء التالي. إذا كان القائد سريعاً، يسير السباق بسلاسة. ولكن إذا تعثر القائد أو أسقط العصا، يتعين على الفريق بأكمله التوقف والانتظار حتى يطلق الحكم صافرة (المهلة الزمنية) قبل أن يتمكنوا من اختيار قائد جديد والبدء من جديد.
في الأنظمة التقليدية، هذه الصافرة هي مقامرة. إذا أطلق الحكم الصافرة مبكراً جداً، فقد يوقف قائداً كان فقط يركض ببطء قليلاً ولكنه كان سيصل في النهاية. وإذا انتظر طويلاً، فستظل المجموعة في حالة ركود لفترات طويلة بينما يحاول قائد معطل التعافي. في كلتا الحالتين، الوقت المستغرق في الانتظار هو "وقت ضائع" — لا يتم إحراز أي تقدم، ويتعطل السباق. هذه هي مشكلة "زمن الاستجابة في الحالات القصوى" (tail latency): السيناريوهات الأسوأ تسحب النظام بأكل لأسفل.
الحل: "هيرميس" و"الأرضية المشتركة"
يغير "هيرميس" قواعد اللعبة. بدلاً من معاملة القائد البطيء كفشل كلي، يعامل "هيرميس" الاتفاق الجزئي للمجموعة كأنه انتصار.
إليك كيف يعمل ذلك باستخدام تشبيه إبداعي: تخيل أن الفريق يحاول بناء برج طويل من المكعبات.
- الطريقة القديمة: يضع القائد مكعباً. الجميع ينتظر. إذا توقف القيد، ينتظر الفريق المهلة الزمنية، ثم يرمون البرج بأكله ويبدأون في بناء برج جديد مع قائد جديد.
- طريقة هيرميس: يبدأ القائد في وضع المكعبات، ولكن الجميع أيضاً يبدأون في وضع مكعباتهم الخاصة في وقت واحد. إذا كان القائد سريعاً، يبني الفريق برج القائد بشكل مثالي. إذا تعثر القائد، لا يرمي الفريق البرج. بدلاً من ذلك، ينظرون إلى جميع المكعبات التي وضعها الجميع، ويجدون أطول قسم يتفق فيه الجميع على ترتيب المكعبات، ويعلنون أن هذا القسم "مكتمل".
هذا هو الابتكار الجوهري: "إجماع البادئة" (Prefix Consensus). في الأيام الخوالي، إذا صوت شخصان على أبراج مختلفة قليلاً، كانت أصواتهما تعتبر خلافاً ويتم استبعادها. يقول "هيرميس": "انتظروا، إنهم يتفقون على الـ 90% السفلية من البرج! لنقم بتثبيت ذلك والمضي قدماً".
كيف يعمل "هيرميس": الرقصة ذات المرحلتين
يعمل "هيرميس" عبر "رؤى" (views/rounds)، لكل منها قائد معين. وهو يستخدم رقصة ذكية من خطوتين:
- المرحلة الأولى (الاقتراح): يبث الجميع فكرتهم الخاصة حول شكل الجزء التالي من البرج. فكرة القائد هي مجرد واحدة من عدة أفكار.
- المرحلة الثانية (التصويت):
- إذا كان القائد سريعاً: يرى الجميع اقتراح القائد، ويتفقون عليه، ويصوتون له. ينمو البرج بمقدار كتلة القائد الكاملة في تأخيرين فقط للرسائل (2δ).
- إذا كان القائد بطيئاً أو تعطل: تنتهي المهلة الزمنية. بدلاً من التصويت على "إلغاء" الجولة، يصوت الجميع على أفضل اتفاق ممكن يمكنهم العثور عليه بين الاقتراحات التي تلقوها. إنهم يبحثون عن "أثقل بادئة مشتركة" (Heaviest Common Prefix - HCP) — وهي أطول تسلسل من المكعبات يتفق عليها الجميع، حتى لو تباينت اقتراحاتهم في النهاية.
هذا يعني أنه حتى لو فشل القائد، فإن المجموعة لا تفقد الرؤية. إنهم ينهون الجزء المشترك من البرج ويبدأون الجولة التالية فوراً. "المهلة الزمنية"، التي كانت في السابق طريقاً مسدوداً، تنتج الآن نتيجة.
سحر "البوادئ" و"القفزات"
لجعل هذا يعمل مع مسارات متعددة من البيانات (مثل طريق سريع به العديد من مسارات حركة المرور)، يستخدم "هيرميس" ترميزاً خاصاً يسمى "نهايات طرفية نسبية للأب" (parent-relative delta tipcuts).
فكر في الأمر كأنه كتاب "اختر مغامرتك الخاصة" حيث يشير كل صفحة إلى الصفحة السابقة. إذا كانت إحدى المسارات تفتقد سيارة (مكعب)، فإن "هيرميس" لا يقول "خطأ". بل يحدد ذلك المكان صراحة كـ "مُتخطى" (skipped) وينتقل إلى السيارة التالية. هذا يسمح للنظام بمقارنة الاقتراحات المختلفة حتى لو كانت تفتقد قطعاً مختلفة. إنه يشبه مقارنة قصتين: حتى لو حذفت إحدى القصتين فقرة وتضمنت الأخرى فقرة، فإنه لا يزال بإمكانهم الاتفاق على البداية والنهاية، ويقوم النظام بتثبيت هذا الاتفاق.
النتائج: السرعة والأمان
يثبت البحث رياضياً أن "هيرميس" آمن (لن يختلف شخصان صادقان أبداً على الجزء الذي تم تثبيته) وحي (النظام سيستمر دائماً في المضي قدماً).
- الحالة الجيدة: إذا كان القائد نزيهاً وسريعاً، فإن "هيرميس" يكون بنفس سرعة أفضل الأنظمة الموجودة، حيث ينهي العملية في 2δ (تأخيرين للرسائل).
- الحالة السيئة: إذا كان القائد بطيئاً أو تعطل، يقوم "هيرميس" بتثبيت الاتفاق المشترك في 2∆ + δ (حيث ∆ هي المهلة الزمنية و δ هي تأخير الشبكة). والأهم من ذلك، أن هذا أسرع من الطريقة القديمة المتمثلة في انتظار تغيير كامل للرؤية، لأنه يتخطى الوقت "الضائع" في التخلي عن الرؤية.
يوضح المؤلفون أنه باستخدام "ترميز الإزالة" (erasure coding) (وهي طريقة لتجزئة البيانات بحيث يمكن إعادة بنائها حتى لو فُقدت بعض الأجزاء)، يحافظ "هيرميس" على تكاليف الاتصال منخفضة، حتى عند التعامل مع العديد من مسارات البيانات.
لماذا يهم هذا؟
يحل "هيرميس" معضلة "المهلة الزمنية" بجعل المهلة الزمنية نفسها مثمرة. إنه يحول لحظة الفشل إلى لحظة تقدم. بدلاً من السؤال: "هل وصل القائد؟" والانتظار لرؤية النتيجة، يسأل "هيرميس": "ما الذي اتفقنا عليه جميعاً؟" ويمضي قدماً.
بالنسبة لمراهق فضولي، فكر في الأمر كأنه دردشة جماعية يحاول فيها الجميع الاتفاق على خطة. إذا تعثر الشخص الذي يقترح الخطة عادةً، فإن الطريقة القديمة هي الانتظار حتى يرد أو بدء دردشة جديدة مع قائد جديد. "هيرميس" يشبه قول: "حسناً، لم يرد، ولكن انظروا إلى كل الأفكار التي أرسلناها. نحن نتفق جميعاً على الخطوات الثلاث الأولى. لنقم بتثبيت تلك الخطوات ونبدأ في التخطيط للخطوة الرابعة". إنها طريقة أذكى وأكثر مرونة لإبقاء المجموعة في حالة حركة، بغض النظر عمن أفلت منه الدور.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.