سؤال

يستخدم المزيد والمزيد من قواعد بيانات NOSQL الموجودة في دائرة الضوء نمط Master/Slave لتوفير "توفر" ، ولكن ما تفعله (على الأقل من وجهة نظري) هو إنشاء الرابط الضعيف في سلسلة ستنهار في أي وقت. - يسقط الماجستير ، ويتوقف العبيد للعمل.

إنها طريقة رائعة للتعامل مع كميات كبيرة من البيانات وحتى خارج القراءات/يكتب ، ولكنها شوهدت في منظور التوفر؟ ليس كثيرا ...

أفهم من بعض NOSQL أنه يمكن تغيير العبيد ليكونوا سيدًا بسهولة ، لكن القيام بذلك سيكون صداعًا للتعامل معه في معظم التطبيقات. حق؟

إذن كيف تعتني الناس بهذا النوع من الأشياء؟ كيف يعمل ماجستير/عبوات الرقيق في العالم الحقيقي؟

هل كانت مفيدة؟

المحلول

هذا سؤال معمم إلى حد ما. هل يمكنك تحديد مخازن البيانات التي تتحدث عنها على وجه التحديد؟

لقد كنت أعمل مع MongoDB ، وهو يتعامل مع هذا بأمان شديد ؛ كل عضو في "مجموعة النسخة المتماثلة" (أساسا ، مجموعة رئيسية العبد) مؤهلة لتصبح سيد. عند الاتصال بمجموعة نسخة طبق الأصل ، ستخبر المجموعة العميل المتواصل عن كل عضو في المجموعة. إذا كان السيد في المجموعة متصلًا بالإنترنت ، فسيقوم العبيد تلقائيًا بانتخاب سيد جديد ، وسيحاول العميل (نظرًا لأنه يحتوي على قائمة بجميع العقد في المجموعة) تجربة جديدة حتى يتصل ؛ ستقوم العقدة التي تتصل بها بإبلاغ العميل بالسيد الجديد ، ويقوم العميل بتبديل اتصاله. هذا يسمح بتفشل ماجستير/عبيد شفاف بالكامل دون أي تغييرات في التطبيق الخاص بك.

من الواضح أن هذا جيد للاتصالات الفردية ، ولكن ماذا عن إعادة التشغيل؟ سائق MongoDB يتعامل مع هذا أيضًا ؛ يمكن أن تقبل قائمة العقد لمحاولة الاتصال بها ، وسوف تجربها في المسلسل حتى تجد واحدة للاتصال بها. بمجرد الاتصال ، سوف تسأل العقدة من هو سيدها ، وإعادة توجيه الاتصال هناك.

النتيجة الصافية هي أنه إذا تم إنشاء مجموعة متماثلة ، فيمكنك بشكل فعال فقط القلق من أن أي عقدة واحدة ستأخذك في وضع عدم الاتصال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top