Pesan dan koneksi di Azure SignalR Service

Model penagihan untuk Azure SignalR Service didasarkan pada jumlah koneksi dan jumlah pesan keluar dari layanan. Artikel ini menjelaskan cara menentukan dan menghitung penagihan pesan dan koneksi.

Format pesan

Azure SignalR Service mendukung format yang sama seperti ASP.NET Core SignalR: JSON dan MessagePack.

Ukuran pesan

Batas berikut berlaku untuk pesan Azure SignalR Service:

  • Pesan klien:
    • Untuk polling panjang atau peristiwa sisi server, klien tidak dapat mengirim pesan yang lebih besar dari 1 MB.
    • Tidak ada batas ukuran untuk WebSocket untuk layanan.
    • Server aplikasi dapat menetapkan batas untuk ukuran pesan klien. Defaultnya adalah 32 KB. Untuk informasi selengkapnya, lihat Pertimbangan keamanan di ASP.NET Core SignalR.
    • Untuk tanpa server, ukuran pesan dibatasi oleh implementasi upstream, tetapi di bawah 1 MB disarankan.
  • Pesan server:
    • Tidak ada batasan ukuran pesan server, tetapi di bawah 16 MB disarankan.
    • Server aplikasi dapat menetapkan batas untuk ukuran pesan klien. Defaultnya adalah 32 KB. Untuk informasi selengkapnya, lihat Pertimbangan keamanan di ASP.NET Core SignalR.
    • Tanpa server:
      • Rest API: 1 MB untuk isi pesan, 16 KB untuk header.
      • Tidak ada batasan untuk WebSocket, manajemen SDK persis mode tenda, tetapi di bawah 16 MB disarankan.

Untuk klien WebSocket, pesan besar dibagi menjadi pesan yang lebih kecil yang masing-masing tidak lebih dari 2 KB dan dikirimkan secara terpisah. SDK menangani pemisahan dan penyatuan pesan. Upaya pengembang tidak diperlukan.

Pesan berukuran besar berdampak negatif pada performa pesan. Gunakan pesan yang lebih kecil jika memungkinkan dan uji untuk menentukan ukuran pesan yang optimal untuk setiap skenario kasus penggunaan.

Cara menghitung pesan untuk penagihan

Pesan yang dikirim ke layanan adalah pesan masuk dan pesan yang dikirim keluar dari layanan adalah pesan keluar. Hanya pesan keluar dari Azure SignalR Service yang dihitung untuk penagihan. Pesan ping antara klien dan server diabaikan.

Pesan yang lebih besar dari 2 KB dihitung sebagai beberapa pesan yang masing-masing berukuran 2 KB. Bagan jumlah pesan di portal Microsoft Azure diperbarui setiap 100 pesan per hub.

Misalnya, Anda memiliki satu server aplikasi, dan tiga klien:

  • Ketika server aplikasi menyiarkan pesan 1-KB ke semua klien yang terhubung, pesan dari server aplikasi ke layanan dianggap sebagai pesan masuk gratis. Tiga pesan yang dikirim dari layanan ke masing-masing klien adalah pesan keluar dan ditagih.

  • Ketika klien A mengirim pesan masuk 1 KB ke klien B, tanpa melalui server aplikasi, pesan adalah pesan masuk gratis. Pesan yang dirutekan dari layanan ke klien B ditagih sebagai pesan keluar.

  • Jika Anda memiliki tiga klien dan satu server aplikasi, ketika satu klien mengirim pesan 4-KB untuk siaran server ke semua klien, jumlah pesan yang ditagih adalah delapan:

    • Satu pesan dari layanan ke server aplikasi.
    • Tiga pesan dari layanan ke klien. Setiap pesan dihitung sebagai dua pesan berukuran 2-KB.

Cara menghitung koneksi

Azure SignalR Service membuat server aplikasi dan koneksi klien. Secara default, setiap server aplikasi dimulai dengan lima koneksi awal per hub dan setiap klien memiliki satu koneksi klien.

Misalnya, Anda memiliki dua server aplikasi dan Anda menentukan lima hub dalam kode. Jumlah koneksi server adalah 50: (2 server aplikasi * 5 hub * 5 koneksi per hub).

Jumlah koneksi yang ditampilkan dalam portal Azure mencakup koneksi server, klien, diagnostik, dan pelacakan langsung. Jenis koneksi ditentukan dalam daftar berikut:

  • Koneksi server:Menyambungkan Azure SignalR Service dan server aplikasi.
  • Koneksi klien:Menyambungkan Azure SignalR Service dan aplikasi klien.
  • Koneksi diagnostik: Jenis koneksi klien khusus yang dapat menghasilkan log yang lebih rinci, yang dapat memengaruhi performa. Klien semacam ini dirancang untuk pemecahan masalah.
  • Koneksi jejak langsung:Menyambungkan ke titik akhir jejak langsung dan menerima jejak langsung Azure SignalR Service.

Koneksi pelacakan langsung tidak dihitung sebagai koneksi klien atau sebagai koneksi server.

ASP.NET SignalR menghitung koneksi server dengan cara yang berbeda. Hal ini mencakup satu hub default selain hub yang Anda tentukan. Secara default, setiap server aplikasi membutuhkan lima tambahan koneksi server awal. Jumlah koneksi awal untuk hub default tetap konsisten dengan hub lainnya.

Layanan dan server aplikasi terus menyinkronkan status koneksi dan membuat penyesuaian pada koneksi server untuk mendapatkan performa dan stabilitas layanan yang lebih baik. Jadi Anda mungkin melihat perubahan jumlah koneksi server di layanan yang sedang berjalan.