Share via


Azure Cosmos DB değişiklik akışını okuma

UYGULANANLAR: NoSQL

Anında iletme modeli veya çekme modeli kullanarak Azure Cosmos DB değişiklik akışıyla çalışabilirsiniz. Bir gönderme modeliyle, değişiklik akışı işlemcisi bu işi işlemek için iş mantığı olan bir istemciye çalışır. Ancak, son işlenen çalışma için iş denetimi ve depolama durumu karmaşıklığı, değişiklik akışı işlemcisi içinde işlenir.

Çekme modeliyle istemcinin işi sunucudan çekmesi gerekir. Bu durumda istemci, yalnızca işi işlemek için iş mantığına sahip olmakla kalmaz, aynı zamanda son işlenen çalışma için durum depolamaya, birden çok istemcide yük dengelemeyi paralel olarak işler ve hataları işler.

Azure Cosmos DB değişiklik akışından okurken, aşağıdakiler konusunda endişelenmeniz gerekmeyeceğinden genellikle anında iletme modeli kullanmanızı öneririz:

  • Gelecekteki değişiklikler için değişiklik akışını yoklama.
  • Son işlenen değişiklik için depolama durumu. Değişiklik akışı işlemcisinden okuyorsanız, durum otomatik olarak bir kira kapsayıcısında depolanır.
  • Değişiklikleri kullanan birden çok istemci arasında yük dengeleme. Örneğin, bir istemci değişiklikleri işlemeye ayak uyduramıyorsa ve başka bir istemci kullanılabilir kapasiteye sahipse.
  • Hataları işleme. Örneğin, kodda işlenmeyen bir özel durum veya geçici bir ağ sorunundan sonra doğru şekilde işlenmeyen başarısız değişiklikleri otomatik olarak yeniden deneme.

Azure Cosmos DB değişiklik akışını kullanan senaryoların çoğu, gönderme modeli seçeneklerinden birini kullanır. Ancak, çekme modelinin ek düşük düzey denetimini isteyebileceğiniz bazı senaryolar vardır. Bu modüller şunlardır:

  • Belirli bir bölüm anahtarından değişiklikleri okuma
  • İstemcinizin işlenmek üzere değişiklik alma hızını denetleme
  • Değişiklik akışındaki mevcut verilerin tek seferlik okunmasını yapma (örneğin, veri geçişi yapmak için)

Anında iletme modeliyle değişiklik akışını okuma

Anında iletme modeli kullanmak, değişiklik akışından okumanın en kolay yoludur. Anında iletme modeliyle değişiklik akışından okumanın iki yolu vardır: Azure Cosmos DB tetikleyicilerini ve değişiklik akışı işlemcisini Azure İşlevleri. Azure İşlevleri arka planda değişiklik akışı işlemcisini kullandığından, bunların ikisi de değişiklik akışını okumak için benzer yöntemlerdir. Azure İşlevleri değişiklik akışı işlemcisi için bir barındırma platformu olarak düşünün, değişiklik akışını okumanın tamamen farklı bir yolu değil.

Azure İşlevleri

değişiklik akışını kullanmaya yeni başlıyorsanız en basit seçenek Azure İşlevleri. Basitliği nedeniyle, çoğu değişiklik akışı kullanım örneği için de önerilen seçenektir. Azure Cosmos DB için bir Azure İşlevleri tetikleyicisi oluşturduğunuzda, bağlanacak kapsayıcıyı seçersiniz ve kapsayıcıda bir değişiklik olduğunda Azure İşlevi tetiklenir. Azure İşlevleri arka planda değişiklik akışı işlemcisini kullandığından, kapsayıcınızın bölümleri arasında değişiklik işlemeyi otomatik olarak paralelleştirir.

Azure İşlevleri ile geliştirme kolay bir deneyimdir ve değişiklik akışı işlemcisini kendi başınıza dağıtmaktan daha hızlı olabilir. Tetikleyiciler Azure İşlevleri portalı kullanılarak veya SDK'lar kullanılarak program aracılığıyla oluşturulabilir. Visual Studio ve VS Code, Azure İşlevleri yazma desteği sağlar ve platformlar arası geliştirme için Azure İşlevleri CLI'yi bile kullanabilirsiniz. Masaüstünüzde kodu yazabilir ve hatalarını ayıklayabilir ve ardından işlevi tek bir düğmeyle dağıtabilirsiniz. Daha fazla bilgi edinmek için bkz. Azure İşlevleri kullanarak sunucusuz veritabanı bilgi işlemi ve Azure İşlevleri makalelerle değişiklik akışını kullanma.

Akış işlemci kitaplığını değiştirme

Desteklenen SDK’lar

.Net V3 Java Node.JS Python

Değişiklik akışı işlemcisi, değişiklik akışı hakkında daha fazla denetim sağlar ve en karmaşıklığı gizlemeye devam eder. Değişiklik akışı işlemci kitaplığı, işleme işlevinizin kitaplık tarafından çağrıldığı gözlemci desenini izler. Değişiklik akışı işlemcisi değişiklikleri otomatik olarak denetler ve değişiklik bulunursa bunları istemciye "gönderin". Yüksek aktarım hızı değişiklik akışınız varsa, değişiklik akışını okumak için birden çok istemci örneği oluşturabilirsiniz. Değişiklik akışı işlemcisi yükü otomatik olarak farklı istemciler arasında böler. Birden çok istemcide yük dengeleme için herhangi bir mantık veya kiralama durumunu korumak için herhangi bir mantık uygulamanız gerekmez.

Değişiklik akışı işlemcisi tüm değişikliklerin "en az bir kez" teslimini garanti eder. Başka bir deyişle, değişiklik akışı işlemcisini kullanırsanız, işleme işleviniz değişiklik akışındaki her öğe için başarıyla çağrılır. İşleme işlevinizde iş mantığında işlenmeyen bir özel durum varsa, başarısız değişiklikler başarıyla işlenene kadar yeniden denenecektir. Değişiklik akışı işlemcinizin sürekli olarak aynı değişiklikleri yeniden denemesini önlemek için, işlem işlevinize özel durum üzerine bir teslim edilemeyen ileti kuyruğuna belge yazmak için mantık ekleyin. Hata işleme hakkında daha fazla bilgi edinin.

Azure İşlevleri hataları işleme önerisi aynıdır. Yine de temsilci kodunuzda, özel durum dışında, bir teslim edilemeyen ileti kuyruğuna belge yazmak için mantık eklemeniz gerekir. Ancak Azure İşlevinizde işlenmeyen bir özel durum varsa, özel durumu oluşturan değişiklik otomatik olarak yeniden denenmeyecektir. İş mantığında işlenmeyen bir özel durum varsa, Azure İşlevi sonraki değişikliği işlemeye devam eder. Azure İşlevi aynı başarısız değişikliği yeniden denemez.

Azure İşlevleri gibi değişiklik akışı işlemci kitaplığıyla geliştirme de kolaydır. Ancak, değişiklik akışı işlemcisi için bir veya daha fazla ana bilgisayar dağıtmak sizin sorumluluğundadır. Konak, değişiklikleri dinlemek için değişiklik akışı işlemcisini kullanan bir uygulama örneğidir. Azure İşlevleri otomatik ölçeklendirme özelliklerine sahip olsa da konaklarınızı ölçeklendirmek sizin sorumluluğunuzdadır. Daha fazla bilgi edinmek için bkz . Değişiklik akışı işlemcisini kullanma. Değişiklik akışı işlemci kitaplığı, Azure Cosmos DB SDK V3'ün bir parçasıdır.

Çekme modeliyle değişiklik akışını okuma

Değişiklik akışı çekme modeli , değişiklik akışını kendi hızınızda kullanmanıza olanak tanır. Değişiklikler istemci tarafından istenmelidir ve değişiklikler için otomatik yoklama yoktur. Son işlenen değişikliği (gönderme modelinin kira kapsayıcısına benzer şekilde) kalıcı olarak "yer işareti" eklemek istiyorsanız, bir devamlılık belirtecini kaydetmeniz gerekir.

Değişiklik akışı çekme modelini kullanarak değişiklik akışında daha düşük düzeyde denetim elde edersiniz. Çekme modeliyle değişiklik akışını okurken üç seçeneğiniz vardır:

Değişiklik akışı işlemcisinde olduğu gibi, değişikliklerin birden çok istemcide işlenmesini paralel hale getirebilirsiniz. Ancak, çekme modeli istemciler arasında yük dengelemeyi otomatik olarak işlemez. Değişiklik akışının işlenmesini paralelleştirmek için çekme modelini kullandığınızda, önce FeedRanges listesini alırsınız. FeedRange, bir bölüm anahtarı değerleri aralığına yayılmıştır. FeedRanges'ı edinen ve makineleriniz arasında dağıtan bir düzenleyici işleminiz olması gerekir. Daha sonra, birden çok makinenin değişiklik akışını paralel olarak okumasını sağlamak için bu FeedRanges'leri kullanabilirsiniz.

Çekme modeliyle yerleşik "en az bir kez" teslim garantisi yoktur. Çekme modeli, hataları nasıl işlemek istediğinize karar vermek için düşük düzeyde denetim sağlar.

Cassandra ve MongoDB API'lerinde değişiklik akışı

Değişiklik akışı işlevi, MongoDB için API'de değişiklik akışları ve Cassandra için API'de koşul içeren Sorgu olarak ortaya çıkar. MongoDB API'sinin uygulama ayrıntıları hakkında daha fazla bilgi edinmek için Bkz . MongoDB için Azure Cosmos DB'de akışları değiştirme.

Yerel Apache Cassandra, CDC günlüğü için yapılandırılabilir bir disk boyutuna ulaşıldıktan sonra belirli tabloları arşivleme ve yazmaları reddetmeye yönelik bir mekanizma olan değişiklik veri yakalama (CDC) sağlar. Apache Cassandra için Azure Cosmos DB'deki değişiklik akışı özelliği, CQL aracılığıyla koşul ile değişiklikleri sorgulama özelliğini geliştirir. Uygulama ayrıntıları hakkında daha fazla bilgi edinmek için bkz . Apache Cassandra için Azure Cosmos DB'de değişiklik akışı.

Sonraki adımlar

Artık aşağıdaki makalelerde değişiklik akışı hakkında daha fazla bilgi edinmeye devam edebilirsiniz: