Event Hubs’da kullanılabilirlik ve tutarlılık

Bu makalede, Azure Event Hubs tarafından desteklenen kullanılabilirlik ve tutarlılık hakkında bilgi sağlanır.

Kullanılabilirlik

Azure Event Hubs, tek tek makinelerin ve hatta eksiksiz rafların yıkıcı arıza riskini, bir veri merkezindeki birden çok hata etki alanına yayılan kümeler arasında yayılım. Saydam hata algılama ve yük devretme mekanizmaları uygular, böylece hizmet garanti edilen hizmet düzeylerinde ve genellikle bu tür hatalar oluştuğunda fark edilebilir kesintiler olmadan çalışmaya devam eder.

Kullanılabilirlik alanları olan bir bölgede Bir Event Hubs ad alanı oluşturulursa, kesinti riski fiziksel olarak ayrılmış üç tesise daha yayılır ve hizmetin tüm tesisin tam ve yıkıcı kaybıyla anında başa çıkmak için yeterli kapasite rezervi vardır. Daha fazla bilgi için bkz. Azure Event Hubs - Coğrafi olağanüstü durum kurtarma.

bir istemci uygulaması bir bölüm belirtmeden olayları bir olay hub'ına gönderdiğinde, olaylar olay hub'ınızdaki bölümler arasında otomatik olarak dağıtılır. Herhangi bir nedenle bir bölüm kullanılamıyorsa, olaylar kalan bölümler arasında dağıtılır. Bu davranış, en fazla sürenin dolmasını sağlar. Maksimum çalışma süresi gerektiren kullanım örnekleri için, olayları belirli bir bölüme göndermek yerine bu model tercih edilir.

Tutarlılık

Bazı senaryolarda olayların sıralanması önemli olabilir. Örneğin, arka uç sisteminizin silme komutu öncesinde bir güncelleştirme komutunu işlemesini isteyebilirsiniz. Bu senaryoda, bir istemci uygulaması sıralamanın korunması için olayları belirli bir bölüme gönderir. Bir tüketici uygulaması bölümden bu olayları tükettiğinde, sırayla okunur.

Bu yapılandırmayla, gönderdiğiniz belirli bölüm kullanılamıyorsa bir hata yanıtı alabileceğinizi unutmayın. Karşılaştırma noktası olarak, tek bir bölüme benziniminiz yoksa Event Hubs hizmeti olayınızı bir sonraki kullanılabilir bölüme gönderir.

Bu nedenle, yüksek kullanılabilirlik en önemliyse, belirli bir bölümü hedeflemeyin (bölüm kimliği/anahtarı kullanarak). Bölüm kimliği/anahtarı kullanıldığında olay hub'ının kullanılabilirliği bölüm düzeyine düşürüler. Bu senaryoda kullanılabilirlik (bölüm kimliği/anahtarı olmadan) ile tutarlılık (olayları belirli bir bölüme sabitleme) arasında açık bir seçim yapıyorsunuz. Event Hubs'daki bölümler hakkında ayrıntılı bilgi için bkz. Bölümler.

Ek

Bölüm belirtmeden olayları gönderme

Event Hubs hizmetinin bölümler arasında yükü dengelemesine izin vermek için bölüm bilgilerini ayarlamadan olay hub'ına olay göndermenizi öneririz. Bunun farklı programlama dillerinde nasıl yapılacağını öğrenmek için aşağıdaki hızlı başlangıçlara bakın.

Olayları belirli bir bölüme gönderme

Bu bölümde, farklı programlama dillerini kullanarak olayları belirli bir bölüme göndermeyi öğreneceksiniz.

Olayları belirli bir bölüme göndermek için, CreateBatchOptions içinde veya PartitionKey belirterek PartitionIdEventHubProducerClient.CreateBatchAsync yöntemini kullanarak toplu işlemi oluşturun. Aşağıdaki kod, bir bölüm anahtarı belirterek belirli bir bölüme toplu olaylar gönderir. Event Hubs, bölüm anahtarı değerini paylaşan tüm olayların birlikte depolanmasını ve varma sırasına göre teslim edilmesini sağlar.

var batchOptions = new CreateBatchOptions { PartitionKey = "cities" };
using var eventBatch = await producer.CreateBatchAsync(batchOptions);

Ayrıca, SendEventOptions içinde PartitionId veya PartitionKey belirterek EventHubProducerClient.SendAsync yöntemini de kullanabilirsiniz.

var sendEventOptions  = new SendEventOptions { PartitionKey = "cities" };
// create the events array
producer.SendAsync(events, sendOptions)

Sonraki adımlar

Aşağıdaki bağlantıları inceleyerek Event Hubs hakkında daha fazla bilgi edinebilirsiniz: