Apache Kafka için Azure Event Hubs nedir?

Bu makalede, kendi başınıza bir Kafka kümesi ayarlamadan Apache Kafka uygulamalarından veri akışı yapmak için Azure Event Hubs'ı nasıl kullanabileceğiniz açıklanmaktadır.

Not

Bu özellik yalnızca standart, premium ve ayrılmış katmanlarda desteklenir.

Genel bakış

Azure Event Hubs, kullanıcıların Kafka protokolunu kullanarak olay hub'ına bağlanmasını sağlayan bir olay hub'ına Apache Kafka uç noktası sağlar. Kod değişikliği yapmadan genellikle uygulamalarınızdan olay hub'ınızın Kafka uç noktasını kullanabilirsiniz. Yalnızca yapılandırmayı değiştirirsiniz, yani yapılandırmalardaki bağlantı dizesi bir Kafka kümesine işaret etmek yerine olay hub'ınızın sunduğu Kafka uç noktasına işaret eder. Ardından, Kafka protokollerini kullanan uygulamalarınızdan kafka konularına eşdeğer olay hub'larına olay akışı yapmaya başlayabilirsiniz.

Not

Kafka Ekosistemleri için Event Hubs, Apache Kafka sürüm 1.0 ve üzerini destekler.

Apache Kafka ve Azure Event Hubs kavramsal eşlemesi

Kavramsal olarak Kafka ve Event Hubs birbirine çok benzer. Her ikisi de akış verileri için oluşturulmuş bölümlenmiş günlüklerdir ve istemci, korunan günlüğün hangi bölümünü okumak istediğini denetler. Aşağıdaki tablo Kafka ile Event Hubs arasındaki kavramları eşler.

Kafka Kavramı Event Hubs Kavramı
Küme Ad Alanı
Konu Olay hub'ı
Bölüm Bölüm
Tüketici Grubu Tüketici Grubu
Atlanacak sayı Atlanacak sayı

Apache Kafka ile Azure Event Hubs arasındaki önemli farklar

Apache Kafka genellikle yüklemeniz ve çalıştırmanız gereken bir yazılım olsa da, Event Hubs tam olarak yönetilen, bulutta yerel bir hizmettir. Yönetilip izlenecek sunucu, disk veya ağ yoktur ve hiçbir zaman göz önünde bulundurulacak veya yapılandırılabilir aracı yoktur. Tam etki alanı adına sahip bir uç nokta olan bir ad alanı oluşturursunuz ve ardından bu ad alanı içinde Event Hubs (konular) oluşturursunuz.

Event Hubs ve ad alanları hakkında daha fazla bilgi için bkz . Event Hubs özellikleri. Event Hubs, bulut hizmeti olarak uç nokta olarak tek bir kararlı sanal IP adresi kullandığından istemcilerin küme içindeki aracıları veya makineleri bilmesi gerekmez. Event Hubs aynı protokolü uygulasa da, bu fark tüm bölümler için tüm Kafka trafiğinin bir kümenin tüm aracıları için güvenlik duvarı erişimi gerektirmek yerine bu uç nokta üzerinden tahmin edilebilir şekilde yönlendirildiğini gösterir.

Event Hubs'da ölçeklendirme, satın aldığınız aktarım hızı birimi (TU) veya işleme birimi sayısıyla denetlenmektedir. Standart katman ad alanı için Otomatik Şişir özelliğini etkinleştirirseniz, aktarım hızı sınırına ulaştığınızda Event Hubs TU'ların ölçeğini otomatik olarak artırır. Bu özellik Apache Kafka protokol desteğiyle de çalışır. Premium katman ad alanı için ad alanına atanan işlem birimi sayısını artırabilirsiniz.

Apache Kafka iş yükünüz için doğru çözüm mü?

Apache Kafka kullanarak uygulama oluşturmaktan gelen bu özellik, Azure Event Hubs'ın Azure Service Bus ve Azure Event Grid'i de içeren bir hizmet filosunun parçası olduğunu anlamak da yararlıdır.

Apache Kafka'nın bazı ticari dağıtım sağlayıcıları Apache Kafka'nın tüm mesajlaşma platformu gereksinimleriniz için tek noktadan bir mağaza olduğunu önerse de, gerçek şudur ki Apache Kafka, örneğin rakip tüketici kuyruğu düzenini uygulamaz, abonelerin gelen iletilere düz uzaklıklar dışında sunucu tarafından değerlendirilen kurallara göre erişmesine izin veren bir düzeyde yayımlama-abone olma desteğine sahip değildir. ve bir ileti tarafından başlatılan veya hatalı iletileri bir teslim edilemeyen bir kuyruğa ekleyen bir işin yaşam döngüsünü izleme olanağı yoktur ve bunların tümü birçok kurumsal mesajlaşma senaryosunun temelini oluşturur.

Desenler arasındaki farkları ve hangi desenin hangi hizmetin en iyi şekilde kapsadığı hakkında bilgi edinmek için Bkz . Azure kılavuzunda zaman uyumsuz mesajlaşma seçenekleri. Apache Kafka kullanıcısı olarak, Kafka ile şimdiye kadar gerçekleştirdiğiniz iletişim yollarının Event Grid veya Service Bus kullanılarak çok daha az temel karmaşıklık ve ancak daha güçlü özelliklerle gerçekleştirilebileceğini görebilirsiniz.

Apache Kafka için Event Hubs arabirimi üzerinden kullanılamayan belirli Apache Kafka özelliklerine ihtiyacınız varsa veya uygulama deseniniz Event Hubs kotalarını aşıyorsa, Azure HDInsight'ta yerel bir Apache Kafka kümesi de çalıştırabilirsiniz.

Güvenlik ve kimlik doğrulaması

Kafka için bir Event Hubs'tan olayları her yayımladığınızda veya kullandığınızda, istemciniz Event Hubs kaynaklarına erişmeye çalışıyor. Kaynaklara yetkili bir varlık kullanılarak erişildiğinden emin olmak istiyorsunuz. İstemcilerinizle Apache Kafka protokolü kullanırken, SASL mekanizmalarını kullanarak kimlik doğrulaması ve şifreleme için yapılandırmanızı ayarlayabilirsiniz. Kafka için Event Hubs kullanıldığında TLS şifrelemesi gerekir (Event Hubs ile aktarımdaki tüm veriler TLS şifrelendiğinden), yapılandırma dosyanızda SASL_SSL seçeneği belirtilebilir.

Azure Event Hubs, güvenli kaynaklarınıza erişimi yetkilendirmek için birden çok seçenek sağlar.

  • OAuth 2.0
  • Paylaşılan erişim imzası (SAS)

OAuth 2.0

Event Hubs, OAuth 2.0 uyumlu merkezi yetkilendirme sunucusu sağlayan Microsoft Entra Id ile tümleştirilir. Microsoft Entra Id ile, istemci kimliklerinize ayrıntılı izinler vermek için Azure rol tabanlı erişim denetimini (Azure RBAC) kullanabilirsiniz. Protokol için SASL_SSL ve mekanizma için OAUTHBEARER belirterek bu özelliği Kafka istemcilerinizde kullanabilirsiniz. Azure rolleri ve kapsam belirleme erişimi düzeyleri hakkında ayrıntılı bilgi için bkz . Microsoft Entra Id ile erişimi yetkilendirme.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler

Not

Yukarıdaki yapılandırma özellikleri Java programlama dili içindir. Farklı programlama dillerini kullanarak Kafka için Event Hubs ile OAuth'un nasıl kullanılacağını gösteren örnekler için bkz. GitHub'daki örnekler.

Paylaşılan Erişim İmzası (SAS)

