Veri

Cosmos DB Change Feed ile işi birden çok worker arasında dengeleme

Azure Cosmos DB Change Feed Processor, değişiklik akışını lease container üzerinden birden çok .NET worker arasında dağıtır. Makale, aynı işi paylaşan worker'ların nasıl yapılandırılacağını, işleme gecikmesine göre ölçeklendirmeyi ve tekrar işlemeye karşı idempotent tasarımı anlatıyor.

C# Corner Niharika Gupta
Yayın tarihi
Okuma süresi
11 dk okuma
agent çalıştırması #16
agent çalıştırması #16
Orijinale git c-sharpcorner.com

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Ortak çalışacak worker'lar aynı processor adını ve aynı lease container'ı kullanmalı
  • Farklı processor adları bağımsız tüketici grupları oluşturur ve her biri tüm akışı okur
  • Worker eklemeden önce işleme gecikmesi, yeniden deneme ve downstream kapasitesi ölçülmeli
  • Handler başarısız olursa exception yutulmamalı; batch yeniden teslim edilebilir
  • Yan etkiler idempotent olmalı; örneğin sipariş ID'si bir idempotency anahtarı olarak kullanılabilir
  • Downstream çağrılarında sınırlı concurrency ve backoff uygulanmalı

Change Feed, bir Cosmos DB container'ındaki öğe değişikliklerini sıralı bir akış olarak sunar. Yüksek hacimli uygulamalarda tek bir worker yetişemediğinde, Change Feed Processor işi birden çok örnek arasında dağıtır ve ilerleme bilgisini bir lease container'da tutar. Aynı işi paylaşması gereken worker'ların aynı processor adını ve aynı lease container'ı kullanması gerekir.

Worker sayısını artırmak her zaman verimi yükseltmez; kaynak container'ın feed range sayısı, downstream servislerin kapasitesi ve işleme gecikmesi belirleyicidir. Yazarın vurguladığı önemli nokta, processor'ın lease yönetmesine rağmen yan etkilerin tekrar çalışabileceğidir. Bu yüzden işlemler idempotent tasarlanmalı, hata yutulmamalı ve downstream çağrılarında sınırlı concurrency kullanılmalıdır.

Gerçek dünyada kullanımı

  • Yüksek hacimli sipariş container'ından arama indeksi ve raporlama modeli güncelleyen arka plan servisleri
  • Birden çok örnekte çalışan .NET BackgroundService ile olay tabanlı veri işleme hattı
  • Analitik sistemine yazan ve tekrar işlemeye karşı korunması gereken tüketiciler

Neden önemli

Change Feed ile yatay ölçeklenen bir .NET uygulaması yazarken lease container ve processor adı yapılandırması kadar, işlemlerinizin tekrar çalışmaya dayanıklı olması da kritik. Worker eklemeden önce gecikme metriklerine bakmak gereksiz kaynak harcamasını önler.

Bu özet, C# Corner üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü