رسالة حبيبية لقوائم الانتظار والحافلات الخدمة

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

  •  13-09-2019
  •  | 
  •  

سؤال

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

  1. يعالج العميل العنصر، الأماكن في قائمة الانتظار المحلية.
  2. معالجة قائمة انتظار المحلية تلتقط الرسائل وتدعو خدمة الويب.
  3. خدمة الويب تنشئ رسالة في حافلة الخدمة على الخادم.
  4. خدمة حافلة الخدمة رسالة إلى قاعدة البيانات.

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

سؤالي عن حبيب الرسائل في كل مرحلة. The simplest method would mean that each item processed on the client generates one client message/web service call/service bus message. That's fine, but I know it's better for the web service calls to be batched up if possible, except there's a tradeoff between large granularity web service DTOs, versus short-running transactions on the database. This particular scenario does not require a "business transaction", where all or none items are processed, I'm just looking to achieve the best balance of message size vs. number of web service calls vs. database transactions.

اي نصيحه؟

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

المحلول

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

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

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

نصائح أخرى

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

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

مجردة قائمة انتظار الرسائل

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

إذا قمت بتحرير الميزات الأساسية، فيمكنك تبديل الميكانيكا داخل وخارج احتياجاتك، أو يتم تقييمها بدقة أكثر.

يمكنك أيضا ترجمة الرسائل من أنواع قائمة الانتظار المختلفة بأجزاء مختلفة من التطبيق أو مسار الرسالة حيث يتغير مؤشر المستلم لأنهم يتعاملون، على سبيل المثال 1000: 1 / S VS 10: 1 / S على مستوى أعلى.

حظا طيبا وفقك الله

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