Redis / المتقدم: الاستمرار والتوزيع والتشغيل / الدرس 15
شقوق Cluster والتوجيه وتصميم المفاتيح المتعددة
صمم حول شقوق الهاش والعميل الواعي بالبنية، وميز التجزئة والمزامنة والعمل الذري بالشَق وسلوك الوكيل المدار.
في هذه الصفحة
أهداف الدرس
- شرح وسوم الهاش والتحويل وشرط الشق الواحد.
- تقييم التوزيع والسخونة قبل جمع البيانات.
توزع Cluster الشقوق لا أجزاء مفتاح عشوائياً
تقسم Cluster المفاتيح إلى16384 شقاً بأصل ونسخ، ولا توزع بنية مفتاح كبير داخلياً. يستخدم العميل التوجيه والتحويل لا بذرة كوكيل دائم. تستخدم Cluster ذاتية المصدر القاعدة صفر لا SELECT عامة، وقد تختلف الوكلاء المدارة والعمليات. حدد الخدمة قبل نقل الوصفة.
استخدم وسم الهاش لحد محلية مطلوب فقط
يضع المثال وسمًا غير فارغ مشتركاً بالأقواس ليستخدم الخوارزمية نفسها. لا يحسب كل حالة أو ينشئ عنقوداً. قد يتيح الجمع عمليات متعددة ويجمع الوسم العام كل الحمل بشق. اختر حداً تجارياً صغيراً واختبر الأسماء والتوجيه، وافصل وضوح الاسم والتوزيع.
keys = ['lab:{order-17}:items', 'lab:{order-17}:status']
def simple_nonempty_tag(key):
start = key.index('{') + 1
end = key.index('}', start)
return key[start:end]
assert [simple_nonempty_tag(key) for key in keys] == ['order-17', 'order-17']
تدعم الدالة الاسمين المضبوطين فقط ولا تنفذ محلل Redis أو CRC16 للإنتاج.
قيود الشق الواحد متطلبات صحة
تحتاج العمليات والمعاملات والشيفرات العادية المفاتيح بالشَق نفسه. لا تعالج المهلة CROSSSLOT؛ أعد الحد أو اجمع المطلوب دون ادعاء معاملة موزعة عامة. لا يفوض الوسم وقد يسخن الشق. ميز MOVED وASK المؤقتة واتبع مكتبة لا تجاهل التحويل.
أظهر شكلاً محلياً متوافقاً للمفاتيح
يشترك الاسمان بالوسم فتتحقق أهلية MGET وفق الشق. تفترض العينة سلسلتين ومنحاً، والمتوقع items-v1 وready بترتيب الطلب. لا Cluster أو ضمان فشل أو خارج. قد يقبل المنفرد أسماء ترفضها Cluster، فمثل البنية ولا تجمع غير المرتبط للراحة.
MGET lab:{order-17}:items lab:{order-17}:status
[items-v1, ready]
بالعينة يتوقع [items-v1, ready] مع افتراض موضع وعميل يفحصان منفصلين.
يحتاج التوسع توزيعاً ودليل فشل
توزع العقد الشقوق والذاكرة ويبقى الساخن أو الوسم الكبير مركزاً. قس الأحجام والتوزيع والتعقيد. تكلف الحركة والتحويل وتغير الإعادة، ولا تضمن المزامنة اتساقاً قوياً أو فقداً صفرياً. حدد التوجيه والإعادة والاستمرار والتعافي وغياب الشق. لا إنشاء أو نقل أو إدارة أو اختبار شبكة هنا.
الأخطاء الشائعة وإصلاحها
CROSSSLOT Keys in request don't hash to the same slot
- لماذا يحدث؟
- تعبر العملية شقوقاً غير متوافقة.
- كيف تصلحه؟
- راجع الحد والوسم المشروع.
- كيف تتجنب تكراره؟
- اختبر التدفق بدلالات Cluster.
تعتبر MOVED أو ASK فشل اتصال دائماً
- لماذا يحدث؟
- لا ينفذ العميل التوجيه اللازم.
- كيف تصلحه؟
- استخدم مكتبة متوافقة وافحص وصول المكتشف.
- كيف تتجنب تكراره؟
- ضمّن التحويل وتغير البنية في القبول.
يهزم وسم مشترك التوزيع المتوقع
- لماذا يحدث؟
- جمعت بيانات غير مرتبطة بشق واحد.
- كيف تصلحه؟
- راجع الوسم والنقل.
- كيف تتجنب تكراره؟
- قيم السخونة والتعددية قبل الوسم.
اختبر فهمك
1. تستخدم كل المفاتيح {all}. ما الموازنة الخفية؟
اعرض الحل المشروح
قد يجمع التصميم كامل الحمل والبيانات في شق واحد، فيقوض فائدة التجزئة. ضع معاً فقط المفاتيح التي تحتاج فعلاً حد عملية مشتركة، وقيم حجمها وحركتها. لا تبرر سهولة الشق الواحد تلقائياً فقد التوزيع أو إنشاء عقدة ساخنة.
2. تعمل شيفرة مفتاحين بالمنفرد وتفشل في Cluster. هل الصياغة خاطئة حتماً؟
اعرض الحل المشروح
لا. قد تخالف المفاتيح شروط الشق والإعلان في Cluster رغم صحة الشيفرة. تحقق من الأسماء الفعلية والوصول المعلن وتوجيه العميل قبل تغيير المنطق. صمم الثابت داخل قيود البنية المدعومة، ولا تعتبر النجاح المنفرد إثباتاً لتنفيذ ذري عبر الشظايا.
أهم ما تعلمته
- التوجيه والمحلية جزء من نموذج التطبيق.
- توازن الوسوم التنسيق والتوزيع والسخونة.