Perbarui 09 April 2018 : Saat ini Anda juga dapat menggunakan ksqlDB , database streaming acara untuk Kafka, untuk memproses data Anda di Kafka. ksqlDB dibangun di atas API Streams Kafka, dan juga dilengkapi dengan dukungan kelas satu untuk "stream" dan "tabel".
apa perbedaan antara API Konsumen dan API Aliran?
Kafka's Streams API ( https://kafka.apache.org/documentation/streams/ ) dibangun di atas klien produsen dan konsumen Kafka. Ini secara signifikan lebih kuat dan juga lebih ekspresif daripada klien konsumen Kafka. Berikut adalah beberapa fitur dari Kafka Streams API:
- Mendukung semantik pemrosesan tepat satu kali (Kafka versi 0.11+)
- Mendukung pemrosesan stateful (dan juga stateless, tentu saja) yang toleran terhadap kesalahan termasuk streaming join , agregasi , dan windowing . Dengan kata lain, ini mendukung pengelolaan status pemrosesan aplikasi Anda di luar kotak.
- Mendukung pemrosesan waktu acara serta pemrosesan berdasarkan waktu pemrosesan dan waktu penyerapan
- Memiliki dukungan kelas satu untuk aliran dan tabel , di mana pemrosesan aliran memenuhi database; dalam praktiknya, sebagian besar aplikasi pemrosesan aliran memerlukan aliran DAN tabel untuk mengimplementasikan kasus penggunaannya masing-masing, jadi jika teknologi pemrosesan aliran tidak memiliki salah satu dari dua abstraksi (misalnya, tidak ada dukungan untuk tabel), Anda akan macet atau harus mengimplementasikan sendiri fungsionalitas ini secara manual (semoga beruntung dengan itu...)
- Mendukung kueri interaktif (juga disebut 'status yang dapat dikueri') untuk memperlihatkan hasil pemrosesan terbaru ke aplikasi dan layanan lain
- Lebih ekspresif: kapal dengan (1) pemrograman gaya fungsional DSL dengan operasi seperti
map
, filter
, reduce
serta (2) keharusan gaya Processor API untuk misalnya melakukan kompleks pengolahan acara (CEP), dan (3) Anda bahkan dapat menggabungkan DSL dan Processor API.
Lihat http://docs.confluent.io/current/streams/introduction.html untuk pengenalan yang lebih mendetail namun masih tingkat tinggi tentang Kafka Streams API, yang juga akan membantu Anda memahami perbedaan bagi konsumen Kafka tingkat bawah klien. Ada juga tutorial berbasis Docker untuk Kafka Streams API , yang saya buat di blog awal minggu ini.
Jadi apa bedanya API Aliran Kafka karena API ini juga menggunakan atau menghasilkan pesan ke Kafka?
Ya, API Aliran Kafka dapat membaca data serta menulis data ke Kafka.
dan mengapa ini diperlukan karena kami dapat membuat aplikasi konsumen kami sendiri menggunakan API Konsumen dan memprosesnya sesuai kebutuhan atau mengirimkannya ke Spark dari aplikasi konsumen?
Ya, Anda dapat menulis aplikasi konsumen Anda sendiri - seperti yang saya sebutkan, Kafka Streams API menggunakan klien konsumen Kafka (ditambah klien produsen) itu sendiri - tetapi Anda harus mengimplementasikan secara manual semua fitur unik yang disediakan Streams API . Lihat daftar di atas untuk semua yang Anda dapatkan "gratis". Oleh karena itu, jarang terjadi bahwa pengguna memilih klien konsumen tingkat rendah daripada API Aliran Kafka yang lebih kuat.
Komponen Kafka Stream dibangun untuk mendukung transformasi pesan jenis ETL. Berarti untuk input aliran dari topik, mengubah dan output ke topik lain. Ini mendukung pemrosesan waktu nyata dan pada saat yang sama mendukung fitur analitik lanjutan seperti agregasi, windowing, join, dll.
"Kafka Streams menyederhanakan pengembangan aplikasi dengan mengembangkan produsen Kafka dan perpustakaan konsumen dan memanfaatkan kemampuan asli Kafka untuk menawarkan paralelisme data, koordinasi terdistribusi, toleransi kesalahan, dan kesederhanaan operasional."
Di bawah ini adalah fitur arsitektur utama di Kafka Stream. Silakan lihat di sini
Berdasarkan pemahaman saya di bawah ini adalah perbedaan utama yang terbuka untuk saya perbarui jika ada yang hilang atau menyesatkan
Tempat menggunakan Konsumen - Produsen:
Tempat menggunakan Kafka Stream:
sumber