توزيع عالمي للبيانات باستخدام Azure Cosmos DB - تحت الغطاء

ينطبق على: NoSQL MongoDB كاساندرا العفريت الجدول

Azure Cosmos DB هي خدمة تأسيسية في Azure، لذلك يتم توزيعها في جميع مناطق Azure في جميع أنحاء العالم بما في ذلك السحابة العامة والحكومية ووزارة الدفاع (DoD) والحكومة.

تُقسَم بيانات حاوية Azure Cosmos DB أفقياً على مستوٍ عالٍ إلى العديد من مجموعات النسخ المتماثلة، التي تنسخ الكتابة في كل منطقة. تلتزم مجموعات النسخ المتماثلة بإجراء عمليات الكتابات باستخدام حصة الأغلبية دائماً.

تحتوي كل منطقة على جميع أقسام البيانات لحاوية Azure Cosmos DB ويمكن أن تخدم القراءات بالإضافة إلى عمليات الكتابة عند تمكين عمليات الكتابة متعددة المناطق. إذا تم توزيع حساب Azure Cosmos DB عبر مناطق N Azure، فسيكون هناك على الأقل N x 4 نسخ من جميع بياناتك.

داخل مركز البيانات، نقوم بتوزيع وإدارة Azure Cosmos DB على طوابع ضخمة من الأجهزة، لكل منها مساحة تخزين محلية مخصصة. داخل مركز البيانات، يتم توزيع Azure Cosmos DB عبر العديد من المجموعات، يحتمل أن يعمل كل منها على عدة أجيال من الأجهزة. عادةً ما تنتشر الآلات داخل الكتلة عبر 10-20 نطاقاً خاطئاً من أجل التوافر العالي داخل المنطقة. تظهر الصورة التالية مخطط نظام التوزيع العمومي Azure Cosmos DB:

طوبولوجيا النظام

التوزيع العالمي في Azure Cosmos DB هو تسليم المفتاح: في أي وقت، ببضع نقرات أو برمجيا مع استدعاء واجهة برمجة تطبيقات واحد، يمكنك إضافة أو إزالة المناطق الجغرافية المرتبطة بقاعدة بيانات Azure Cosmos DB. تتكون قاعدة بيانات Azure Cosmos DB بدورها من مجموعة من حاويات Azure Cosmos DB. في Azure Cosmos DB، تعمل الحاويات كوحدات منطقية للتوزيع وقابلية التوسع. المجموعات والجداول والرسوم البيانية التي تقوم بإنشائها هي (داخليا) حاويات Azure Cosmos DB فقط. تعتبر الحاويات حيادية تماماً من حيث المخطط وتوفر نطاقاً للاستعلام. تتم فهرسة البيانات الموجودة في حاوية Azure Cosmos DB تلقائيا عند الاستيعاب. تمكن الفهرسة التلقائية المستخدمين من الاستعلام عن البيانات دون متاعب إدارة المخطط أو الفهرس، خاصة في الإعداد الموزع عالمياً.

  • في منطقة معينة، يتم توزيع البيانات داخل الحاوية باستخدام مفتاح القسم، الذي توفره وتتم إدارته بشفافية بواسطة الأقسام المادية الأساسية (التوزيع المحلي).

  • يتم أيضاً نسخ كل قسم مادي عبر مناطق جغرافية (توزيع عالمي).

عندما يقوم تطبيق يستخدم Azure Cosmos DB بتحجيم معدل النقل بشكل مرن على حاوية Azure Cosmos DB أو يستهلك المزيد من التخزين، يعالج Azure Cosmos DB بشفافية عمليات إدارة الأقسام (التقسيم، النسخ، الحذف) عبر جميع المناطق. بغض النظر عن المقياس أو التوزيع أو الفشل، يستمر Azure Cosmos DB في توفير صورة نظام واحدة للبيانات داخل الحاويات، والتي يتم توزيعها عالميا عبر أي عدد من المناطق.

