شاردينج ريديس

Shardynj Rydys



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

قابلية التوسع

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

افترض أن لديك 100 غيغابايت من ذاكرة الوصول العشوائي وتحتاج إلى 200 غيغابايت من البيانات. في هذه الحالة ، لديك خياران:







  • قم بالتوسع عن طريق إضافة المزيد من ذاكرة الوصول العشوائي إلى النظام
  • يمكنك التوسع عن طريق إضافة مثيل خادم آخر بسعة 100 جيجابايت من ذاكرة الوصول العشوائي

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





شاردينج ريديس

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





يسمى هذا النهج لتقسيم البيانات أو توزيعها بين خوادم متعددة مع وضع القياس في الاعتبار التجزئة . يتم استدعاء جميع الخوادم التي تخزن أجزاء من البيانات شظايا .



كيف يتم التقاسم - التجزئة الخوارزمية

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

الطريقة الأكثر شيوعًا هي حساب قيمة التجزئة باستخدام اسم مفتاح Redis والنمط. ثم قسّمه على أجزاء Redis المتوفرة في النظام.

HASH_SLOT = تعديل CRC16 (مفتاح) 16384

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

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

فوائد Redis Sharding

يتيح تجزئة Redis مزايا عديدة لنظام قاعدة البيانات لديك بأقل قدر من التغييرات.

إنتاجية عالية

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

توافر عالية

من خلال نهج التجزئة ، يمكن لمجموعة Redis إعداد بنية متماثلة رئيسية تضمن توفرًا ومتانة عالية.

قراءة النسخ المتماثلة

تتيح لك المشاركة الاحتفاظ بنسخة دقيقة من بياناتك وتوفير عمليات القراءة من خلال مثيلات Redis المنفصلة ، مما يزيد من أداء تنفيذ استعلام القراءة.

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

استنتاج

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