Kafka Connect adalah alat pilihan untuk integrasi data bagi developer Kafka. Kafka Connect menyediakan framework untuk menghubungkan Kafka dengan sistem eksternal seperti database, antrean pesan, dan sistem file.
Kafka Connect menyediakan serangkaian plugin konektor bawaan yang diseleksi, diperiksa, dan dikelola oleh Google Cloud. Plugin konektor ini otomatis di-patch dan diupgrade, sehingga menyederhanakan pemeliharaan dan memastikan kompatibilitas.Google Cloud juga menyediakan pemantauan dan logging bawaan untuk menjaga kesehatan pipeline Anda.
API Kafka Connect ditawarkan sebagai bagian dari layanan Google Cloud Managed Service for Apache Kafka. API ini dapat diakses melalui managedkafka.googleapis.com dan diintegrasikan ke dalam konsol Google Cloud dan library klien. Untuk mengelola Kafka
Connect, Anda dapat menggunakan konsol Google Cloud , gcloud CLI, Managed Kafka API, library klien cloud, atau Terraform.
Kasus penggunaan Kafka Connect
Kafka Connect mendukung integrasi data antara cluster Managed Service for Apache Kafka dan berbagai sistem lainnya. Berikut beberapa kasus penggunaan utama:
Migrasikan deployment Kafka yang ada ke Managed Service for Apache Kafka.
Mereplikasi cluster Managed Service for Apache Kafka ke region lain untuk pemulihan dari bencana.
Streaming data dari Managed Service untuk Apache Kafka ke BigQuery, Cloud Storage, Pub/Sub.
Istilah Kafka Connect
Bagian ini membahas komponen utama Kafka Connect tertentu.
Hubungkan cluster
Cluster Connect adalah deployment terdistribusi Kafka Connect dengan plugin dan konfigurasi konektor yang telah dikemas sebelumnya. Setiap cluster Connect dikaitkan dengan cluster Managed Service for Apache Kafka utama. Cluster utama ini menyimpan status konektor yang berjalan di cluster Connect.
Secara umum, cluster Managed Service for Apache Kafka utama juga berfungsi sebagai target untuk semua konektor sumber dan sumber untuk semua konektor sink yang berjalan di cluster Connect terkait.
Satu cluster Managed Service untuk Apache Kafka dapat memiliki beberapa cluster Connect. Jika menjalankan MirrorMaker 2.0, cluster Connect dapat terhubung ke cluster Managed Service untuk Apache Kafka non-primer atau cluster Kafka yang dikelola sendiri untuk membaca atau menulis data topik. Proses ini memungkinkan replikasi topik di antara berbagai cluster.
Dari perspektif model resource, cluster Connect adalah resource terpisah dari cluster Managed Service untuk Apache Kafka.
Asumsikan bahwa Anda memiliki cluster Managed Service for Apache Kafka tempat Anda menyimpan data traffic situs. Anda ingin mengalirkan data ini ke BigQuery untuk dianalisis. Anda dapat membuat cluster Connect dan menggunakan konektor sink BigQuery untuk memindahkan data dari topik Kafka ke BigQuery. Cluster Connect ini dikaitkan dengan cluster Managed Service for Apache Kafka Anda sebagai cluster utamanya.
Plugin konektor
Paket software untuk membuat konektor. Anggap saja ini sebagai kode yang menentukan logika konektor.
Konektor dapat berupa konektor sumber atau sink. Konektor sumber menulis data dari sumber ke cluster Managed Service untuk Apache Kafka.
Konektor sink menulis data dari cluster Managed Service untuk Apache Kafka ke sink.
Managed Service untuk Apache Kafka mendukung beberapa jenis plugin konektor bawaan yang dapat Anda konfigurasi untuk membuat konektor. Konektor ini menawarkan integrasi dengan layanan umum seperti Pub/Sub atau BigQuery. Plugin konektor ini adalah sebagai berikut:
Plugin konektor Sink BigQuery
Plugin konektor Sink Cloud Storage
Plugin konektor Sumber Pub/Sub
Plugin konektor Pub/Sub Sink
Plugin konektor MirrorMaker 2.0
Konektor
Konektor adalah instance plugin konektor yang berjalan dalam cluster Connect tertentu. Anda dapat membuat beberapa konektor dari plugin konektor yang sama, masing-masing dengan konfigurasi spesifiknya sendiri. Contoh konfigurasi mencakup detail autentikasi dan setelan operasional yang berbeda. Konektor di-deploy, dikonfigurasi, dan dikelola dalam cluster Connect. Instance dapat dimulai, dihentikan, dijeda, dimulai ulang, dan konfigurasinya dapat diperbarui.
Komponen konektor dibahas di bagian berikutnya.
Pengonversi
Konverter adalah komponen penting dalam Kafka Connect yang bertanggung jawab untuk serialisasi dan deserialisasi. Converter menerjemahkan data antara format byte mentah yang ditemukan di topik Kafka seperti dalam format Avro atau JSON dan representasi data terstruktur internal Kafka Connect.
Peran konverter
Untuk konektor Sink, konverter akan mendeserialisasi data dari format kabel topik ke dalam representasi data terstruktur internal Kafka Connect, yang kemudian digunakan oleh konektor untuk menulis ke sistem target.
Untuk konektor Sumber, konverter menserialisasi data dari representasi data terstruktur internal Kafka Connect sebagaimana disediakan oleh konektor dan ke dalam format kabel yang ditentukan untuk topik Kafka.
Format internal ini berfungsi sebagai representasi umum, yang memungkinkan berbagai langkah pemrosesan perantara. Langkah-langkah ini mencakup primitif seperti filter, predikat, transformasi, dan konverter, yang semuanya beroperasi pada format internal terpadu ini. Dengan menggunakan format internal abstrak, logika langkah-langkah perantara ini tetap independen dari format data input atau output tertentu.
Konverter diperlukan saat Anda perlu berinteraksi dengan data di luar sekadar meneruskannya. Secara khusus, konverter diperlukan untuk kasus saat Anda perlu melakukan langkah-langkah pemrosesan perantara, seperti predikat atau transformasi, dengan cara yang terperinci dan sesuai struktur.
Jika Anda hanya ingin memindahkan string byte (meskipun kebetulan berupa JSON) dari sumber ke Kafka tanpa manipulasi apa pun, konverter tidak diperlukan.
Dalam konfigurasi konektor, jika Anda tidak menentukan konverter kunci dan nilai, konektor akan menggunakan nilai ByteArrayConverter default. Nilai org.apache.kafka.connect.converters.ByteArrayConverter
tidak menerapkan transformasi apa pun pada data dan meneruskan
data dalam format aslinya.
Konverter yang didukung
Untuk rilis ini, Google Cloud mendukung konverter bawaan berikut:
org.apache.kafka.connect.converters.ByteArrayConverter: Mengonversi data ke dan dari array byte. Ini adalah konverter default. Data diteruskan melalui konektor sebagai byte pokok mentah.org.apache.kafka.connect.json.JsonConverter: Mengonversi data ke dan dari format JSON.org.apache.kafka.connect.storage.StringConverter: Mengonversi data ke dan dari format String.org.apache.kafka.connect.converters.ByteArrayConverter: Mengonversi data ke dan dari array byte.org.apache.kafka.connect.converters.DoubleConverter: Mengonversi data ke dan dari format Double.org.apache.kafka.connect.converters.FloatConverter: Mengonversi data ke dan dari format Float.org.apache.kafka.connect.converters.IntegerConverter: Mengonversi data ke dan dari format Integer.org.apache.kafka.connect.converters.LongConverter: Mengonversi data ke dan dari format Panjang.org.apache.kafka.connect.converters.ShortConverter: Mengonversi data ke dan dari format Singkat.org.apache.kafka.connect.converters.BooleanConverter: Mengonversi data ke dan dari format Boolean.io.confluent.connect.avro.AvroConverter: Mengonversi data ke dan dari format Apache Avro.
Untuk rilis ini, Kafka Connect tidak mendukung validasi terhadap skema jarak jauh menggunakan Schema Registry.
Untuk mengetahui informasi tentang konverter pilihan untuk setiap konektor, lihat dokumentasi untuk konektor tertentu.
Konfigurasi konverter default
Konverter kunci dan nilai default untuk semua konektor yang didukung adalah
org.apache.kafka.connect.json.JsonConverter.
Saat mengonfigurasi konektor, Anda harus menentukan konverter yang sesuai untuk kunci dan nilai pesan Kafka. Misalnya, jika Anda bekerja dengan data JSON, gunakan JsonConverter. Jika data Anda dalam format string, gunakan StringConverter.
Beberapa konfigurasi umum meliputi:
tasks.max: Jumlah maksimum tugas yang akan dibuat untuk konektor ini. Setelan ini mengontrol paralelisme konektor. Meningkatkan jumlah tugas dapat meningkatkan throughput, tetapi juga meningkatkan konsumsi resource (CPU dan memori). Nilai optimal bergantung pada beban kerja dan resource yang dialokasikan ke worker cluster Connect Anda, dan untuk konektor sink, jumlah partisi topik Kafka.value.converter: Konverter yang akan digunakan untuk melakukan serialisasi nilai pesan sebelum mengirimkannya ke bucket Cloud Storage. Konverter umum meliputi:org.apache.kafka.connect.json.JsonConverter: Untuk data JSON. Anda sering kali perlu menetapkanvalue.converter.schemas.enable=falsesaat menggunakan konverter ini dengan JSON biasa (tanpa skema).org.apache.kafka.connect.converters.ByteArrayConverter: Untuk mempertahankan konten pesan yang sama persis di dua sistem.org.apache.kafka.connect.storage.StringConverter: Untuk string teks biasa.
key.converter: Konverter yang akan digunakan untuk melakukan serialisasi kunci pesan. Opsi konverter yang sama sepertivalue.converterberlaku. Jika pesan Anda tidak memiliki kunci, Anda sering kali dapat menggunakanorg.apache.kafka.connect.storage.StringConverter.value.converter.schemas.enable: Untuk konektor sink, menyetel ini ketruesaat menggunakanorg.apache.kafka.connect.json.JsonConverterakan menginstruksikan Kafka Connect untuk mencari dan menggunakan skema yang disematkan dalam pesan Kafka yang masuk. Jika disetel kefalse(default), Kafka Connect mengharapkan data berupa JSON biasa tanpa skema tersemat.
Transformasi (opsional)
Transformasi memungkinkan manipulasi atau pengayaan data selama pipeline data. Transformasi memungkinkan Anda mengubah setiap pesan sebelum dikirim ke Managed Service for Apache Kafka (untuk konektor sumber) atau ke sistem eksternal (untuk konektor sink). Anda dapat menggunakan transformasi untuk menyamarkan data sensitif, menambahkan stempel waktu, atau mengganti nama kolom.
Predikat (opsional)
Predikat memungkinkan pemfilteran data berdasarkan kondisi tertentu. Predikat berfungsi sebagai filter untuk menerapkan transformasi, yang menentukan pesan mana yang akan diterapkan transformasinya berdasarkan properti pesan.
Mengelola Kafka Connect dalam Google Cloud
Dengan Kafka Connect, Anda dapat berfokus pada deployment konektor, sementara Google Cloud menangani infrastruktur dan kompleksitas operasional yang mendasarinya. Berikut perincian tentang apa yang diotomatiskan oleh Google Cloud dan apa yang dapat Anda konfigurasi:
Layanan Kafka Connect mengotomatiskan hal berikut:
Penyediaan pekerja Kafka Connect: Saat Anda membuat cluster Connect, layanan Kafka Connect akan otomatis menyediakan cluster pekerja di Kubernetes.
Jaringan: Layanan Kafka Connect mengonfigurasi jaringan untuk memungkinkan komunikasi antara pekerja, broker Managed Service untuk Apache Kafka, dan sistem eksternal. Dalam beberapa kasus, Anda mungkin perlu membuat beberapa perubahan pada setelan jaringan yang ada.
Ketahanan zona: Layanan Kafka Connect mendistribusikan pekerja di minimal tiga zona, sehingga memastikan pemrosesan data dapat dilanjutkan jika terjadi pemadaman layanan zona.
Autentikasi: Layanan Kafka Connect juga mengonfigurasi autentikasi dengan broker Kafka, sehingga memastikan koneksi yang aman.
Peluncuran dan upgrade: Layanan Kafka Connect mengelola perubahan konfigurasi pekerja, upgrade versi, dan patch keamanan, sehingga memastikan deployment Anda selalu yang terbaru.
Dalam layanan Kafka Connect, Anda dapat melakukan konfigurasi berikut:
Batasan kapasitas dan jaringan: Tentukan batas resource dan konfigurasi jaringan untuk mengoptimalkan performa dan biaya.
Pemantauan dan logging: Akses log dan metrik untuk konektor Anda guna memantau performa dan memecahkan masalah.
Pengelolaan siklus proses konektor: Jeda, lanjutkan, mulai ulang, atau hentikan konektor sesuai kebutuhan untuk mengelola pipeline data Anda.
Batasan
Layanan Kafka Connect hanya mendukung cluster Managed Service for Apache Kafka sebagai cluster Kafka utama. Cluster utama adalah cluster yang menulis metadata cluster Kafka Connect.
Layanan ini tidak mendukung upload plugin konektor kustom ke cluster Kafka Connect Anda.