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

Cassandra تم تصميمه للتعامل البيانات الكبيرة. Cassandraالميزة الرئيسية لـ هي تخزين البيانات على عقد متعددة دون أي نقطة فشل واحدة.
السبب وراء هذا النوع من Cassandraكانت هندسة 's هي أن فشل الأجهزة يمكن أن يحدث في أي وقت. يمكن أن تتعطل أي عقدة. في حالة الفشل، يمكن استخدام البيانات المخزنة في عقدة أخرى. وبالتالي، Cassandra تم تصميمه مع هندسته المعمارية الموزعة.
Cassandra يخزن البيانات على عقد مختلفة باستخدام بنية توزيع من نظير إلى نظير.
تقوم جميع العقد بتبادل المعلومات مع بعضها البعض باستخدام بروتوكول القيل والقال. القيل والقال هو بروتوكول في Cassandra والتي من خلالها يمكن للعقد التواصل مع بعضها البعض.
مكونات من Cassandra Architecture
هناك المكونات التالية في Cassandra Archiالبنية:

يوضح الرسم التخطيطي أعلاه المكونات المتداخلة: توجد العقد داخل مركز البيانات، وتوجد مراكز البيانات داخل مجموعة، ويوجد سجل الالتزام و memtable و SSTable داخل كل عقدة فردية.
العقدة
العقدة هي المكان الذي يتم فيه تخزين البيانات. وهو المكون الأساسي ل Cassandra.
مركز البيانات
تسمى مجموعة من العقد مركز البيانات. يتم تصنيف العديد من العقد كمركز بيانات.
Cluster
المجموعة هي عبارة عن مجموعة من مراكز البيانات.
سجل الالتزام
يتم كتابة كل عملية كتابة في سجل الالتزام. يتم استخدام سجل الالتزام لاستعادة البيانات بعد حدوث الأعطال.
جدول الذاكرة
بعد كتابة البيانات في سجل الالتزام، تتم كتابة البيانات في جدول Mem. تتم كتابة البيانات في جدول Mem مؤقتًا.
SSTable
عندما يصل حجم جدول الذاكرة إلى حد معين، تُنقل البيانات إلى ملف SSTable على القرص. جداول SSTable غير قابلة للتغيير، لذا فإن التحديث يكتب نسخة جديدة بدلاً من تعديل النسخة القديمة، ثم تقوم عملية خلفية تُسمى الضغط بدمج هذه النسخ والتخلص من الصفوف المستبدلة.
نسخ البيانات في Cassandra
نظرًا لاحتمال حدوث مشكلة في الأجهزة أو تعطل الارتباط في أي وقت أثناء معالجة البيانات، يلزم إيجاد حل لتوفير نسخة احتياطية عند حدوث المشكلة. لذلك يتم تكرار البيانات لضمان عدم وجود نقطة فشل واحدة.
Cassandra يضع نسخًا متماثلة من البيانات على عقد مختلفة بناءً على هذين العاملين.
- يتم تحديد مكان وضع النسخة المتماثلة التالية بواسطة استراتيجية النسخ المتماثل.
- بينما يتم تحديد العدد الإجمالي للنسخ المتماثلة الموضوعة على العقد المختلفة بواسطة عامل النسخ.
يعني عامل النسخ المتماثل وجود نسخة واحدة فقط من البيانات بينما يعني عامل النسخ الثلاثة وجود ثلاث نسخ من البيانات في ثلاث عقد مختلفة.
لضمان عدم وجود نقطة واحدة من الفشل، يجب أن يكون عامل النسخ ثلاثة.
هناك نوعان من استراتيجيات النسخ المتماثل في Cassandra.
استراتيجية بسيطة في Cassandra
استراتيجية بسيطة يتم استخدامه عندما يكون لديك مركز بيانات واحد فقط. يضع SimpleStrategy النسخة المتماثلة الأولى على العقدة التي حددها المقسم. بعد ذلك، يتم وضع النسخ المتماثلة المتبقية في اتجاه عقارب الساعة في حلقة العقدة.
هنا هو التمثيل التصويري لSimpleStrategy:

استراتيجية طوبولوجيا الشبكة في Cassandra
استراتيجية طوبولوجيا الشبكة تُستخدم هذه الاستراتيجية عندما يكون لديك أكثر من مركزين للبيانات. في NetworkTopologyStrategy، يتم تعيين النسخ المتماثلة لكل مركز بيانات على حدة. تضع NetworkTopologyStrategy النسخ المتماثلة في اتجاه عقارب الساعة في الحلقة حتى تصل إلى أول عقدة في رف آخر. تحاول هذه الاستراتيجية وضع النسخ المتماثلة على رفوف مختلفة في نفس مركز البيانات.
ويرجع ذلك إلى احتمال حدوث فشل أو مشكلة في الحامل في بعض الأحيان. ثم يمكن للنسخ المتماثلة الموجودة على العقد الأخرى توفير البيانات.
فيما يلي التمثيل التصويري لاستراتيجية طوبولوجيا الشبكة:

يُحدد عامل النسخ عدد النسخ الموجودة. أما عدد هذه النسخ التي يجب أن تستجيب لطلب معين فهو إعداد منفصل، سيتم شرحه لاحقًا.
مستويات الاتساق في Cassandra
يتم تحديد مستوى الاتساق لكل استعلام بدلاً من تحديده لكل مجموعة، وهذا ما يجعل Cassandra قابل للتعديل. يحدد هذا الخيار عدد النسخ المتماثلة التي يجب أن تؤكد عملية الكتابة، أو تستجيب لعملية القراءة، قبل أن يجيب المنسق على العميل. يؤدي المستوى المنخفض إلى سرعة أكبر في الاستجابة؛ بينما يؤدي المستوى العالي إلى بيانات أكثر دقة وحداثة.
| مستوى | السلوك | الاستخدام النموذجي |
|---|---|---|
| ONE | يجب أن تستجيب نسخة واحدة. | تسجيل عالي الإنتاجية حيث يكون وجود قراءة قديمة عرضية مقبولاً. |
| النصاب | يجب أن تستجيب أغلبية جميع النسخ، ويتم حساب ذلك على النحو التالي: (RF / 2) + 1. | الخيار الأمثل للأغراض العامة لتحقيق التوازن والاتساق والتوافر. |
| النصاب المحلي | يجب أن تستجيب أغلبية النسخ المتماثلة داخل مركز البيانات المحلي. | مجموعات مراكز البيانات المتعددة، لأنها تتجنب زمن الاستجابة عبر المناطق. |
| الكل | يجب على كل نسخة أن تستجيب. | نادر الحدوث. تعطل عقدة واحدة يؤدي إلى فشل الطلب بالكامل. |
| أي (للكتابة فقط) | يُعتبر التسليم المُلمّح إليه بمثابة نجاح حتى لو لم يكن بالإمكان الوصول إلى أي نسخة طبق الأصل. | أقصى قدر من إمكانية الكتابة حيث يمكن التهاون في المتانة. |
يُضمن اتساق قوي عندما يتجاوز مجموع مستوى القراءة ومستوى الكتابة عامل النسخ. عند عامل نسخ يساوي ثلاثة، فإن الكتابة عند مستوى QUORUM والقراءة عند مستوى QUORUM تُحقق هذه القاعدة، لأن اثنين زائد اثنين أكبر من ثلاثة. أما الكتابة عند مستوى ONE والقراءة عند مستوى ONE فلا تُحققها، وبالتالي قد تُعيد عملية القراءة قيمة أقدم.
عندما يتعذر الوصول إلى نسخة طبق الأصل، يقوم المنسق بتخزين تلميح ويعيد تشغيلها بمجرد عودة العقدة، وهذا هو سبب وجود أي مستوى وجزء كبير من Cassandraسلوك الشفاء الذاتي.
كتابة Operaنشوئها في Cassandra
يرسل المنسق طلب كتابة إلى النسخ المتماثلة. إذا كانت كافة النسخ المتماثلة جاهزة، فسوف تتلقى طلب الكتابة بغض النظر عن مستوى الاتساق الخاص بها.
مستوى الاتساق يحدد عدد العقد التي ستستجيب مع إقرار النجاح.
سوف تستجيب العقدة مرة أخرى بإقرار النجاح إذا تمت كتابة البيانات بنجاح في سجل الالتزام و memTable.
على سبيل المثال، في مركز بيانات واحد مع عامل النسخ المتماثل يساوي ثلاثة، ستتلقى ثلاث نسخ متماثلة طلب كتابة. إذا كان مستوى الاتساق واحدًا، فستستجيب نسخة متماثلة واحدة فقط بإقرار النجاح، وستظل النسختان المتبقيتان خاملة.
لنفترض أنه إذا فقدت النسختان المتماثلتان المتبقيتان البيانات بسبب تعطل العقدة أو مشكلة أخرى، Cassandra سيجعل الصف متسقًا من خلال آلية الإصلاح المضمنة فيه Cassandra.
هنا يتم شرح كيفية حدوث عملية الكتابة Cassandra,
- عندما يصل طلب الكتابة إلى العقدة، يتم أولاً تسجيل الدخول في سجل الالتزام.
- ثم Cassandra يكتب البيانات في جدول الذاكرة. البيانات المكتوبة في جدول الذاكرة في كل طلب كتابة تُكتب أيضًا في سجل الالتزام بشكل منفصل. جدول Mem عبارة عن بيانات مخزنة مؤقتًا في الذاكرة بينما يقوم سجل الالتزام بتسجيل سجلات المعاملات لأغراض النسخ الاحتياطي.
- عند امتلاء جدول الذاكرة، يتم نقل البيانات إلى ملف بيانات SSTable.

