Üzenetek és kapcsolatok az Azure SignalR Service-ben

Az Azure SignalR Szolgáltatás számlázási modellje a kapcsolatok számán és a szolgáltatásból érkező kimenő üzenetek számán alapul. Ez a cikk bemutatja, hogyan vannak definiálva és számolva az üzenetek és a kapcsolatok a számlázáshoz.

Üzenetformátumok

Az Azure SignalR Service ugyanazokat a formátumokat támogatja, mint ASP.NET Core SignalR: JSON és MessagePack.

Üzenet mérete

Az Azure SignalR Service-üzenetekre a következő korlátozások vonatkoznak:

  • Ügyfélüzenetek:
    • Hosszú lekérdezési vagy kiszolgálóoldali események esetén az ügyfél nem tud 1 MB-nál nagyobb üzeneteket küldeni.
    • A WebSocket szolgáltatáshoz nincs méretkorlátja.
    • Az alkalmazáskiszolgáló korlátozhatja az ügyfélüzenetek méretét. Az alapértelmezett érték 32 KB. További információ: Biztonsági szempontok a ASP.NET Core SignalR-ben.
    • A kiszolgáló nélküli üzenetek méretét a felsőbb rétegbeli megvalósítás korlátozza, de 1 MB alatt ajánlott.
  • Kiszolgálói üzenetek:
    • A kiszolgáló üzenetmérete nincs korlátozva, de 16 MB alatt ajánlott.
    • Az alkalmazáskiszolgáló korlátozhatja az ügyfélüzenetek méretét. Az alapértelmezett érték 32 KB. További információ: Biztonsági szempontok a ASP.NET Core SignalR-ben.
    • Kiszolgáló nélküli:

WebSocket-ügyfelek esetén a nagyméretű üzenetek kisebb, egyenként legfeljebb 2 KB méretű üzenetekre oszlanak, és külön továbbítódnak. Az SDK-k kezelik az üzenetek felosztását és összeállítását. Nincs szükség fejlesztői erőfeszítésekre.

A nagyméretű üzenetek negatívan befolyásolják az üzenetküldés teljesítményét. Ha lehetséges, használjon kisebb üzeneteket, és tesztelje az egyes használati esetek optimális üzenetméretét.

Az üzenetek számlálásának menete a számlázáshoz

A szolgáltatásba küldött üzenetek bejövő üzenetek, a szolgáltatásból küldött üzenetek pedig kimenő üzenetek. Csak az Azure SignalR Szolgáltatásból érkező kimenő üzenetek számítanak bele a számlázásba. Az ügyfelek és a kiszolgálók közötti pingelési üzeneteket nem számoljuk.

A 2 KB-nál nagyobb üzenetek több, egyenként 2 KB-os üzenetnek számítanak. Az Azure Portal üzenetszám-diagramja központonként 100 üzenetenként frissül.

Tegyük fel például, hogy egy alkalmazáskiszolgálóval és három ügyféllel rendelkezik:

  • Amikor az alkalmazáskiszolgáló egy 1 KB-os üzenetet küld az összes csatlakoztatott ügyfélnek, az alkalmazáskiszolgálótól a szolgáltatáshoz érkező üzenet ingyenes bejövő üzenetnek minősül. A szolgáltatásból az egyes ügyfeleknek küldött három üzenet kimenő üzenetek, és a számlázásukra kerül sor.

  • Amikor az A ügyfél egy 1 KB-os bejövő üzenetet küld a B ügyfélnek, az alkalmazáskiszolgáló használata nélkül az üzenet egy ingyenes bejövő üzenet. A szolgáltatásból a B ügyfélhez átirányított üzenet kimenő üzenetként lesz számlázva.

  • Ha három ügyféllel és egy alkalmazáskiszolgálóval rendelkezik, amikor egy ügyfél 4 KB-os üzenetet küld az összes ügyfélnek közvetített kiszolgálóhoz, a számlázott üzenetek száma nyolc:

    • Egy üzenet a szolgáltatásból az alkalmazáskiszolgálóra.
    • Három üzenet a szolgáltatásból az ügyfeleknek. Minden üzenet két 2 KB-os üzenetnek számít.

A kapcsolatok számlálása

Az Azure SignalR szolgáltatás alkalmazáskiszolgálót és ügyfélkapcsolatokat hoz létre. Alapértelmezés szerint minden alkalmazáskiszolgáló központonként öt kezdeti kapcsolattal indul, és mindegyik ügyfél egy ügyfélkapcsolattal rendelkezik.

Tegyük fel például, hogy két alkalmazáskiszolgálóval rendelkezik, és öt központot határoz meg kódban. A kiszolgálókapcsolatok száma 50: (2 alkalmazáskiszolgáló * 5 hub * 5 kapcsolat központonként).

Az Azure Portalon látható kapcsolatszám kiszolgálói, ügyfél-, diagnosztikai és élő nyomkövetési kapcsolatokat tartalmaz. A kapcsolattípusok a következő listában vannak definiálva:

  • Kiszolgálókapcsolat: Csatlakozás az Azure SignalR Service-t és az alkalmazáskiszolgálót.
  • Ügyfélkapcsolat: Csatlakozás az Azure SignalR Service-t és az ügyfélalkalmazást.
  • Diagnosztikai kapcsolat: Az ügyfélkapcsolat egy speciális típusa, amely részletesebb naplót hozhat létre, ami befolyásolhatja a teljesítményt. Ez az ügyféltípus hibaelhárításra lett tervezve.
  • Élő nyomkövetési kapcsolat: Csatlakozás az élő nyomkövetési végponthoz, és fogadja az Azure SignalR Service élő nyomkövetéseit.

Az élő nyomkövetési kapcsolatok nem számítanak ügyfélkapcsolatnak vagy kiszolgálókapcsolatnak.

ASP.NET SignalR más módon számítja ki a kiszolgálókapcsolatokat. A definiált hubokon kívül egy alapértelmezett központot is tartalmaz. Alapértelmezés szerint minden alkalmazáskiszolgálónak öt további kezdeti kiszolgálókapcsolatra van szüksége. Az alapértelmezett központ kezdeti kapcsolatszáma a többi központtal összhangban marad.

A szolgáltatás és az alkalmazáskiszolgáló folyamatosan szinkronizálja a kapcsolat állapotát, és módosítja a kiszolgálói kapcsolatokat a jobb teljesítmény és a szolgáltatás stabilitása érdekében. Így a futó szolgáltatásban a kiszolgálókapcsolatok számában is megjelenhetnek változások.