Bagikan melalui


Perspektif Azure Well-Architected Framework di Azure Event Hubs

Azure Event Hubs adalah layanan pemrosesan peristiwa terskala yang menyerap dan memproses peristiwa dan data dalam volume besar, dengan latensi rendah dan keandalan tinggi. Layanan ini dapat menerima dan memproses jutaan peristiwa per detik. Data yang dikirim ke hub peristiwa dapat diubah dan disimpan dengan menggunakan penyedia analitik real time atau adapter batching dan penyimpanan.

Untuk informasi selengkapnya tentang menggunakan Azure Event Hubs, lihat dokumentasi Azure Event Hubs guna mempelajari cara menggunakan Azure Event Hubs untuk menyerap jutaan peristiwa per detik dari perangkat dan aplikasi yang tersambung.

Untuk memahami cara menggunakan Azure Event Hubs membantu Anda mencapai keunggulan dan keandalan operasional untuk beban kerja Anda, lihat artikel berikut:

Bagian berikut khusus untuk Azure Event Hubs dari perspektif Well Architected Framework:

  • Pertimbangan Desain
  • Daftar periksa konfigurasi
  • Opsi konfigurasi yang disarankan
  • Artefak sumber

Pertimbangan Desain

Azure Event Hubs menyediakan SLA waktu aktif. Untuk informasi selengkapnya, lihat SLA untuk Azure Event Hubs.

Daftar periksa

Sudahkah Anda mengonfigurasi Azure Event Hubs dengan mempertimbangkan keunggulan operasional?

  • Buat kebijakan SendOnly dan ListenOnly untuk setiap penerbit peristiwa dan konsumen.
  • Saat menggunakan SDK untuk mengirim peristiwa ke Azure Event Hubs, pastikan pengecualian yang diberikan oleh kebijakan coba lagi (EventHubsException atau OperationCancelledException) ditangkap dengan benar.
  • Dalam skenario throughput tinggi, gunakan peristiwa batch.
  • Setiap konsumen dapat membaca peristiwa dari satu hingga partisi maksimum yang didukung oleh SKU Azure Event Hubs
  • Saat mengembangkan aplikasi baru, gunakan EventProcessorClient (.NET dan Java) atau EventHubConsumerClient (Python dan JavaScript) sebagai SDK klien.
  • Sebagai bagian dari ketersediaan di seluruh solusi dan strategi pemulihan bencana Anda, pertimbangkan untuk mengaktifkan opsi pemulihan bencana geo Azure Event Hubs.
  • Saat sebuah solusi memiliki banyak penerbit peristiwa independen, pertimbangkan untuk menggunakan Penerbit Peristiwa untuk kontrol akses yang terperinci.
  • Jangan terbitkan peristiwa ke partisi tertentu.
  • Saat sering menerbitkan peristiwa, gunakan protokol AMQP jika memungkinkan.
  • Jumlah partisi mencerminkan tingkat paralelisme downstream yang dapat Anda capai.
  • Pastikan setiap aplikasi konsumsi menggunakan grup konsumen terpisah dan hanya ada satu penerima aktif per grup konsumen.
  • Saat menggunakan fitur Ambil, pertimbangkan dengan cermat konfigurasi jangka waktu dan ukuran file, terutama dengan volume peristiwa rendah.

Rekomendasi konfigurasi

Pertimbangkan rekomendasi berikut untuk mengoptimalkan keandalan saat mengonfigurasi Azure Event Hubs:

Rekomendasi Deskripsi
Saat menggunakan SDK untuk mengirim peristiwa ke Azure Event Hubs, pastikan pengecualian yang diberikan oleh kebijakan coba lagi (EventHubsException atau OperationCancelledException) ditangkap dengan benar. Saat menggunakan HTTPS, pastikan pola coba lagi yang tepat diterapkan.
Dalam skenario throughput tinggi, gunakan peristiwa batch. Layanan akan mengirimkan array json dengan beberapa peristiwa ke pelanggan, bukan array dengan satu peristiwa. Aplikasi yang menggunakannya harus memproses array ini.
Setiap konsumen dapat membaca peristiwa dari satu hingga partisi maksimum yang didukung oleh SKU Azure Event Hubs. Untuk mencapai skala maksimum di sisi penggunaan aplikasi, setiap konsumen harus membaca dari satu partisi.
Saat mengembangkan aplikasi baru, gunakan EventProcessorClient (.NET dan Java) atau EventHubConsumerClient (Python dan JavaScript) sebagai SDK klien. EventProcessorHost sudah tidak digunakan lagi.
Sebagai bagian dari ketersediaan di seluruh solusi dan strategi pemulihan bencana Anda, pertimbangkan untuk mengaktifkan opsi pemulihan bencana geo Azure Event Hubs. Opsi ini memungkinkan pembuatan namespace layanan sekunder di wilayah yang berbeda. Hanya namespace layanan aktif yang menerima pesan setiap saat. Pesan dan peristiwa tidak direplikasi ke wilayah sekunder. RTO untuk failover regional hingga 30 menit. Konfirmasikan RTO ini sesuai dengan persyaratan pelanggan dan cocok dengan strategi ketersediaan yang lebih luas. Jika RTO yang lebih tinggi diperlukan, pertimbangkan untuk menerapkan pola failover sisi klien.
Saat sebuah solusi memiliki banyak penerbit peristiwa independen, pertimbangkan untuk menggunakan Penerbit Peristiwa untuk kontrol akses yang terperinci. Penerbit Peristiwa secara otomatis mengatur kunci partisi ke nama penerbit, jadi fitur ini hanya boleh digunakan jika peristiwa berasal dari semua penerbit secara merata.
Jangan terbitkan peristiwa ke partisi tertentu. Jika pemesanan peristiwa penting, terapkan pemesanan downstream atau gunakan layanan olahpesan yang berbeda sebagai gantinya.
Saat sering menerbitkan peristiwa, gunakan protokol AMQP jika memungkinkan. AMQP memiliki biaya jaringan yang lebih tinggi saat menginisialisasi sesi, tetapi HTTPS memerlukan overhead TLS untuk setiap permintaan. AMQP memiliki performa yang lebih tinggi untuk penerbit yang sering.
Jumlah partisi mencerminkan tingkat paralelisme downstream yang dapat Anda capai. Untuk throughput maksimum, gunakan jumlah maksimum partisi yang didukung oleh SKU saat membuat Event Hub. Meningkatkan jumlah partisi memungkinkan Anda menskalakan entitas pemrosesan bersamaan agar sesuai dengan partisi, memastikan ketersediaan kirim dan terima yang optimal.
Saat menggunakan fitur Ambil, pertimbangkan dengan cermat konfigurasi jangka waktu dan ukuran file, terutama dengan volume peristiwa rendah. Data Lake gen2 akan dikenakan biaya untuk ukuran transaksi minimal. Jika Anda mengatur jangka waktu sangat rendah sehingga file belum mencapai ukuran minimum, Anda akan dikenakan biaya tambahan.

Artefak sumber

Untuk menemukan namespace layanan Azure Event Hubs dengan SKU Dasar, gunakan kueri berikut:

Resources 
| where type == 'microsoft.eventhub/namespaces'
| where sku.name == 'Basic'
| project resourceGroup, name, sku.name

Langkah selanjutnya