Ketersediaan dan konsistensi di Pusat Aktivitas
Artikel ini menyediakan informasi tentang ketersediaan dan konsistensi yang didukung oleh Azure Event Hubs.
Ketersediaan
Azure Event Hubs menyebarkan risiko kegagalan bencana kepada masing-masing komputer atau bahkan menyelesaikan rak di seluruh kluster yang mencakup beberapa domain kegagalan dalam pusat data. Ini menerapkan deteksi kegagalan transparan dan mekanisme kegagalan sehingga layanan akan terus beroperasi dalam tingkat layanan yang terjamin dan biasanya tanpa gangguan yang besar ketika kegagalan tersebut terjadi.
Jika namespace Layanan Pusat Aktivitas dibuat di wilayah dengan zona ketersediaan, risiko pemadaman lebih lanjut tersebar di tiga fasilitas yang terpisah secara fisik, dan layanan ini memiliki cadangan kapasitas yang cukup untuk langsung mengatasi hilangnya seluruh fasilitas yang lengkap dan mengerikan. Untuk informasi selengkapnya, lihat Azure Event Hubs - Pemulihan Bencana Geo.
Saat aplikasi klien mengirim peristiwa ke pusat aktivitas tanpa menentukan partisi, peristiwa didistribusikan secara otomatis di antara partisi di pusat aktivitas Anda. Jika partisi tidak tersedia untuk suatu alasan, peristiwa didistribusikan di antara partisi yang tersisa. Perilaku ini memungkinkan untuk jumlah waktu aktif terbaik. Untuk kasus penggunaan yang memerlukan waktu aktif maksimum, model ini lebih disarankan dari mengirim peristiwa ke partisi tertentu.
Konsistensi
Dalam beberapa skenario, pengurutan peristiwa bisa menjadi penting. Misalnya, Anda mungkin ingin sistem back-end Anda memproses perintah pembaruan sebelum perintah hapus. Dalam skenario ini, aplikasi klien mengirim peristiwa ke partisi tertentu sehingga pengurutan dipertahankan. Ketika aplikasi konsumen mengonsumsi peristiwa ini dari partisi, mereka dibaca secara berurut.
Dengan konfigurasi ini, perlu diingat bahwa jika partisi tertentu yang Anda kirim tidak tersedia, Anda akan menerima respons kesalahan. Sebagai perbandingan, jika Anda tidak memiliki afinitas ke suatu partisi, layanan Pusat Aktivitas mengirimkan peristiwa Anda ke partisi berikutnya yang tersedia.
Oleh karena itu, jika ketersediaan tinggi adalah yang paling penting, jangan menargetkan partisi tertentu (menggunakan ID/kunci partisi). Menggunakan ID/kunci partisi menurunkan tingkat ketersediaan pusat aktivitas ke tingkat partisi. Dalam skenario ini, Anda membuat pilihan eksplisit antara ketersediaan (tidak ada ID/kunci partisi) dan konsistensi (menyematkan peristiwa ke partisi tertentu). Untuk informasi detail tentang partisi di Pusat Aktivitas, lihat Partisi.
Lampiran
Mengirim peristiwa tanpa menentukan partisi
Sebaiknya kirim peristiwa ke pusat aktivitas tanpa mengatur informasi partisi demi memungkinkan layanan Pusat Aktivitas untuk menyeimbangkan muatan di seluruh partisi. Lihat mulai cepat berikut ini untuk mempelajari cara melakukannya dalam berbagai bahasa pemrograman.
- Kirim peristiwa menggunakan .NET
- Kirim peristiwa menggunakan Java
- Kirim peristiwa menggunakan JavaScript
- Kirim peristiwa menggunakan Python
Mengirim peristiwa ke partisi tertentu
Di bagian ini, Anda mempelajari cara mengirim peristiwa ke partisi tertentu menggunakan bahasa pemrograman yang berbeda.
Untuk mengirim peristiwa ke partisi tertentu, buat batch menggunakan metode EventHubProducerClient.CreateBatchAsync dengan menentukan PartitionId
atau PartitionKey
di CreateBatchOptions. Kode berikut mengirimkan batch peristiwa ke partisi tertentu dengan menentukan kunci partisi. Pusat Aktivitas memastikan bahwa semua peristiwa yang berbagi nilai kunci partisi disimpan bersama dan dikirimkan dalam urutan kedatangan.
var batchOptions = new CreateBatchOptions { PartitionKey = "cities" };
using var eventBatch = await producer.CreateBatchAsync(batchOptions);
Anda juga dapat menggunakan metode EventHubProducerClient.SendAsync dengan menentukan PartitionId atau PartitionKey di SendEventOptions.
var sendEventOptions = new SendEventOptions { PartitionKey = "cities" };
// create the events array
producer.SendAsync(events, sendOptions)
Langkah berikutnya
Anda dapat mempelajari selengkapnya tentang Azure Event Hubs dengan mengunjungi tautan berikut: