Apache Kafka uygulamalardan Azure Event Hubs kullanma
Event Hubs, kendi Apache Kafka kümenizi çalıştırmaya alternatif olarak, mevcut Apache Kafka istemci uygulamaları tarafından kullanılabilen Apache Kafka® üretici ve tüketici API 'Leri ile uyumlu bir uç nokta sağlar. Event Hubs, sürüm 1,0 ve üzeri sürümlerde Apache Kafka üreticisi ve tüketici API 'Lerini destekler.
Kafka için Event Hubs neler sağlar?
Apache Kafka özelliği için Event Hubs, Azure Event Hubs 'nin en üstünde yer alan ve Apache Kafka sunucu sürümleri 1,0 ve üzeri için oluşturulmuş Apache Kafka istemcilerle uyumlu olan ve Event Hubs ile okuma ve yazma için destekler.
Event Hubs Kafka uç noktasını, mevcut Kafka kuruluma kıyasla kod değişikliği yapmadan ve yalnızca yapılandırmayı değiştirebilmeniz gerekir: yapılandırmalarda bağlantı dizesini, Kafka kümenize işaret etmek yerine olay hub 'ınız tarafından sunulan Kafka uç noktasını işaret etmek üzere güncelleştirebilir. Daha sonra, Kafka protokolünü kullanan uygulamalarınızdan akış olaylarını Event Hubs ' a başlatabilirsiniz.
Kavramsal olarak, Kafka ve Event Hubs çok benzerdir: her ikisi de akış verileri için oluşturulan bölümlenmiş günlüklerdir ve bu, istemcinin hangi tutulan günlüğün okumak istediğini bir parçasını kontrol eder. Aşağıdaki tabloda Kafka ve Event Hubs arasındaki kavramlar eşlenir.
Kafka ve Event hub kavramsal eşleme
| Kafka kavram | Event Hubs kavram |
|---|---|
| Küme | Ad Alanı |
| Konu | Olay Hub'ı |
| Bölüm | Bölüm |
| Tüketici grubu | Tüketici grubu |
| Uzaklık | Uzaklık |
Apache Kafka ve Event Hubs arasındaki önemli farklılıklar
Apache Kafka , genellikle tam olarak yönetilen, bulut Yerel bir hizmet olan Event Hubs yüklemeniz ve çalıştırmanız gereken bir yazılımdır. Yönetilmesi ve izlenmesi gereken hiçbir sunucu, disk veya ağ yok ve göz önünde bulundurulacak veya yapılandırabileceğiniz aracılar yok. Tam etki alanı adına sahip bir uç nokta olan bir ad alanı oluşturun ve ardından bu ad alanı içinde Event Hubs (konular) oluşturun.
Event Hubs ve ad alanları hakkında daha fazla bilgi için bkz. Event Hubs özellikleri. Bulut hizmeti olarak Event Hubs, uç nokta olarak tek bir kararlı sanal IP adresi kullanır, bu nedenle istemcilerin bir küme içindeki aracılar veya makineler hakkında bilmeleri gerekmez. Event Hubs aynı protokolü uygulasa da, bu fark tüm bölümlerin tüm Kafka trafiğinin bir kümenin tüm aracıları için güvenlik duvarı erişimi gerektirmek yerine bu uç nokta aracılığıyla tahmin edilebilir olduğu anlamına gelir.
Event Hubs ölçek, kaç üretilen iş birimi (DTU) veya işleme birimi satın alırken denetlenir. Standart katman ad alanı için Otomatik Şişir özelliğini etkinleştirirseniz, verimlilik sınırına ulaştığınızda Event Hubs otomatik olarak ölçek ölçeği ölçeklendirir. Bu özellik, Apache Kafka protokol desteğiyle de çalışır. Premier katman ad alanı için ad alanına atanan işleme birimi sayısını artırabilirsiniz.
İş yükünüz için doğru çözüm Apache Kafka mı?
Apache Kafka kullanarak uygulama oluşturma işleminden sonra, azure Event Hubs 'ın azure Service Busve Azure Event Gridde dahil olmak üzere bir dizi hizmetin parçası olduğunu anlamak da faydalı olur.
Apache Kafka ticari dağıtımların tüm sağlayıcıları, tüm mesajlaşma platformu gereksinimleriniz için Apache Kafka tek bir-bir-bir ön mağaza olduğunu öneriyorsa, gerçekliğin Apache Kafka uygulamadığından, örneğin, rekabet eden tüketici sırası deseninin, abone olunmasına izin veren bir düzeyde, abonelerin, düz uzaklıklar dışında sunucu tarafından değerlendirilen kurallara göre gelen iletilere erişmesini sağlayan bir düzeyde Yayımla-Subscribe desteği yoktur, Ayrıca, bir ileti tarafından başlatılan bir işin yaşam döngüsünü izlemeye veya hatalı iletileri, hepsi birçok kurumsal mesajlaşma senaryosunda temel alınan bir atılacak ileti kuyruğuna yansıtmaya yönelik hiçbir tesis yoktur.
Desenler arasındaki farkları ve hangi modelin hangi hizmet tarafından en iyi ele alındığı anlamak için bkz. Azure kılavuzundaki zaman uyumsuz mesajlaşma seçenekleri . Apache Kafka Kullanıcı olarak, Kafka ile ilgili olan iletişim yollarının, en az temel karmaşıklıkla ve Event Grid ya da Service Bus kullanarak daha güçlü bir özellik ile gerçekleştirilmiş olduğunu fark edebilirsiniz.
Apache Kafka arabirimi için Event Hubs aracılığıyla kullanılamayan Apache Kafka belirli özelliklerine ihtiyacınız varsa veya uygulama düzeniniz Event Hubs kotalarınıaşarsa, Azure HDInsight 'ta yerel bir Apache Kafka kümeside çalıştırabilirsiniz.
Güvenlik ve kimlik doğrulaması
Kafka için bir Event Hubs olay yayımlamanı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. İstemcileriniz ile Apache Kafka Protokolü kullanırken, SASL mekanizmalarını kullanarak kimlik doğrulama ve şifreleme için yapılandırmanızı ayarlayabilirsiniz. Kafka için Event Hubs kullandığınızda TLS şifrelemesi gerekir (Event Hubs ile iletim içindeki tüm veriler TLS şifreli olarak), yapılandırma dosyanızda SASL_SSL seçeneğinin belirlenmesi yapılabilir.
Azure Event Hubs, güvenli kaynaklarınıza erişim yetkisi vermek 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 bir yetkilendirme sunucusu sağlayan Azure Active Directory (Azure AD) ile tümleşir. Azure AD ile, istemci kimliklerinize ayrıntılı izinler vermek için Azure rol tabanlı erişim denetimi 'ni (Azure RBAC) kullanabilirsiniz. Bu özelliği, mekanizmaya yönelik protokol ve Oauthtaşıyıcı için SASL_SSL belirterek, Kafka istemcileriniz ile kullanabilirsiniz. Erişimin kapsamını belirlemek için Azure rolleri ve düzeyleri hakkında daha fazla bilgi için bkz. Azure AD ile erişim yetkisi verme.
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
Paylaşılan Erişim İmzası (SAS)
Event Hubs Ayrıca, Kafka kaynakları için Event Hubs temsilci erişimi için paylaşılan erişim imzaları (SAS) sağlar. OAuth 2,0 belirteç tabanlı mekanizmayı kullanarak erişimi yetkilendirmek, SAS üzerinde üstün güvenlik ve kullanım kolaylığı sağlar. Yerleşik roller Ayrıca, Kullanıcı tarafından saklanması ve yönetilmesi gereken ACL tabanlı yetkilendirme gereksinimini ortadan kaldırabilir. Bu özelliği protokol için SASL_SSL ve mekanizma için düz olarak belirterek Kafka istemcileriniz ile 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
{YOUR.EVENTHUBS.CONNECTION.STRING}Event Hubs ad alanınız için bağlantı dizesiyle değiştirin. Bağlantı dizesini alma hakkında yönergeler için bkz. Event Hubs bağlantı dizesi alma. Örnek bir yapılandırma aşağıda verilmiştir: 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
SAS kimlik doğrulaması Kafka istemcilerle kullanılırken, SAS anahtarı yeniden üretildiğinde kurulan bağlantıların bağlantısı kesilmez.
Örnekler
Bir olay hub 'ı oluşturmak ve SAS veya OAuth kullanarak buna erişmek için adım adım yönergeler içeren bir öğretici için bkz. hızlı başlangıç: Kafka protokolünü kullanarak Event Hubs veri akışı.
Kafka için Event Hubs ile OAuth 'ın nasıl kullanılacağını gösteren daha fazla örnek için bkz. GitHub örnekleri.
Diğer Event Hubs özellikleri
Apache Kafka özelliğinin Event Hubs, Azure Event Hubs 'da bulunan üç protokollerden biridir, HTTP ve AMQP 'yi ele alır. Geçerli Apache Kafka üreticileri Apache Kafka aracılığıyla yayımlamaya devam edebilmesi için, bu protokollerden herhangi biriyle yazabilir ve diğer kişilerle okuyabilirsiniz, ancak okuyucunuz Azure Stream Analytics veya Azure Işlevleri gibi Event Hubs ' AMQP arabirimi ile yerel tümleştirmeden faydalanabilir. Buna karşılık, Azure Event Hubs ' i AMQP yönlendirme ağlarında bir hedef uç nokta olarak kolayca tümleştirebilir ve Apache Kafka tümleştirmeler aracılığıyla veri okuyabilirsiniz.
ayrıca, Azure Blob Depolama ve Azure Data Lake Storage ve coğrafi olağanüstü durum kurtarma gibi çok uzun süreli arşivlemeyi sağlayan yakalagibi özellikleri Event Hubs, ayrıca, Kafka özelliği için Event Hubs ile de çalışır.
Apache Kafka özellik farklılıkları
Apache Kafka için Event Hubs amacı, Azure Event hub 'ının Apache Kafka API 'sine kilitlenen ve aksi halde bir Apache Kafka kümesi tarafından desteklenen uygulamalara erişim sağlamaktır.
Yukarıdaaçıklandığı gibi, Azure Messaging filo, çok sayıda mesajlaşma senaryosu için zengin ve sağlam kapsam sağlar ve aşağıdaki özellikler Şu anda Apache Kafka API 'si için Event Hubs ' desteği aracılığıyla desteklenmese de, istenen yeteneğin nerede ve nasıl kullanılabilir olduğunu işaret ediyoruz.
İşlemler
Azure Service Bus , ileti işlemeden kaynaklanan giden mesajları, bir işlemin tutarlılık koruması altında birden fazla hedef varlığa gönderen iletiler gönderilirken ileti ve oturumları almaya ve kapatmanıza izin veren güçlü işlem desteğine sahiptir. Özellik kümesi, bir dizideki her bir iletinin yalnızca bir kez işlenmesini sağlar, ancak aynı zamanda başka bir tüketicinin yanlışlıkla aynı iletileri yeniden işlemesini önler Apache Kafka. Service Bus, işlem iletisi iş yükleri için önerilen hizmettir.
Sıkıştırma
Apache Kafka istemci tarafı sıkıştırma özelliği, birden çok iletinin bir toplu işini üretici tarafında tek bir iletiyle sıkıştırır ve toplu işi Tüketici tarafında açar. Apache Kafka Aracısı toplu işi özel bir ileti olarak değerlendirir.
Bu özellik Azure Event Hubs ' çoklu protokol modeliyle gürültü ' ye temelde göre, toplu halde gönderilen iletilerin, aracıdan ve herhangi bir protokol aracılığıyla tek tek alınabilir olmasını sağlar.
Herhangi bir olay hub 'ı olayının yükü bir bayt akışıdır ve içerik, seçtiğiniz bir algoritmayla sıkıştırılabilir. Apache avro Encoding biçimi yerel olarak sıkıştırmayı destekler.
Günlük düzenleme
Apache Kafka günlük sıkıştırma, bir bölümden her bir anahtarın son kaydının hariç olmasına izin veren bir özelliktir. Bu özellik, bir Apache Kafka konusunu son değer eklenen bir öncekini geçersiz kılarsa anahtar-değer deposuna etkin bir şekilde döndürür. Bu özellik şu anda Azure Event Hubs tarafından uygulanmıyor. anahtar-değer depolama alanı, sık sık güncelleştirmelerle birlikte Azure Cosmos DBgibi veritabanı hizmetleri tarafından en iyi şekilde desteklenmektedir. Daha fazla bilgi için bkz. günlük projeksiyonu.
Kafka Akışlar
Kafka Akışlar, Apache Kafka açık kaynaklı projenin parçası olan, ancak Apache Kafka olay akışı aracılarından ayrı olan stream analytics için bir istemci kitaplığıdır.
Azure Event Hubs müşterilerinin Kafka Akışlar desteğini sormasının en yaygın nedeni, "ksqldb" ürünüyle ilgilendikleri içindir. "ksqlDB", hiçbir satıcı, "hizmet olarak yazılım", hizmet olarak platform, hizmet olarak altyapı veya "ksqlDB" desteğini kullanma izni verilen başka benzer çevrimiçi hizmetler lisanslı, lisanslı bir özel kaynak projem ' dir. Pratikte, ksqlDB kullanıyorsanız, Kafka kendiniz çalıştırmalısınız ya da confluent 'in bulut tekliflerini kullanmanız gerekir. Lisanslama Koşulları, lisans tarafından dışlanan bir amaç için hizmet sunan Azure müşterilerini de etkileyebilir.
tek başına ve ksqldb olmadan, Kafka Akışlar, çoğu alternatif çerçeve ve hizmetten daha az özelliğe sahiptir; çoğu, yerleşik akış SQL arabirimlerine sahiptir ve Azure Event Hubs bugün ile tümleştirilebilir.
- Azure Akış Analizi
- Azure SYNAPSE Analytics (Event Hubs yakalama aracılığıyla)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flınk
- akka Akışlar
Listelenen hizmetler ve çerçeveler genellikle bağdaştırıcılar aracılığıyla çok çeşitli kaynaklardan olay akışları ve başvuru verileri alabilir. Kafka Akışlar, yalnızca Apache Kafka verileri alabilir ve analiz projeleriniz Apache Kafka ' de kilitlidir. diğer kaynaklardaki verileri kullanmak için, önce Kafka Bağlan çerçevesiyle Apache Kafka verileri içeri aktarmanız gerekir.
Azure 'da Kafka Akışlar çerçevesini kullanmanız gerekiyorsa, hdınsight üzerinde Apache Kafka size bu seçeneği sağlar. HDInsight üzerinde Apache Kafka, Apache Kafka tüm yapılandırma yönleri üzerinde tam denetim sağlar ve Azure platformunun hata/güncelleştirme etki alanı yerleştirmesini, tümleştirmeyi izlemek için ağ yalıtımına kadar çeşitli özelliklerle tamamen tümleşiktir.
Sonraki adımlar
Bu makale, Kafka için Event Hubs bir giriş sağlamıştır. Daha fazla bilgi için bkz. Azure Event Hubs için Apache Kafka Geliştirici Kılavuzu.