الرسائل والاتصالات في خدمة Azure SignalR

يعتمد نموذج الفوترة لخدمة Azure SignalR على عدد الاتصالات وعدد الرسائل. توضح هذه المقالة كيفية تعريف الرسائل والاتصالات واحتسابها للفوترة.

تنسيقات الرسائل

تدعم خدمة Azure SignalR نفس التنسيقات مثل ASP.NET Core SignalR: JSON و MessagePack.

حجم الرسالة

لا يوجد لدى Azure SignalR Service حد لحجم الرسائل.

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

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

كيفية حساب الرسائل للفوترة

بالنسبة للفوترة، يتم احتساب الرسائل الصادرة فقط من خدمة Azure SignalR. يتم تجاهل رسائل ping بين العملاء والخوادم.

يتم احتساب الرسائل التي يزيد حجمها عن 2 كيلوبايت كرسائل متعددة بحجم 2 كيلوبايت لكل منها. يتم تحديث مخطط عدد الرسائل في مدخل Azure كل 100 رسالة لكل موزع.

على سبيل المثال، تخيل أن لديك خادم تطبيقات واحد، وثلاثة عملاء:

يبث خادم التطبيقات رسالة بحجم 1 كيلوبايت إلى جميع العملاء المتصلين ، وتعتبر الرسالة من خادم التطبيق إلى الخدمة رسالة واردة مجانية. تتم فوترة الرسائل الثلاث التي يتم إرسالها من الخدمة إلى كل عميل فقط كرسائل صادرة.

يرسل العميل A رسالة بحجم 1 كيلوبايت إلى عميل B آخر، دون المرور عبر خادم التطبيق. الرسالة من العميل A إلى الخدمة هي رسالة واردة مجانية. تتم فوترة الرسالة من الخدمة إلى العميل B كرسالة صادرة.

إذا كان لديك ثلاثة عملاء وخادم تطبيق واحد. يرسل عميل واحد رسالة بحجم 4 كيلوبايت للسماح للخادم بالبث إلى جميع العملاء. عدد الرسائل المفوترة هو ثمانية: رسالة واحدة من الخدمة إلى خادم التطبيقات وثلاث رسائل من الخدمة إلى العملاء. يتم احتساب كل رسالة كرسالتين بحجم 2 كيلوبايت.

كيفية حساب الاتصالات

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

على سبيل المثال، افترض أن لديك اثنين من خوادم التطبيقات وقمت بتعريف خمسة موزعات في التعليمات البرمجية. سيكون عدد اتصالات الخادم 50: 2 خوادم التطبيقات * 5 محاور * 5 اتصالات لكل موزع.

يتضمن عدد الاتصالات الموضح في مدخل Azure اتصالات الخادم واتصالات العميل والاتصالات التشخيصية واتصالات التتبع المباشر. يتم تعريف أنواع الاتصال في القائمة التالية:

  • اتصال الخادم: يربط خدمة Azure SignalR بخادم التطبيق.
  • اتصال العميل: يربط خدمة Azure SignalR وتطبيق العميل.
  • الاتصال التشخيصي: نوع خاص من اتصال العميل يمكنه إنتاج سجل أكثر تفصيلا، مما قد يؤثر على الأداء. تم تصميم هذا النوع من العملاء لاستكشاف الأخطاء وإصلاحها.
  • اتصال التتبع المباشر: يتصل بنقطة نهاية التتبع المباشر ويتلقى الآثار المباشرة لخدمة Azure SignalR.

لاحظ أنه لا يتم احتساب اتصال تتبع مباشر كاتصال عميل أو كاتصال خادم.

ASP.NET SignalR بحساب اتصالات الخادم بطريقة مختلفة. يتضمن موزعا افتراضيا واحدا بالإضافة إلى الموزعات التي تحددها. بشكل افتراضي، يحتاج كل خادم تطبيقات إلى خمسة اتصالات خادم أولية أخرى. يظل عدد الاتصالات الأولي للموزع الافتراضي متسقا مع الموزعات الأخرى.

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

كيفية حساب حركة المرور الواردة/الصادرة

الرسالة المرسلة إلى الخدمة هي رسالة واردة. الرسالة المرسلة خارج الخدمة هي رسالة صادرة. يتم حساب حركة المرور بالبايت.