Apa itu Azure Event Hubs untuk Apache Kafka?
Artikel ini menjelaskan bagaimana Anda dapat menggunakan Azure Event Hubs untuk mengalirkan data dari aplikasi Apache Kafka tanpa menyiapkan kluster Kafka sendiri.
Gambaran Umum
Azure Event Hubs menyediakan titik akhir Apache Kafka di hub peristiwa, yang memungkinkan pengguna untuk terhubung ke pusat aktivitas menggunakan protokol Kafka. Anda sering dapat menggunakan titik akhir Kafka pusat aktivitas dari aplikasi Anda tanpa perubahan kode apa pun. Anda hanya memodifikasi konfigurasi, yaitu, memperbarui string koneksi dalam konfigurasi untuk menunjuk ke titik akhir Kafka yang diekspos oleh hub peristiwa Anda alih-alih menunjuk ke kluster Kafka. Kemudian, Anda dapat memulai streaming peristiwa dari aplikasi Anda yang menggunakan protokol Kafka ke hub peristiwa, yang setara dengan topik Kafka.
Untuk mempelajari selengkapnya tentang cara memigrasikan aplikasi Apache Kafka Anda ke Azure Event Hubs, lihat panduan migrasi.
Catatan
- Fitur ini hanya didukung di tingkat standar, premium , dan khusus .
- Event Hubs untuk Apache Kafka Ecosystems mendukung Apache Kafka versi 1.0 dan yang lebih baru.
Pemetaan konseptual Apache Kafka dan Azure Event Hubs
Secara konseptual, Apache Kafka dan Event Hubs sangat mirip. Keduanya adalah log yang dipartisi yang dibuat untuk data streaming, di mana klien mengontrol bagian mana dari log yang dipertahankan yang ingin dibacanya. Tabel berikut memetakan konsep antara Apache Kafka dan Event Hubs.
Konsep Apache Kafka | Konsep Azure Event Hubs |
---|---|
Kluster | Ruang nama |
Topik | Hub kejadian |
Partisi | Partisi |
Grup Konsumen | Grup Konsumen |
Offset | Offset |
Fitur Apache Kafka yang didukung di Azure Event Hubs
Kafka Streams
Kafka Streams adalah pustaka klien untuk analisis aliran yang merupakan bagian dari proyek sumber terbuka Apache Kafka, tetapi terpisah dari broker peristiwa Apache Kafka.
Catatan
Kafka Streams saat ini dalam Pratinjau publik di tingkat Premium, dan Khusus.
Azure Event Hubs mendukung pustaka klien Kafka Streams, dengan detail dan konsep yang tersedia di sini.
Alasan paling umum pelanggan Azure Event Hubs meminta dukungan Kafka Streams adalah karena mereka tertarik dengan produk "ksqlDB" Confluent. "ksqlDB" adalah proyek sumber bersama eksklusif yang dilisensikan sedemikian rupa sehingga tidak ada vendor yang "menawarkan perangkat lunak sebagai layanan, platform sebagai layanan, infrastruktur sebagai layanan atau layanan online serupa lainnya yang bersaing dengan produk atau layanan Confluent" diizinkan untuk menggunakan atau menawarkan dukungan "ksqlDB". Sederhananya, jika Anda menggunakan ksqlDB, Anda harus mengoperasikan Kafka sendiri atau harus menggunakan penawaran cloud Confluent. Ketentuan lisensi juga dapat memengaruhi pelanggan Azure yang menawarkan layanan untuk tujuan yang dikecualikan oleh lisensi.
Mandiri dan tanpa ksqlDB, Kafka Streams memiliki kemampuan lebih sedikit daripada banyak kerangka kerja dan layanan alternatif, yang sebagian besar memiliki antarmuka SQL streaming bawaan, dan semuanya terintegrasi dengan Azure Event Hubs saat ini:
- Azure Stream Analytics
- Azure Synapse Analytics (melalui Pengambilan Azure Event Hubs)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink di HDInsight di Azure Kubernetes Service
- Akka Streams
Transaksi Kafka
Catatan
Transaksi Kafka saat ini dalam pratinjau Publik di tingkat Premium, dan Khusus.
Azure Event Hubs mendukung transaksi Kafka. Detail selengkapnya mengenai dukungan dan konsep tersedia di sini
Kompresi
Catatan
Kompresi Kafka untuk Azure Event Hubs hanya didukung di tingkat Premium dan Khusus saat ini.
Fitur kompresi sisi klien di klien Apache Kafka menghemat sumber daya komputasi dan bandwidth dengan mengompresi batch beberapa pesan ke dalam satu pesan di sisi produsen dan mendekompresi batch di sisi konsumen. Broker Apache Kafka memperlakukan batch sebagai pesan khusus.
Pengembang aplikasi produsen Kafka dapat mengaktifkan kompresi pesan dengan mengatur properti compression.type. Azure Event Hubs saat ini mendukung gzip
pemadatan.
Compression.type = none | gzip
Meskipun fitur ini hanya didukung untuk produsen lalu lintas Apache Kafka dan lalu lintas konsumen, konsumen AMQP dapat mengonsumsi lalu lintas Kafka terkompresi sebagai pesan yang didekompresi.
Perbedaan utama antara Apache Kafka dan Azure Event Hubs
Meskipun Apache Kafka adalah perangkat lunak yang biasanya perlu Anda instal dan operasikan, Azure Event Hubs adalah layanan cloud-native yang terkelola sepenuhnya. Tidak ada server, disk, atau jaringan untuk dikelola dan dipantau dan tidak ada broker yang perlu dipertimbangkan atau dikonfigurasi. Anda membuat namespace layanan, yang merupakan titik akhir dengan nama domain yang sepenuhnya memenuhi syarat, lalu Anda membuat Pusat Aktivitas (topik) di dalam namespace layanan tersebut.
Untuk informasi selengkapnya tentang Azure Event Hubs dan namespace layanan, lihat Fitur Azure Event Hubs. Sebagai layanan cloud, Azure Event Hubs menggunakan satu alamat IP virtual yang stabil sebagai titik akhir, sehingga klien tidak perlu tahu tentang broker atau mesin dalam kluster. Meskipun Azure Event Hubs menerapkan protokol yang sama, perbedaan ini berarti bahwa semua lalu lintas Kafka untuk semua partisi dapat diprediksi dialihkan melalui titik akhir yang satu ini daripada memerlukan akses firewall untuk semua broker kluster.
Skala di Pusat Aktivitas dikendalikan oleh berapa banyak TU (unit throughput/throughput units) atau unit pemrosesan yang Anda beli. Jika Anda mengaktifkan fitur Inflasi Otomatis untuk namespace layanan tingkat standar, Pusat Aktivitas secara otomatis meningkatkan skala TU saat Anda mencapai batas throughput. Fitur ini juga berfungsi dengan dukungan protokol Apache Kafka. Untuk namespace tingkat premium, Anda dapat meningkatkan jumlah unit pemrosesan yang ditetapkan ke namespace layanan.
Apakah Apache Kafka merupakan solusi yang tepat untuk beban kerja Anda?
Berasal dari membangun aplikasi menggunakan Apache Kafka, penting juga untuk memahami bahwa Azure Event Hubs adalah bagian dari armada layanan, yang juga mencakup Azure Service Bus, dan Azure Event Grid.
Sementara beberapa penyedia distribusi komersial Apache Kafka mungkin menjelaskan bahwa Apache Kafka adalah toko serba ada untuk semua kebutuhan platform Olahpesan Anda, kenyataannya Apache Kafka tidak mengimplementasikan, misalnya, pola antrean competing-consumer, tidak memiliki dukungan untuk publish-subscribe pada tingkat yang memungkinkan pelanggan mengakses pesan masuk berdasarkan aturan yang dievaluasi oleh server selain offset biasa, dan tidak memiliki fasilitas untuk melacak siklus hidup pekerjaan yang dimulai oleh pesan atau mengesampingkan pesan yang salah ke dalam antrean dead-letter, yang semuanya merupakan dasar untuk banyak skenario Olahpesan perusahaan.
Untuk memahami perbedaan antara pola dan pola mana yang paling baik dicakup oleh layanan mana, lihat panduan Opsi perpesanan asinkron di Azure. Sebagai pengguna Apache Kafka, Anda dapat menemukan bahwa jalur komunikasi yang sejauh ini Anda realisasikan dengan Kafka, dapat diwujudkan dengan kompleksitas dasar yang jauh lebih sedikit dan kemampuan yang lebih kuat menggunakan Event Grid atau Bus Layanan.
Jika Anda memerlukan fitur khusus Apache Kafka yang tidak tersedia melalui antarmuka Event Hubs untuk Apache Kafka atau jika pola penerapan Anda melebihi kuota Event Hubs, Anda juga dapat menjalankan cluster Apache Kafka asli di Azure HDInsight.
Keamanan dan autentikasi
Setiap kali Anda menerbitkan atau menggunakan acara dari Azure Event Hubs untuk Kafka, klien Anda mencoba mengakses sumber Azure Event Hubs. Anda ingin memastikan bahwa sumber daya diakses menggunakan entitas yang berwenang. Saat menggunakan protokol Apache Kafka dengan klien Anda, Anda dapat mengatur konfigurasi Anda untuk autentikasi dan enkripsi menggunakan mekanisme SASL. Saat menggunakan Azure Event Hubs untuk Kafka yang memerlukan enkripsi TLS (karena semua data transit dengan Event Hubs dienkripsi oleh TLS), hal ini dapat dilakukan dengan menentukan opsi SASL_SSL dalam file konfigurasi Anda.
Azure Event Hubs menyediakan beberapa opsi untuk mengotorisasi akses ke sumber daya aman Anda.
- OAuth 2.0
- Tanda Tangan Akses Bersama (SAS)
OAuth 2.0
Azure Event Hubs terintegrasi dengan ID Microsoft Entra, yang menyediakan server otorisasi terpusat yang mematuhi OAuth 2.0 . Dengan MICROSOFT Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin terperinci ke identitas klien Anda. Anda dapat menggunakan fitur ini dengan klien Kafka Anda dengan menentukan SASL_SSL untuk protokol dan OAUTHBEARER sebagai mekanismenya. Untuk detail tentang peran dan tingkat Azure untuk akses cakupan, lihat Mengotorisasi akses dengan ID Microsoft Entra.
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
Catatan
Properti konfigurasi ini untuk bahasa pemrograman Java. Untuk sampel yang menunjukkan cara menggunakan OAuth dengan Azure Event Hubs untuk Kafka menggunakan bahasa pemrograman yang berbeda, lihat sampel di GitHub.
Tanda Tangan Akses Bersama (SAS)
Pusat Aktivitas juga menyediakan Tanda Tangan Akses Bersama (SAS) untuk akses yang didelegasikan ke Azure Event Hubs untuk sumber daya Kafka. Mengotorisasi akses menggunakan mekanisme berbasis token OAuth 2.0 memberikan keamanan yang unggul dan kemudahan penggunaan melalui SAS. Peran bawaan juga dapat menghilangkan kebutuhan akan otorisasi berbasis ACL, yang harus dipertahankan dan dikelola oleh pengguna. Anda dapat menggunakan fitur ini dengan klien Kafka Anda dengan menentukanSASL_SSL untuk protokol dan PLAIN untuk mekanismenya.
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}";
Penting
Ganti {YOUR.EVENTHUBS.CONNECTION.STRING}
dengan string koneksi ke ruang nama Azure Event Hubs. Untuk instruksi tentang mendapatkan string sambungan, lihat Mendapatkan string sambungan Azure Event Hubs. Berikut adalah contoh konfigurasi: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Catatan
Saat menggunakan autentikasi SAS dengan klien Kafka, koneksi yang dibuat tidak terputus saat kunci SAS diregenerasi.
Catatan
Token tanda tangan akses bersama yang dihasilkan tidak didukung saat menggunakan titik akhir Azure Event Hubs untuk Apache Kafka.
Sampel
Untuk tutorial dengan instruksi langkah demi langkah untuk membuat pusat aktivitas dan mengaksesnya menggunakan SAS atau OAuth, lihat Mulai Cepat: Streaming data dengan Azure Event Hubs menggunakan protokol Kafka.
Fitur Azure Event Hubs lainnya
Fitur Event Hubs for Apache Kafka adalah salah satu dari tiga protokol yang tersedia secara bersamaan di Azure Event Hubs bersama dengan HTTP dan AMQP. Anda dapat menulis dengan salah satu protokol ini dan membaca dengan yang lain, sehingga produsen Apache Kafka Anda saat ini dapat terus menerbitkan melalui Apache Kafka, tetapi pembaca Anda dapat memperoleh manfaat dari integrasi asli dengan antarmuka AMQP Azure Event Hubs, seperti Azure Stream Analytics atau Azure Functions. Sebaliknya, Anda dapat dengan mudah mengintegrasikan Azure Event Hubs ke dalam jaringan perutean AMQP sebagai titik akhir target, namun membaca data melalui integrasi Apache Kafka.
Selain itu, fitur Azure Event Hubs seperti Ambil, yang memungkinkan pengarsipan jangka panjang yang sangat hemat biaya melalui Azure Blob Storage dan Azure Data Lake Storage, dan Geo Disaster-Recovery juga berfungsi dengan Fitur Azure Event Hubs for Kafka.
Idempotensi
Azure Event Hubs for Apache Kafka mendukung produsen idempoen dan konsumen idempotensi.
Salah satu tenet inti Azure Event Hubs adalah konsep pengiriman setidaknya sekali . Pendekatan ini memastikan bahwa peristiwa selalu dikirimkan. Ini juga berarti bahwa peristiwa dapat diterima lebih dari sekali, bahkan berulang kali, oleh konsumen seperti fungsi. Untuk alasan ini, penting bagi konsumen untuk mendukung pola konsumen yang idempotik.
Konten terkait
Artikel ini menyediakan pengenalan Azure Event Hubs untuk Kafka. Untuk mempelajari lebih lanjut, lihat Panduan pengembang Apache Kafka untuk Azure Event Hubs.
Untuk tutorial dengan instruksi langkah demi langkah untuk membuat pusat aktivitas dan mengaksesnya menggunakan SAS atau OAuth, lihat Mulai Cepat: Streaming data dengan Azure Event Hubs menggunakan protokol Kafka.
Selain itu , lihat sampel OAuth di GitHub.