Kami mengirimkan pemberitahuan ke semua pengguna yang menggunakan pekerjaan web. tapi masalahnya tidak semua orang menerima notifikasi secara bersamaan. Misalkan jika kita harus mengirimkan notifikasi ke 3000 user maka selisih waktu antara user pertama dan terakhir akan lebih dari satu jam.

Apakah ada solusi yang lebih baik di mana saya dapat mengirim pemberitahuan ke semua orang secara bersamaan seperti yang dilakukan "QBot" di Teams.

Terima kasih.

0
Krishna089 28 Maret 2020, 05:47

1 menjawab

Jawaban Terbaik

Jika Anda harus mengirim notifikasi satu per satu, maka tidak mungkin mengirimkannya ke semua pengguna secara bersamaan. Namun, Anda dapat mengurangi kesenjangan, tetapi ini mungkin atau mungkin bukan tugas yang mudah tergantung pada jumlah pengguna yang Anda miliki.

Pelambatan

Tentu saja, Anda perlu mempertimbangkan pelambatan. Seperti yang dikatakan @Nikitha-MSFT di komentar, Anda akan mulai mendapatkan kesalahan HTTP 429 segera setelah pembatasan kecepatan tercapai. Dan Anda perlu menanganinya dengan benar dan mencoba lagi pemberitahuan yang gagal.

Tingkat paralelisme yang benar

Anda memerlukan pekerjaan web yang skalabel. Artinya, pekerjaan web Anda dapat dipicu dan memproses beberapa kumpulan secara bersamaan. Misalnya, ubah pekerjaan web Anda menjadi antrean pesan yang dipicu (jika tidak), sehingga dapat memproses beberapa pesan antrean yang masing-masing berisi satu atau beberapa notifikasi sekaligus.

Misalnya, Anda dapat memiliki dua pekerjaan web:

WebJob A - dipicu oleh timer / permintaan HTTP, temukan semua pengguna perlu memberi tahu dan membuat pesan antrian untuk setiap pengguna yang ditemukan

WebJob B - dipicu oleh antrian, memproses pesan, dan mengirim notifikasi

Setiap host pekerjaan dapat memproses 32 pesan antrian sebagai maksimum secara asinkron. Jadi secara teori, Anda dapat mengirim 32 kumpulan notifikasi sekaligus per host pekerjaan.

Dengan asumsi Anda masih belum mencapai batas pelambatan sejauh ini, Anda dapat mulai mempertimbangkan untuk meningkatkan sumber daya:

Perkecil

Anda memiliki satu host webjob per layanan aplikasi. Anda dapat meningkatkan skala layanan aplikasi Anda untuk memiliki beberapa instance guna mendapatkan lebih banyak instance host pekerjaan. Semakin banyak instance yang Anda miliki, semakin cepat Anda dapat menghapus pesan dalam antrian, oleh karena itu semakin cepat Anda dapat mengirim notifikasi.

Perbesar

Mungkin juga Anda mengalami hambatan pada paket layanan aplikasi Anda seperti postingan lakukan. Pada titik mana, Anda perlu mempertimbangkan untuk meningkatkan paket Anda ke tingkat lain untuk mendapatkan lebih banyak daya, mis. CPU.

1
Community 20 Juni 2020, 09:12