لأن جداول SSTables لا تُعدّل في مكانها أبدًا، فإن عملية الحذف لا تُزيل الصف فورًا. بدلاً من ذلك، يتم وضع علامة تُسمى تمثال تُكتب البيانات، ولا يختفي السطر إلا عند تشغيل عملية الضغط بعد انقضاء فترة السماح. ولهذا السبب، تُبطئ عمليات الحذف المكثفة عمليات القراءة حتى تتم عملية الضغط.
عرض Operaنشوئها في Cassandra
هناك ثلاثة أنواع من طلبات القراءة التي يرسلها المنسق إلى النسخ المتماثلة.
- طلب مباشر
- طلب الملخص
- قراءة طلب الإصلاح
يرسل المنسق طلبًا مباشرًا إلى إحدى النسخ المتماثلة. بعد ذلك، يرسل المنسق طلب الملخص إلى عدد النسخ المتماثلة المحددة حسب مستوى الاتساق ويتحقق مما إذا كانت البيانات التي تم إرجاعها هي بيانات محدثة.
بعد ذلك، يرسل المنسق طلب ملخص لجميع النسخ المتماثلة المتبقية. إذا أعطت أي عقدة قيمة قديمة، فسيقوم طلب إصلاح قراءة الخلفية بتحديث تلك البيانات. وتسمى هذه العملية آلية إصلاح القراءة.
داخل النسخة المتماثلة التي تتلقى الطلب المباشر، تم تصميم ترتيب البحث لتجنب لمس القرص كلما أمكن ذلك.
- استخدم قابل للذاكرة يتم فحصها أولاً، لأن أحدث عمليات الكتابة لم يتم تفريغها بعد.
- استخدم ذاكرة التخزين المؤقت للصفوف، إذا تم تفعيلها، يمكنها الرد على الطلب بالكامل دون الحاجة إلى مزيد من العمل.
- A مرشح بلوم يتم الرجوع إلى كل جدول SSTable. ويجيب هذا الجدول إما بأنه غير موجود قطعاً أو أنه موجود على الأرجح، مما يسمح بتجاوز معظم جداول SSTable دون قراءتها.
- استخدم فهرس التقسيم ويحدد ملخصها إزاحة البايت الدقيقة داخل أي جدول SSTable الذي ينجو من فحص مرشح بلوم.
- يتم دمج الأجزاء المتطابقة من عدة جداول SSTables، مع اعتماد أحدث طابع زمني لكل عمود.
يُعدّ مُرشِّح بلوم الخطوة التي تُحافظ على سرعة القراءة مع ازدياد حجم البيانات، لأنه يُزيل تقريبًا جميع جداول SSTable من الحسابات قبل بدء أي عملية بحث على القرص. يتم شرح تطبيق هذه الآلية على عدة أجهزة في [المصدر]. Cassandra كتلة البرنامج التعليمي.