Event Hubs ayrıca Kafka kaynakları için Event Hubs'a temsilci erişimi için Paylaşılan Erişim İmzaları (SAS) sağlar. OAuth 2.0 belirteç tabanlı mekanizma kullanarak erişimi yetkilendirmek, SAS üzerinden üstün güvenlik ve kullanım kolaylığı sağlar. Yerleşik roller, kullanıcı tarafından sürdürülmesi ve yönetilmesi gereken ACL tabanlı yetkilendirme gereksinimini de ortadan kaldırabilir. Protokol için SASL_SSL ve mekanizma için PLAIN belirterek bu özelliği Kafka istemcilerinizle birlikte kullanabilirsiniz.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

Önemli

değerini Event Hubs ad alanınızın bağlantı dizesi ile değiştirin{YOUR.EVENTHUBS.CONNECTION.STRING}. bağlantı dizesi alma yönergeleri için bkz. Event Hubs bağlantı dizesi alma. Aşağıda örnek bir yapılandırma verilmişti: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

Not

Kafka istemcileriyle SAS kimlik doğrulaması kullanılırken, SAS anahtarı yeniden oluşturulduğunda kurulan bağlantıların bağlantısı kesilmez.

Not

Oluşturulan paylaşılan erişim imzası belirteçleri , Apache Kafka uç noktası için Event Hubs kullanılırken desteklenmez.

Örnekler

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ışı.

Diğer Azure Event Hubs özellikleri

Apache Kafka için Event Hubs özelliği, HTTP ve AMQP'yi tamamlayan, Azure Event Hubs'da eşzamanlı olarak kullanılabilen üç protokolden biridir. Geçerli Apache Kafka üreticilerinizin Apache Kafka aracılığıyla yayımlamaya devam edebilmesi için bu protokollerden herhangi biriyle yazıp başka bir protokolle okuyabilirsiniz, ancak okuyucunuz Azure Stream Analytics veya Azure İşlevleri gibi Event Hubs'ın AMQP arabirimiyle yerel tümleştirmeden yararlanabilir. Buna karşılık, Azure Event Hubs'ı AMQP yönlendirme ağlarıyla hedef uç nokta olarak kolayca tümleştirebilir ve apache Kafka tümleştirmeleri aracılığıyla verileri okuyabilirsiniz.

Ayrıca, Azure Blob Depolama ve Azure Data Lake Depolama aracılığıyla yüksek maliyetli uzun süreli arşivleme sağlayan Capture gibi Event Hubs özellikleri ve Coğrafi Olağanüstü Durum Kurtarma, Kafka için Event Hubs özelliğiyle de çalışır.

Bir kez etkililik

Apache Kafka için Azure Event Hubs hem etkili üreticileri hem de aynı anda etkili tüketicileri destekler.

Azure Event Hubs'ın temel kavramlarından biri en az bir kez teslim kavramıdır. Bu yaklaşım, olayların her zaman teslim edilmesini sağlar. Ayrıca olaylar, bir işlev gibi tüketiciler tarafından birden çok kez, hatta tekrar tekrar alınabileceği anlamına gelir. Bu nedenle, tüketicinin etkili tüketici desenini desteklemesi önemlidir.

Apache Kafka ile özellik farklılıkları

Apache Kafka için Event Hubs'ın amacı, Apache Kafka API'sine kilitlenen ve aksi takdirde bir Apache Kafka kümesi tarafından desteklenmesi gereken uygulamalara Azure Event Hubs özelliklerine erişim sağlamaktır.

Yukarıda açıklandığı gibi, Azure Mesajlaşma filosu çok sayıda mesajlaşma senaryosu için zengin ve güçlü bir kapsama sahiptir ve aşağıdaki özellikler şu anda Event Hubs'ın Apache Kafka API desteği aracılığıyla desteklenmese de, istenen özelliğin nerede ve nasıl kullanılabilir olduğunu belirtiriz.

Hareketler

