سؤال

Predis ادعاء أن لديها تقطيع من جانب العميل (دعم للتجزئة المتسقة من المفاتيح). http://github.com/nrk/predis

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

باستخدام PHP 5.2 (وإصدار Redis PHP 5.2).

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

المحلول

يبدو

مثل مشكلة أذونات مع حساب المجال \ SN_SPAPPPROD.هل لديك تسجيل دخول SQL مع الحقوق اللازمة؟إذا كان لديك مزرعة متعددة الخوادم، فهل لديك اسم مستعار على كل خادم؟

خدعة لطيفة لمعرفة ما إذا كان المستخدم الخاص بك هو الوصول إليه هو استخدام TestFile، راجع القسم السفلي من هذه المقالة حول كيفية القيام بذلك.إذا لم يرجع هذا الاختبار أخطاء، فإن اتصالك بخادم SQL على ما يرام - تأكد من استخدام Server2 اسم الاسم المستعار عند تشغيل الاختبار.

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

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

نصائح أخرى

الحل هو استخدام Shardining الظاهري. لا أعرف أعمال Predis Framework ولكني أتوقع أنها تستخدم نوعًا من الصفيف - ربما تملأها بمعلومات حول كل قشرة عند بدء التشغيل.

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

رسم الخرائط الأولي:

0 => 0 //node #0
1 => 0
2 => 0
3 => 1 //node #1
4 => 1
5 => 1
6 => 2 //node #2
7 => 2
8 => 2
9 => 2

عندما تضيف عقدة جديدة ، يمكنك تغيير التعيين فقط:

0 => 0
1 => 0
2 => 3 // new node #3
3 => 1
4 => 1
5 => 3 // new node #3
7 => 2
8 => 2
9 => 3 // new node #3

لذلك يجب عليك نقل البيانات باستخدام H (x) = 9 أو 5 أو 2 إلى العقدة رقم 3.

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