Aracılığıyla paylaş


Azure Event Hubs için Kafka Akışları

Bu makalede, Azure Event Hubs ile Kafka Streams istemci kitaplığını nasıl sağlayacağımıza ilişkin ayrıntılar sağlanır.

Not

Kafka Streams işlevselliği yalnızca Event Hubs Premium ve Ayrılmış katmanlar için Genel Önizleme'de kullanılabilir.

Genel bakış

Apache Kafka Streams, akış verilerini işlemeye ve Kafka konularında depolanan verilere karşı gerçek zamanlı uygulamalar oluşturmaya yönelik bir çerçeve sağlayan yalnızca Java istemci kitaplığıdır. Çıktı hedef konuya yazılmadan önce kafka konuları ara veriler için veri deposu görevi görürken, tüm işlemenin kapsamı istemciye göre belirlenmiştir.

Event Hubs, kendi Kafka kümenizi çalıştırmaya alternatif olarak mevcut Kafka istemci uygulamalarınızla kullanılacak bir Kafka uç noktası sağlar. Event Hubs, mevcut Kafka uygulamalarınızın çoğuyla çalışır. Daha fazla bilgi için bkz . Apache Kafka için Event Hubs.

Azure Event Hubs ile Kafka Akışlarını Kullanma

Azure Event Hubs hem AMQP hem de Kafka protokollerini yerel olarak destekler. Ancak, uyumlu Kafka Streams davranışını sağlamak için, Kafka istemcileri için bazı varsayılan yapılandırma parametrelerinin güncelleştirilmesi gerekir.

Özellik Event Hubs için varsayılan davranış Kafka akışları için değiştirilmiş davranış Açıklama
messageTimestampType olarak ayarlayın AppendTime olarak ayarlanmalıdır CreateTime Kafka Akışları ekleme zaman damgası yerine oluşturma zaman damgasını kullanır
message.timestamp.difference.max.ms izin verilen maksimum değer 90 gündür Özellik yalnızca geçmiş zaman damgalarını idare etmek için kullanılır. Gelecek saat 1 saat olarak ayarlanır ve değiştirilemez. Bu, Kafka protokol belirtimine uygundur
min.compaction.lag.ms izin verilen maksimum değer iki gündür
Sonsuz saklama konuları her konu bölümü için boyut tabanlı 250 GB kesme
Sonsuz saklama konuları için kayıt API'sini silme Uygulanmadı. Geçici bir çözüm olarak konu güncelleştirilebilir ve sınırlı saklama süresi ayarlanabilir. Bu işlem GA'da yapılacaktır

Dikkat edilecek diğer noktalar

Dikkat edilmesi gereken diğer noktalardan bazıları aşağıdadır.

  • Kafka akış istemci uygulamalarına, akış işleme için geçici konular oluşturabilmek için ad alanlarının tamamı için yönetim, okuma ve yazma izinleri verilmelidir.
  • Geçici konular ve bölümler, verilen ad alanının kotasına göre sayılır. Ad alanı veya küme sağlanırken bunlar dikkate alınmalıdır.
  • "Uzaklık" Deposu için sonsuz saklama süresi, SKU'nun maksimum ileti saklama süresiyle sınırlıdır. Bu katmana özgü değerler için Event Hubs Kotalarını denetleyin.

Bunlar, içindeki konu yapılandırmasını messageTimestampType (olay oluşturma zamanı) yerine AppendTime (günlük ekleme zamanı) kullanacak CreateTime şekilde güncelleştirmektir.

Varsayılan davranışı geçersiz kılmak için (gerekli), aşağıdaki ayar Azure Resource Manager'da (ARM) ayarlanmalıdır.

Not

Güncelleştirilmesi gereken yapılandırmayı vurgulamak için yalnızca ARM şablonunun belirli bölümleri gösterilir.

{
  "parameters": {
    "namespaceName": "contoso-test-namespace",
    "resourceGroupName": "contoso-resource-group",
    "eventHubName": "contoso-event-hub-kafka-streams-test",
    ...
    "parameters": {
      "properties": {
        ...
        "messageTimestampType": "CreateTime",
        "retentionDescription": {
          "cleanupPolicy": "Delete",
          "retentionTimeInHours": -1,
          "tombstoneRetentionTimeInHours": 1
        }
      }
    }
  }
}

Kafka Streams kavramları

Kafka akışları, geliştiricilerin gerçek zamanlı akış senaryolarını daha hızlı kullanmaya başlamasına yardımcı olmak için Kafka üretici ve tüketici API'leri üzerinde basit bir soyutlama katmanı sağlar. Basit kitaplık, iç mesajlaşma katmanı için Apache Kafka uyumlu bir aracıya (Azure Event Hubs gibi) bağlıdır ve hataya dayanıklı yerel durum depolarını yönetir. İşlem API'siyle Kafka akış kitaplığı, tam olarak bir kez işleme ve bir kerede bir kayıt gibi zengin işleme özelliklerini destekler.

Sipariş dışı gelen kayıtlar, olay zamanı tabanlı pencereleme işlemlerinden yararlanıyor.

Not

Kafka Streams belgelerini ve Kafka Streams temel kavramlarını tanımanızı öneririz.

Akışlar

Akış, Kafka konusunun soyut gösterimidir. Her veri kaydının bir anahtar-değer çifti olduğu, sabit veri kayıtlarının sınırsız, sürekli güncelleştirilen bir veri kümesinden oluşur.

Akış işleme topolojisi

Kafka akış uygulaması, işlemci topolojisi tarafından temsil edilen bir DAG (yönlendirilmiş acyclic graph) aracılığıyla hesaplama mantığını tanımlar. İşlemci topolojisi, akışlar (topolojideki kenarlar) ile bağlanan bir işleme adımını temsil eden akış işlemcilerinden (topolojideki düğümler) oluşur.

Akış işlemcileri, belirli özel durumlar dışında yukarı akış işlemcilerine veya aşağı akış işlemcilerine zincirlenebilir:

  • Kaynak işlemciler - Bu işlemcilerin herhangi bir yukarı akış işlemcisi yoktur ve doğrudan bir veya daha fazla akıştan okuma yapılır. Daha sonra aşağı akış işlemcilerine zincirlenebilirler.
  • Havuz işlemcileri - Bu işlemcilerin herhangi bir aşağı akış işlemcisi yoktur ve doğrudan bir akışa yazmaları gerekir.

Akış işleme topolojisi Kafka Streams DSL veya alt düzey İşlemci API'si ile tanımlanabilir.

Akış ve Tablo çiftliği

Akışlar ve tablolar, Kafka Streams DSL tarafından sağlanan ve akış işleme kullanım örnekleri için birlikte bulunması gereken zaman serisini ve ilişkisel veri biçimlerini modelleyen 2 farklı ama kullanışlı soyutlamadır.

Kafka bunu daha da genişletir ve akışlar ile tablolar arasında bir ikililik sağlar.

  • Akış, bir tablonun değişiklik günlüğü olarak kabul edilebilir ve
  • Tablo, akıştaki her anahtarın en son değerinin anlık görüntüsü olarak kabul edilebilir.

Bu ikililik, kullanım örneğinin gerektirdiği şekilde tabloların ve akışların birbirinin yerine kullanılmasını sağlar.

Örneğin:

  • Statik müşteri verilerini (tablo olarak modellenmiş) dinamik işlemlerle birleştirme (akış olarak modellenmiş) ve
  • Bir günlük tüccarlar portföyündeki değişen portföy pozisyonlarını (akış olarak modellenmiş) en son pazar veri akışıyla (akış olarak modellenmiş) birleştirme.

Saat

Kafka Streams, pencereleme ve yetkisiz kullanım işlevlerinin sıra dışı veri kayıtlarının alınmasına ve işlemeye dahil edilmesine olanak tanır. Bu davranışın belirleyici olduğundan emin olmak için Kafka akışlarında ek zaman bildirimleri vardır. Bu modüller şunlardır:

  • Oluşturma zamanı ('Olay zamanı' olarak da bilinir) - Bu, olayın gerçekleştiği ve veri kaydının oluşturulduğu zamandır.
  • İşleme süresi - Bu, veri kaydının akış işleme uygulaması tarafından işlendiği zamandır (veya tüketildiğinde).
  • Ekleme zamanı ('Oluşturma zamanı' olarak da bilinir) - Bu, verilerin Kafka aracısı depolama alanına depolandığı ve işlendiği zamandır. Bu, olayın oluşturulması ile aracı tarafından gerçek alım arasındaki zaman farkı nedeniyle oluşturma zamanından farklıdır.

Durum bilgisi olan işlemler

Durum yönetimi, farklı akışlardan verileri birleştirme ve toplama gibi gelişmiş akış işleme uygulamaları sağlar. Bu, Kafka Streams tarafından sağlanan durum depolarıyla sağlanır ve Kafka Streams DSL'deki durum bilgisi olan işleçler kullanılarak erişilir.

DSL'deki durum bilgisi olan dönüştürmeler şunlardır:

Pencere ve yetkisiz kullanım

Kafka Streams DSL'deki pencereleme işlemleri, geliştiricilerin toplamalar ve birleştirmeler gibi durum bilgisi olan işlemler için belirli bir anahtar için kayıtların nasıl gruplandırıldıklarını denetlemesine olanak sağlar.

Pencereleme işlemleri, belirli bir pencere için sıra dışı kayıtlar için bazı esneklik sağlamak üzere yetkisiz kullanım süresi belirtimine de izin verir. Belirli bir pencereye yönelik olan ve verilen pencereden sonra gelen ancak yetkisiz kullanım süresi içinde gelen kayıt kabul edilir. Yetkisiz kullanım süresi sona erdikten sonra gelen kayıtlar atılır.

Uygulamalar, sıra dışı kayıtlarda hataya dayanıklılığı geliştirmek için pencereleme ve yetkisiz kullanım süresi denetimlerini kullanmalıdır. Uygun değerler iş yüküne göre değişir ve ampirik olarak tanımlanmalıdır.

İşleme garantileri

İş ve teknik kullanıcılar, akış işleme iş yüklerinin çıktısından önemli iş içgörülerini ayıklamak ister ve bu da yüksek işlem garantisi gereksinimlerine dönüşür. Kafka akışları, kafka uyumlu aracıların (Azure Event Hubs gibi) temel alınan depolama sistemiyle tümleştirerek işlem garantileri sağlamak için Kafka işlemleriyle birlikte çalışarak uzaklık işlemelerinin ve durum deposu güncelleştirmelerinin atomik olarak yazılmasını sağlar.

İşlemsel işleme garantileri sağlamak için Kafka processing.guarantee Streams yapılandırmalarındaki ayarın varsayılan değerinden at_least_once exactly_once_v2 (Apache Kafka 2.5'teki veya sonraki istemci sürümleri için) veya exactly_once (Apache Kafka 2.5.x'ten önceki istemci sürümleri için) güncelleştirilmesi gerekir.

Sonraki adımlar

Bu makalede Kafka için Event Hubs'a giriş sağlanmıştır. Daha fazla bilgi edinmek için bkz . Azure Event Hubs için Apache Kafka geliştirici kılavuzu.

Sas veya OAuth kullanarak olay hub'ı oluşturma ve bu hub'a erişmeye yönelik adım adım yönergeler içeren bir öğretici için bkz. Hızlı Başlangıç: Kafka protokolunu kullanarak Event Hubs ile veri akışı.

Ayrıca GitHub'da OAuth örneklerine bakın.