كما هو موضح في الصورة التالية، يتم توزيع البيانات الموجودة داخل الحاوية على بعدين - داخل منطقة وعبر المناطق، في جميع أنحاء العالم:

أقسام مادية

يتم تنفيذ القسم المادي من خلال مجموعة من النسخ المتماثلة، تسمى مجموعة النسخ المتماثلة. يستضيف كل جهاز مئات النسخ المتماثلة التي تتوافق مع أقسام مادية مختلفة ضمن مجموعة ثابتة من العمليات كما هو موضح في الصورة أعلاه. يتم وضع النسخ المتماثلة المطابقة للأقسام المادية ديناميكياً وموازنة التحميل عبر الأجهزة داخل مجموعة ومراكز بيانات داخل منطقة ما.

تنتمي النسخة المتماثلة بشكل فريد إلى مستأجر Azure Cosmos DB. تستضيف كل نسخة متماثلة مثيلا لمحرك قاعدة بيانات Azure Cosmos DB، والذي يدير الموارد بالإضافة إلى الفهارس المقترنة. يعمل محرك قاعدة بيانات Azure Cosmos DB على نظام نوع يستند إلى تسلسل سجل الذرة (ARS). يُعد المحرك محايداً لمفهوم المخطط، ما يؤدي إلى تشويش الحدود بين البنية وقيم المثيل للسجلات. يحقق Azure Cosmos DB Agnosticism للمخطط الكامل من خلال فهرسة كل شيء تلقائيا عند الاستيعاب بطريقة فعالة، ما يسمح للمستخدمين بالاستعلام عن بياناتهم الموزعة عالميا دون الحاجة إلى التعامل مع إدارة المخطط أو الفهرس.

يتكون محرك قاعدة بيانات Azure Cosmos DB من مكونات بما في ذلك تنفيذ العديد من أساسيات التنسيق، وأوقات تشغيل اللغة، ومعالج الاستعلام، والأنظمة الفرعية للتخزين والفهرسة المسؤولة عن تخزين المعاملات وفهرسة البيانات، على التوالي. لتوفير المتانة والتوافر العالي، يستمر محرك قاعدة البيانات في الاحتفاظ ببياناته وفهرسته على محركات أقراص الحالة الصلبة ويقوم بتكرارها بين مثيلات محرك قاعدة البيانات ضمن مجموعة (مجموعات) النسخ المتماثلة على التوالي. يتوافق المستأجرون الأكبر حجماً مع نطاق أعلى للإنتاجية والتخزين ولديهم نسخ متماثلة أكبر أو أكثر أو كليهما. كل مكون من مكونات النظام غير متزامن تماماً - لا يتم حظر أي مؤشر ترابط على الإطلاق، ويقوم كل مؤشر ترابط بعمل قصير العمر دون تكبد أي مفاتيح تبديل غير ضرورية. يتم تحديد المعدل والضغط الخلفي عبر المكدس بأكمله من التحكم في الدخول إلى جميع مسارات الإدخال / الإخراج. تم تصميم محرك قاعدة بيانات Azure Cosmos DB لاستغلال التزامن الدقيق وتقديم معدل نقل عال أثناء العمل ضمن كميات مقتصدة من موارد النظام.

يعتمد التوزيع العالمي ل Azure Cosmos DB على تجريدين رئيسيين - مجموعات النسخ المتماثلة ومجموعات الأقسام. مجموعة النسخ المتماثلة عبارة عن كتلة Lego معيارية للتنسيق، ومجموعة الأقسام عبارة عن تراكب ديناميكي لواحد أو أكثر من الأقسام المادية الموزعة جغرافياً. لفهم كيفية عمل التوزيع العالمي، نحتاج إلى فهم هذين التجريديين الرئيسيين.