Azure Service Bus , bir işlemin tutarlılık koruması altında birden çok hedef varliğe ileti işlemeden kaynaklanan giden iletiler gönderirken iletileri ve oturumları alma ve kapatmaya olanak tanıyan sağlam işlem desteğine sahiptir. Özellik kümesi, her iletinin sırayla tam olarak bir kez işlenmesine izin verir, aynı zamanda başka bir tüketicinin istemeden Apache Kafka'da olduğu gibi aynı iletileri yeniden işleme riskini de önler. Service Bus, işlem iletisi iş yükleri için önerilen hizmettir.

Sıkıştırma

Apache Kafka'nın istemci tarafı sıkıştırma özelliği, birden çok iletiden oluşan bir toplu işlemi üretici tarafında tek bir iletide sıkıştırır ve toplu işlemi tüketici tarafında açar. Apache Kafka aracısı toplu işlemi özel bir ileti olarak ele alır.

Kafka üretici uygulama geliştiricileri compression.type özelliğini ayarlayarak ileti sıkıştırmayı etkinleştirebilir. Genel önizlemede desteklenen tek sıkıştırma algoritması gzip'dir.

Compression.type = none | gzip

Bu özellik şu anda yalnızca Apache Kafka trafik üreticisi ve tüketici trafiği için desteklenmektedir. AMQP tüketicisi sıkıştırılmış Kafka trafiğini sıkıştırılmış iletiler olarak kullanabilir. Herhangi bir Event Hubs olayının yükü bir bayt akışıdır ve içerik sizin seçtiğiniz bir algoritmayla sıkıştırılabilir ancak genel önizlemede tek seçenek gzip'dir. Kafka sıkıştırmasını kullanmanın avantajları daha küçük ileti boyutu, iletebileceğiniz daha fazla yük boyutu ve daha düşük ileti aracısı kaynak tüketimidir.

Kafka Akışlar

Kafka Akışlar, Apache Kafka açık kaynak projesinin parçası olan ancak Apache Kafka olay aracısından ayrı olan akış analizi için bir istemci kitaplığıdır.

Azure Event Hubs müşterilerinin Kafka Akışlar desteği istemesinin en yaygın nedeni Confluent'in "ksqlDB" ürünüyle ilgilenmeleridir. "ksqlDB", hiçbir satıcının "hizmet olarak yazılım, hizmet olarak platform, hizmet olarak altyapı veya Confluent ürün veya hizmetleriyle rekabet eden diğer benzer çevrimiçi hizmetler" kullanmasına veya "ksqlDB" desteği sunmasına izin verilmemesi gibi lisanslı, özel bir paylaşılan kaynak projesidir. Pratik olarak, ksqlDB kullanıyorsanız Kafka'yı kendiniz çalıştırmanız veya Confluent'in bulut tekliflerini kullanmanız gerekir. Lisans koşulları, lisans tarafından hariç tutulan bir amaç için hizmet sunan Azure müşterilerini de etkileyebilir.

Tek başına ve ksqlDB olmadan Kafka Akışlar, çoğu yerleşik akış SQL arabirimlerine sahip olan ve tümü bugün Azure Event Hubs ile tümleşen birçok alternatif çerçeve ve hizmetten daha az özelliğe sahiptir:

Listelenen hizmetler ve çerçeveler genellikle bağdaştırıcılar aracılığıyla çeşitli kaynaklardan doğrudan olay akışları ve başvuru verileri alabilir. Kafka Akışlar yalnızca Apache Kafka'dan veri alabilir ve bu nedenle analiz projeleriniz Apache Kafka'ya kilitlenir. Diğer kaynaklardan verileri kullanmak için önce Kafka Bağlan çerçevesiyle Apache Kafka'ya veri aktarmanız gerekir.

Azure'da Kafka Akışlar çerçevesini kullanmanız gerekiyorsa, HDInsight üzerinde Apache Kafka size bu seçeneği sağlar. HDInsight üzerinde Apache Kafka, Apache Kafka'nın tüm yapılandırma yönleri üzerinde tam denetim sağlarken hata/güncelleştirme etki alanı yerleşiminden ağ yalıtımına ve izleme tümleştirmesine kadar Azure platformunun çeşitli yönleriyle tam olarak tümleştirilir.

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.