ما هي بعض التقنيات لدفع التغييرات من مجلس الوزراء طوكيو في إعداد متعدد الخدمات؟

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

سؤال

دعنا نقول أن لدي N> 1 TCP، الموجهة نحو الاتصال (قراءة: ليس موقع الويب) خدمات التعامل مع الاتصالات من المستخدمين النهائيين في بعض تكوين التحميل المتوازن / المشاركة.

يقوم هؤلاء المستخدمون بأشياء تسبب تحديثات لمفاتيح واحدة أو أكثر في عنصر بيانات Tynant Tyrant المركزي.

ماذا تنصح يدفع هذه التغييرات في المستخدمين المهتمين المتصلين بمثيل خدمة مختلف يعمل على نفس الشبكة الخاصة (نفس COLO)؟

User 1     Service 1      Tokyo Tyrant      Service 2           User 2
------     ---------      ------------      ---------           ------
  |            |               |                |                 |
  ------> do something         |                |                 |
  |            |       ---> put K 42            |                 |
  |            |               |     ----> Hey! K is now 42       |
  |            |               |                |          ---> K was updated

بعض الأفكار:

بث التغييرات على التحديث الناجح ل DataStore من الخدمة N إلى جميع الخدمات الأخرى

User 1     Service 1      Tokyo Tyrant      LAN Broadcast       Service 2       User 2
------     ---------      ------------      -------------       ---------       ------
  |            |               |                |                 |                |
  ------> do something         |                |                 |                |
  |            |       ---> put K 42            |                 |                |
  |            |       -----------------> Hey! K is now 42        |                |
  |            |               |                |         --> Hey! K is now 42     |
  |            |               |                |                 |         ---> K was updated

تخزين خدمة كل مستخدم مهتم يتم تسجيل الدخول وإرسال هذه الخدمات رسالة يتم نقلها بعد ذلك إلى المستخدم المهتم؛ أفترض أن هذه هي كيفية عمل اتصالات خادم IRC Server (تحتاج إلى بحث ذلك).

User 1     Service 1      Tokyo Tyrant      Service 2           User 2
------     ---------      ------------      ---------           ------
  |            |               |                |                 |
  ------> do something         |                |                 |
  |            |       ---> put K 42            |                 |
  |            |       ---> who cares?          |                 |
  |            | <--- User 2 on Service 2       |                 |
  --------------------------------------> Hey! K is now 42        |
  |            |               |                |          ---> K was updated

تشغيل وسيط الرسائل (مثل الأرنب)؛ لديك كل خدمة X اشترك في قائمة انتظار نيابة عن المستخدمين المهتمين؛ نشرها عند النجاح "وضع"

User 1     Service 1      Tokyo Tyrant      RabbitMQ           Service 2    User 2
------     ---------      ------------      --------           ---------    ------
  |            |               |                | <--- subscribe --|         |
  ------> do something         |                |                  |         |
  |            |       ---> put K 42            |                  |         |
  |            | ------------------- post msg -->                  |         |
  |            |               |                |----- notify ---->|         |
  |            |               |                |                  |  ---> K was updated

هناك فكرة أخرى هي التظاهر بأنها عبدا النسخ المتماثل والاتصال بالماجستير.

بشكل عام، أبحث عن طريقة للحصول على "تغيير الإخطارات" كما تم العثور عليها في البوتونات ولكن للطاغية طوكيو. الفكرة أكثر عمومية.

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

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

المحلول

توصيتي (وما أستخدمه) هو نهج وسيط الرسائل. يبقي RabbitMQ على الخدمات (UN) الاشتراك في قوائم انتظار مختلفة ويمكنك استخدام التبادلات Fanout.

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

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