التجميع/النسخ المتماثل لحالة العداد مع نطاق مستوى التطبيق

StackOverflow https://stackoverflow.com/questions/1214738

سؤال

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

سؤالي هو ما هو الحل الأفضل؟ لقد نظرت إلى حبوب الجلسة الهادئة ، لكن يبدو أنها مصممة لعميل واحد فقط. لقد فكرت في تسلسل قاعدة البيانات. لقد نظرت أيضًا إلى تجميع Terracotta ؛ لديهم عرض تسلسل http://www.terracotta.org/web/display/orgsite/recipe؟recipe=sequencer ومع ذلك ، أود تجنب حلول الطرف الثالث في حالة وجود حل J2EE. أنا أستخدم WebLogic 8.1.

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

المحلول

لدى بعض بائعي Java EE حلول ذاكرة التخزين المؤقت (على سبيل المثال ، شبكة كائن WebSphere) ، لقد حددت بالفعل عروض الطرف الثالث ، لكنني لا أعتقد وجود معيار محمول.

ما الخطأ في حل DB؟ من الواضح أن القفل ستكون هناك حاجة إليها ، فلماذا لا تترك ديسيبل. أظن أنه إذا كنت بحاجة حقًا إلى قيم تدريجية حقيقية ، فلا توجد قيم مفقودة وما إلى ذلك ، فستكون العلاقات المعاملة مع قيم قاعدة البيانات الأخرى مهمة ، لذا استخدم DB.

إذا تمكنت من الاسترخاء في الحاجة إلى القيم التسلفية المطلقة (أي. اترك الثغرات) ، فيمكنك طرد مجموعات من الأرقام وبالتالي تقليل الخلاف إلى حد كبير. إذا كنت بحاجة حقًا إلى قيم متسلسلة ، ولا توجد فجوات ، فأنت تشتري الحاجة إلى درجة ما من القفل بين الحالات - لا يمكنك السماح "مؤشر ترابط" ثانية للحصول على رقم تسلسل جديد حتى تلتزم "باستخدام" استخدام " الحالي. إذا كنت تستطيع أن تفقد رقم التسلسل الفردي ، فأنت تعمل بشكل أفضل. أو إذا كنت تستطيع أن تكون مخططات ترقيم مستقلة بين الحالات التي تكون فيها في مواقع أفضل بكثير. على سبيل المثال ، قم بتسمية الخوادم A ، B ، C ... لديك IDS A001 ، A002 ، B001 ، C001 ، C002 إلخ.

نصائح أخرى

أعتقد أن تسلسل قاعدة البيانات من المحتمل أن يمنحك النتيجة الأكثر حتمية ، خاصة إذا كنت تستخدم المعاملات ذات التالي العالية لطلبها.

ومع ذلك ، أود أن أتساءل بجدية عن صحة القيام بشيء من هذا القبيل ، لكن هذا مجرد سنتان.

لديك WebLogic في علامات هذا السؤال - WebLogic يسمح Cluster Singletons. على سبيل المثال مثيل واحد لكل مجموعة مع دعم الفشل.

هذا يجب أن يفي بمتطلباتك:

http://e-docs.bea.com/wls/docs100/javadocs/weblogic/cluster/singleton/singletonservice.html

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