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.
Kafka uygulamalarınızı Azure Event Hubs'a geçirme hakkında daha fazla bilgi edinmek için lütfen geçiş kılavuzuna bakın.
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ı |
Azure Event Hubs'da desteklenen Apache Kafka özellikleri
Kafka Akışları
Not
Kafka Streams şu anda Premium ve Ayrılmış katmanda Genel önizleme aşamasındadır.
Kafka Streams, 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, Kafka Streams istemci kitaplığını destekler ve burada ayrıntılar ve kavramlar sağlanır.
Azure Event Hubs müşterilerinin Kafka Streams 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 Streams, ç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:
- Azure Stream Analytics
- Azure Synapse Analytics (Event Hubs Capture aracılığıyla)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- AKS üzerinde HDInsight üzerinde Apache Flink
- Akka Akarsuları
Kafka İşlemleri
Not
Kafka İşlemleri şu anda Premium ve Ayrılmış katmanda Genel önizleme aşamasındadır.
Azure Event Hubs, Kafka işlemlerini destekler. Destek ve kavramlarla ilgili daha fazla ayrıntıya buradan ulaşabilirsiniz
Sıkıştırma
Not
Event Hubs için Kafka sıkıştırması şu anda yalnızca Premium ve Ayrılmış katmanlarda desteklenmektedir.
Apache Kafka istemcilerindeki istemci tarafı sıkıştırma özelliği, birden çok iletiden oluşan bir toplu işlemi üretici tarafında tek bir iletiye sıkıştırarak ve tüketici tarafında toplu işlemi açarak işlem kaynaklarını ve bant genişliğini korur. 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. Azure Event Hubs şu anda sıkıştırmayı desteklemektedir gzip
.
Compression.type = none | gzip
Özellik yalnızca Apache Kafka trafik üreticisi ve tüketici trafiği için desteklense de AMQP tüketicisi sıkıştırılmış Kafka trafiğini sıkıştırılmış iletiler olarak kullanabilir.
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 Storage aracılığıyla son derece düşük 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.
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ışı.