أوضحت شركة Uber كيف تحافظ على تشغيل عمليات نشر OpenSearch أثناء انقطاع الخدمة في المنطقة. يقوم بذلك عن طريق استخدام تخصيص الأجزاء المدمج في OpenSearch ونظام مجموعة العزل الخاص به، والذي يعتمد على منصة تنسيق حاوية Odin. وبهذه الطريقة، فإنه يحافظ على إمكانات الاستعلام والاستيعاب. ويتحمل التصميم فشل المنطقة بالكامل بالإضافة إلى فشل عقدة إضافية مع الحفاظ على النصاب القانوني وتجنب فقدان البيانات.

تهدف أوبر إلى حل مشكلة: غالبًا ما تفتقر المناطق المادية إلى عدد العقد المتوازن. لقد أفسدت هذه المشكلة منطق الوعي بالتخصيص في OpenSearch. عادةً ما يترك المجموعات في حالة صفراء مع شظايا غير مخصصة. أدى تعيين موضع القطعة إلى المناطق الفعلية إلى انحراف القرص والعقد الساخنة عندما كانت سعة المنطقة غير متساوية. يحدث هذا لأن إعادة التوازن في OpenSearch تتوقع مجموعة متساوية من العقد لكل سمة وعي.

يقدم إصلاح Uber مجموعات العزل (IGs) كطبقة منطقية بين نطاقات الفشل الفعلي ومنطق موضع OpenSearch. يتم ضمان عدد متساوٍ من العقد لكل IG، بغض النظر عن عدد المناطق المادية الموجودة أسفلها، وتحتفظ العقدة بعضوية IG من خلال استبدال الأجهزة. تعمل معظم خدمات Uber، بما في ذلك OpenSearch، على تشغيل 3 IGs، بحيث يتم تعيين منطقة واحدة إلى IG واحدة بالضبط، ويؤدي فشل المنطقة إلى إزالة حوالي ثلث السعة على الأكثر. يعمل كل فهرس بنسختين متماثلتين على الأقل (إجمالي 3 نسخ مقسمة)، واحدة لكل IG، مما يوفر مرونة أساسية ضد خسارة مجموعة واحدة.

المشكلة الأصعب هي ما يحدث أثناء الفشل نفسه. افتراضيًا، يستجيب OpenSearch للنسخ المفقودة عن طريق إعادة التوازن بسرعة عبر العقد المتبقية. يمكن أن يؤدي ذلك إلى زيادة التحميل على عمليات الإدخال/الإخراج للقرص ووحدة المعالجة المركزية والشبكة، مما يؤدي إلى المخاطرة بعدم الاستقرار في المناطق السليمة. تعالج أوبر هذه المشكلة من خلال الوعي بتخصيص الأجزاء القسرية. تم إعداد المجموعة بجميع قيم سمات IG المتوقعة من البداية، وليس فقط القيم المرئية الآن. عندما يختفي IG، يقوم OpenSearch باكتشاف الفجوة. لن يتم الإفراط في التخصيص للمجموعات الأخرى، لذلك تظل الأجزاء المتأثرة غير مخصصة. يؤدي هذا إلى تحول الكتلة إلى اللون الأصفر بدلاً من بدء عاصفة إعادة التوازن. لا يتم إعادة تعيين الأجزاء إلا بعد عودة عقد IG الفاشلة أو يقوم المشغل بتحديث تكوين الوعي بشكل صريح.

الوعي بتخصيص الشارد

يستخدم Uber 5 عقد مدير مجموعة للنصاب القانوني، بدلاً من 3 عقد المعتادة. يعمل هذا مع OpenSearch’s cluster.auto_shrink_voting_configuration جلسة. يمكن أن يؤدي فشل المنطقة إلى إزالة ما يصل إلى عقدتين مديرتين، مما يترك 3؛ يتقلص تكوين التصويت تلقائيًا إلى هؤلاء الثلاثة، مما يؤدي إلى انتخاب انتخابات تمهيدية جديدة بنصاب قانوني يبلغ 2 من 3. لا يزال فشل العقدة الواحدة اللاحق يترك عقدتين، وهو ما يكفي للاحتفاظ بالنصاب القانوني والحفاظ على المجموعة قابلة للكتابة، وهو ما لا يمكن للإعداد القياسي المكون من 3 مديرين البقاء عليه.

أفاد أوبر أن فكرة IG أصلحت حالات الفشل في الحالة الصفراء وتخصيص الأجزاء. جاءت هذه المشكلات من أحجام المناطق المادية غير المتساوية. الآن، هناك تعيين جزء بنسبة 100% وصحة المجموعة الخضراء باستمرار. كما أنه يعالج انحراف القرص وتأثيرات العقدة الساخنة المرتبطة بعدم تناسق المنطقة. يعمل هذا الأسلوب مع جميع مجموعات OpenSearch وElasticsearch من المستوى 3 والأعلى في Uber. وهو يعتمد على ميزات OpenSearch مثل الوعي بتخصيص الأجزاء وتقليص تكوين التصويت. لا يحتاج إلى محرك بحث مخصص أو إصدار متشعب.

يمكن للمهندسين الذين يقومون بتشغيل مجموعات OpenSearch أو Elasticsearch متعددة المناطق اعتماد نمط الوعي القسري بدون أدوات Uber الخاصة بـ Odin. المتطلبات الأساسية هي التوزيع الزوجي للعقدة عبر مجموعة ثابتة ومعلنة بوضوح من قيم سمات الوعي، و3 نسخ مجزأة على الأقل تم تعيينها واحد لواحد إلى مجالات الفشل، وعدد فردي من عقد مدير المجموعة (5 بدلاً من 3) مع تمكين التصويت بالتقليص التلقائي. يهدف هذا إلى النجاة من تسلسل فشل المنطقة زائد العقدة.

تعكس طريقة أوبر اتجاها أوسع في الصناعة. وهو يركز على تضمين الوعي بمجال الفشل في طبقة البيانات بدلاً من الاعتماد فقط على تجاوز الفشل على مستوى البنية التحتية. استخدمت أوبر نموذجًا مشابهًا لمجموعة العزلة لـ Apache Pinot. قاموا بتعيين معرفات مجموعة العزل لمجموعات النسخ المتماثلة. يضمن هذا الإعداد إمكانية بقاء النسخ المتماثلة للقطاعات عند فشل المنطقة بالكامل.



شاركها.
اترك تعليقاً