مجموعات النسخ المتماثلة

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

  • أولاً، تكلفة معالجة طلبات الكتابة على القائد أعلى من تكلفة تطبيق التحديثات على المتابع. في المقابل، يُخصص للقائد موارد نظام أكثر من المتابعين.

  • ثانياً، بقدر الإمكان، يتكون النصاب القانوني للقراءة لمستوى تناسق معين حصرياً من النسخ المتماثلة التابعة للمتابعين. نتجنب الاتصال بالمسؤول لتقديم القراءات ما لم يكن ذلك مطلوباً. نحن نستخدم عددا من الأفكار من البحث الذي تم إجراؤه حول علاقة التحميل والسعة في الأنظمة المستندة إلى الحصة لنماذج التناسق الخمسة التي يدعمها Azure Cosmos DB.

مجموعات التقسيم

تتكون مجموعة من الأقسام الفعلية، واحدة من كل قسم تم تكوينه مع مناطق قاعدة بيانات Azure Cosmos DB، لإدارة نفس مجموعة المفاتيح المنسوخة نسخا متماثلا عبر جميع المناطق المكونة. يُطلق على هذا التنسيق البدائي العالي اسم مجموعة القسم - تراكب ديناميكي موزع جغرافياً للأقسام المادية التي تدير مجموعة معينة من المفاتيح. بينما يتم تحديد نطاق قسم مادي معين (مجموعة نسخ متماثلة) داخل مجموعة، يمكن لمجموعة الأقسام أن تمتد إلى مجموعات، ومراكز بيانات، ومناطق جغرافية كما هو موضح في الصورة أدناه:

مجموعات الأقسام

يمكنك التفكير في مجموعة الأقسام على أنها "مجموعة نسخ متماثلة فائقة" مشتتة جغرافياً، والتي تتكون من مجموعات نسخ متماثلة متعددة تمتلك نفس مجموعة المفاتيح. على غرار مجموعة النسخ المتماثلة، تكون عضوية مجموعة الأقسام ديناميكية أيضا - فهي تتقلب استنادا إلى عمليات إدارة الأقسام المادية الضمنية لإضافة/إزالة أقسام جديدة إلى/من مجموعة أقسام معينة (على سبيل المثال، عند توسيع معدل النقل على حاوية، أو إضافة/إزالة منطقة إلى قاعدة بيانات Azure Cosmos DB، أو عند حدوث حالات فشل). بحكم وجود كل قسم (من مجموعة أقسام) يدير عضوية مجموعة الأقسام ضمن مجموعة النسخ المتماثلة الخاصة به، فإن العضوية تكون لامركزية بالكامل ومتاحة للغاية. أثناء إعادة تكوين مجموعة الأقسام، يتم أيضاً إنشاء طوبولوجيا التراكب بين الأقسام المادية. يتم تحديد الهيكل ديناميكياً بناءً على مستوى الاتساق والمسافة الجغرافية وعرض النطاق الترددي للشبكة المتاح بين الأقسام المادية المصدر والهدف.

تسمح لك الخدمة بتكوين قواعد بيانات Azure Cosmos DB الخاصة بك إما مع منطقة كتابة واحدة أو مناطق كتابة متعددة، واعتمادا على الاختيار، يتم تكوين مجموعات الأقسام لقبول عمليات الكتابة في منطقة واحدة أو جميع المناطق بالضبط. يستخدم النظام بروتوكول إجماع متداخل من مستويين - يعمل أحد المستويات ضمن النسخ المتماثلة لمجموعة نسخ متماثلة لقسم مادي يقبل عمليات الكتابة، والآخر يعمل على مستوى مجموعة القسم لتوفير ضمانات ترتيب كاملة للجميع يكتب الملتزم داخل مجموعة التقسيم. يعد هذا التوافق متعدد الطبقات والمتداخل أمرا بالغ الأهمية لتنفيذ اتفاقيات مستوى الخدمة الصارمة لقابلية الوصول العالية، بالإضافة إلى تنفيذ نماذج التناسق، التي يقدمها Azure Cosmos DB لعملائها.

حل التعارض

تم استلهام تصميمنا لتوزيع التحديث وحل النزاعات وتتبع السببية من العمل السابق على خوارزميات الوباء ونظام Bayou. في حين أن نواة الأفكار قد نجت وتوفر إطارا مرجعيا مناسبا لتوصيل تصميم نظام Azure Cosmos DB، فقد خضعت أيضا لتحول كبير حيث طبقناها على نظام Azure Cosmos DB. كان هذا مطلوبا، لأن الأنظمة السابقة لم تكن مصممة مع إدارة الموارد ولا بالمقياس الذي يحتاج Azure Cosmos DB إلى العمل به، ولا لتوفير القدرات (على سبيل المثال، تناسق الثبات المقيد) واتفاقيات مستوى الخدمة الصارمة والشاملة التي تقدمها Azure Cosmos DB لعملائها.

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

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

بالنسبة لقواعد بيانات Azure Cosmos DB المكونة مع مناطق كتابة متعددة، يقدم النظام عددا من نهج حل التعارض التلقائي المرنة للمطورين للاختيار من بينها، بما في ذلك:

  • Last-Write-Wins (LWW)، والتي، بشكل ظاهري، تستخدم خاصية الطابع الزمني المعرفة من قبل النظام (والتي تستند إلى بروتوكول ساعة مزامنة الوقت). يسمح لك Azure Cosmos DB أيضا بتحديد أي خاصية رقمية مخصصة أخرى لاستخدامها لحل التعارض.
  • نهج حل التعارض المحددة من قبل التطبيق (المخصصة) (يتم التعبير عنها عبر إجراءات الدمج)، والتي تم تصميمها لتسوية التعارضات المحددة بواسطة التطبيق. يتم استدعاء هذه الإجراءات عند اكتشاف تعارضات الكتابة والكتابة تحت رعاية معاملة قاعدة البيانات على جانب الخادم. يوفر النظام ضماناً مرة واحدة بالضبط لتنفيذ إجراء الدمج كجزء من بروتوكول الالتزام. هناك العديد من نماذج حل النزاعات المتاحة لك لتلعب بها.

نماذج الاتساق

سواء قمت بتكوين قاعدة بيانات Azure Cosmos DB الخاصة بك مع مناطق كتابة واحدة أو متعددة، يمكنك الاختيار من بين نماذج التناسق الخمسة المحددة جيدا. مع مناطق الكتابة المتعددة، فيما يلي بعض الجوانب البارزة لمستويات الاتساق:

يضمن تناسق الثبات المحدود أن تكون جميع القراءات ضمن بادئة K أو T ثانية من آخر كتابة في أي من المناطق. علاوة على ذلك، فإن القراءات ذات الاتساق المحدود مضمونة لتكون رتيبة ومع ضمانات بادئة متسقة. يعمل بروتوكول مكافحة الإنتروبيا بطريقة محدودة المعدل ويضمن عدم تراكم البادئات وعدم الحاجة إلى تطبيق الضغط العكسي على الكتابة. يضمن تناسق الجلسة قراءة رتيبة، وكتابة رتيبة، وقراءة ما يكتبه بنفسك، والكتابة تتبع القراءة، وضمانات البادئة المتسقة، في جميع أنحاء العالم. بالنسبة لقواعد البيانات التي تم تكوينها باتساق قوي، لا تنطبق الفوائد (زمن انتقال منخفض للكتابة، وتوفر عالٍ للكتابة) لمناطق كتابة متعددة، بسبب النسخ المتزامن عبر المناطق.

توصف دلالات نماذج التناسق الخمسة في Azure Cosmos DB هنا، ويتم وصفها رياضيا باستخدام مواصفات TLA+ عالية المستوى هنا.

الخطوات التالية

بعد ذلك، تعرف على كيفية تكوين التوزيع العام باستخدام المقالات التالية: