Dokumen ini menjelaskan cara mengintegrasikan Apache Kafka dan Pub/Sub Lite dengan menggunakan Konektor Kafka Grup Pub/Sub.
Tentang Konektor Kafka Grup Pub/Sub
Apache Kafka adalah platform open source untuk streaming peristiwa. Ini biasanya digunakan dalam arsitektur terdistribusi untuk memungkinkan komunikasi antarkomponen yang dikaitkan secara longgar. Pub/Sub Lite adalah layanan terkelola untuk mengirim dan menerima pesan secara asinkron. Seperti halnya Kafka, Anda dapat menggunakan Pub/Sub Lite untuk berkomunikasi antar-komponen dalam arsitektur cloud Anda.
Konektor Kafka Grup Pub/Sub memungkinkan Anda mengintegrasikan kedua sistem ini. Konektor berikut dikemas dalam JAR Konektor:
- Konektor sink membaca data dari satu atau beberapa topik Kafka dan memublikasikannya ke Pub/Sub Lite.
- Konektor sumber membaca pesan dari topik Pub/Sub Lite dan memublikasikannya ke Kafka.
Berikut adalah beberapa skenario saat Anda dapat menggunakan Konektor Kafka Grup Pub/Sub:
- Anda sedang memigrasikan arsitektur berbasis Kafka ke Google Cloud.
- Anda memiliki sistem frontend yang menyimpan peristiwa di Kafka di luar Google Cloud, tetapi Anda juga menggunakan Google Cloud untuk menjalankan beberapa layanan backend yang perlu menerima peristiwa Kafka.
- Anda mengumpulkan log dari solusi Kafka lokal dan mengirimkannya ke Google Cloud untuk analisis data.
- Anda memiliki sistem frontend yang menggunakan Google Cloud, tetapi Anda juga menyimpan data di lokal menggunakan Kafka.
Konektor ini memerlukan Kafka Connect, yang merupakan framework untuk melakukan streaming data antara Kafka dan sistem lainnya. Untuk menggunakan konektor, Anda harus menjalankan Kafka Connect bersama cluster Kafka.
Dokumen ini mengasumsikan bahwa Anda sudah memahami Kafka dan Pub/Sub Lite. Untuk memulai Pub/Sub Lite, lihat artikel Memublikasikan dan menerima pesan di Pub/Sub Lite menggunakan Konsol Google Cloud.
Mulai menggunakan Konektor Kafka Grup Pub/Sub
Bagian ini akan memandu Anda melakukan tugas berikut:- Konfigurasikan Konektor Kafka Grup Pub/Sub.
- Mengirim peristiwa dari Kafka ke Pub/Sub Lite.
- Mengirim pesan dari Pub/Sub Lite ke Kafka.
Prasyarat
Menginstal Kafka
Ikuti panduan memulai Apache Kafka untuk menginstal Kafka satu node di komputer lokal Anda. Selesaikan langkah-langkah berikut dalam panduan memulai:
- Download rilis Kafka terbaru dan ekstrak.
- Mulai lingkungan Kafka.
- Buat topik Kafka.
Autentikasikan
Konektor Kafka Grup Pub/Sub harus melakukan autentikasi dengan Pub/Sub agar dapat mengirim dan menerima pesan Pub/Sub. Untuk menyiapkan autentikasi, lakukan langkah-langkah berikut:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Create local authentication credentials for your user account:
gcloud auth application-default login
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Create local authentication credentials for your user account:
gcloud auth application-default login
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Mendownload JAR konektor
Download file JAR konektor ke komputer lokal Anda. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan konektor di readme GitHub.
Menyalin file konfigurasi konektor
Clone atau download repositori GitHub untuk konektor.
git clone https://github.com/googleapis/java-pubsub-group-kafka-connector.git cd java-pubsub-group-kafka-connector
Salin konten direktori
config
ke subdirektoriconfig
dari penginstalan Kafka Anda.cp config/* [path to Kafka installation]/config/
File ini berisi setelan konfigurasi untuk konektor.
Memperbarui konfigurasi Kafka Connect
- Buka direktori yang berisi biner Kafka Connect yang Anda download.
- Di direktori biner Kafka Connect, buka file bernama
config/connect-standalone.properties
di editor teks. - Jika
plugin.path property
dikomentari, hapus komentarnya. Perbarui
plugin.path property
untuk menyertakan jalur ke JAR konektor.Contoh:
plugin.path=/home/PubSubKafkaConnector/pubsub-group-kafka-connector-1.0.0.jar
Tetapkan properti
offset.storage.file.filename
ke nama file lokal. Dalam mode mandiri, Kafka menggunakan file ini untuk menyimpan data offset.Contoh:
offset.storage.file.filename=/tmp/connect.offsets
Meneruskan peristiwa dari Kafka ke Pub/Sub Lite
Bagian ini menjelaskan cara memulai konektor sink, memublikasikan peristiwa ke Kafka, lalu membaca pesan yang diteruskan dari Pub/Sub Lite.
Gunakan Google Cloud CLI untuk membuat reservasi Pub/Sub Lite.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Ganti kode berikut:
- RESERVATION_NAME: Nama reservasi Pub/Sub Lite.
- LOCATION: Lokasi pemesanan.
Gunakan Google Cloud CLI untuk membuat topik Pub/Sub Lite dengan langganan.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Ganti kode berikut:
- LITE_TOPIC: Nama topik Pub/Sub Lite untuk menerima pesan dari Kafka.
- LOCATION: Lokasi topik. Nilai harus cocok dengan lokasi reservasi.
- RESERVATION_NAME: Nama reservasi Pub/Sub Lite.
- LITE_SUBSCRIPTION: Nama langganan Pub/Sub Lite untuk topik.
Buka file
/config/pubsub-lite-sink-connector.properties
di editor teks. Tambahkan nilai untuk properti berikut, yang ditandai"TODO"
dalam komentar:topics=KAFKA_TOPICS pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.topic=LITE_TOPIC
Ganti kode berikut:
- KAFKA_TOPICS: Daftar topik Kafka yang dipisahkan koma untuk dibaca.
- PROJECT_ID: Project Google Cloud yang berisi topik Pub/Sub Lite Anda.
- LOCATION: Lokasi topik Pub/Sub Lite.
- LITE_TOPIC: Topik Pub/Sub Lite untuk menerima pesan dari Kafka.
Dari direktori Kafka, jalankan perintah berikut:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-sink-connector.properties
Ikuti langkah-langkah di panduan memulai Apache Kafka untuk menulis beberapa peristiwa ke topik Kafka Anda.
Berlangganan ke langganan Pub/Sub Lite menggunakan salah satu metode yang ditampilkan di Menerima pesan dari langganan Lite.
Meneruskan pesan dari Pub/Sub Lite ke Kafka
Bagian ini menjelaskan cara memulai konektor sumber, memublikasikan pesan ke Pub/Sub Lite, dan membaca pesan yang diteruskan dari Kafka.
Gunakan Google Cloud CLI untuk membuat reservasi Pub/Sub Lite.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Ganti kode berikut:
- RESERVATION_NAME: Nama reservasi Pub/Sub Lite.
- LOCATION: Lokasi pemesanan.
Gunakan Google Cloud CLI untuk membuat topik Pub/Sub Lite dengan langganan.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Ganti kode berikut:
- LITE_TOPIC: Nama topik Pub/Sub Lite.
- LOCATION: Lokasi topik. Nilai harus cocok dengan lokasi reservasi.
- RESERVATION_NAME: Nama reservasi Pub/Sub Lite.
- LITE_SUBSCRIPTION: Nama langganan Pub/Sub Lite untuk topik.
Buka file bernama
/config/pubsub-lite-source-connector.properties
di editor teks. Tambahkan nilai untuk properti berikut, yang ditandai"TODO"
dalam komentar:topic=KAFKA_TOPIC pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.subscription=LITE_SUBSCRIPTION
Ganti kode berikut:
- KAFKA_TOPIC: Topik Kafka untuk menerima pesan Pub/Sub.
- PROJECT_ID: Project Google Cloud yang berisi topik Pub/Sub Anda.
- LOCATION: Lokasi topik Pub/Sub Lite.
- LITE_SUBSCRIPTION: Topik Pub/Sub Lite.
Dari direktori Kafka, jalankan perintah berikut:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-source-connector.properties
Publikasikan pesan ke topik Pub/Sub Lite menggunakan salah satu metode yang ditampilkan di Memublikasikan pesan ke topik Lite.
Baca pesan dari Kafka. Ikuti langkah-langkah dalam panduan memulai Apache Kafka untuk membaca pesan dari topik Kafka.
Konversi pesan
Kumpulan data Kafka berisi kunci dan nilai, yang merupakan array byte dengan panjang variabel. Secara opsional, data Kafka juga dapat memiliki header, yang merupakan pasangan nilai kunci. Pesan Pub/Sub Lite memiliki kolom berikut:
key
: Kunci pesan (bytes
)data
: Data pesan (bytes
)attributes
: Nol atau beberapa atribut. Setiap atribut adalah peta(key,values[])
. Satu atribut dapat memiliki beberapa nilai.event_time
: Stempel waktu peristiwa opsional yang disediakan pengguna.
Kafka Connect menggunakan pengonversi untuk melakukan serialisasi kunci dan nilai ke dan dari Kafka. Untuk mengontrol serialisasi, tetapkan properti berikut dalam file konfigurasi konektor:
key.converter
: Konverter yang digunakan untuk melakukan serialisasi kunci data.value.converter
: Konverter yang digunakan untuk melakukan serialisasi nilai kumpulan data.
Konversi dari Kafka ke Pub/Sub Lite
Konektor sink mengonversi data Kafka menjadi pesan Pub/Sub Lite sebagai berikut.
Kumpulan data Kafka
(SinkRecord ) |
Pesan Pub/Sub Lite |
---|---|
Kunci | key |
Nilai | data |
Header | attributes |
Stempel waktu | eventTime |
Jenis stempel waktu | attributes["x-goog-pubsublite-source-kafka-event-time-type"] |
Topik | attributes["x-goog-pubsublite-source-kafka-topic"] |
Partisi | attributes["x-goog-pubsublite-source-kafka-offset"] |
Offset | attributes["x-goog-pubsublite-source-kafka-partition"] |
Kunci, nilai, dan header dienkode sebagai berikut:
- Skema null diperlakukan sebagai skema string.
- Payload byte ditulis langsung tanpa konversi.
- Payload string, bilangan bulat, dan floating point dienkode menjadi urutan byte UTF-8.
- Semua payload lainnya dienkode ke dalam jenis Protocol buffer
Value
, lalu dikonversi menjadi string byte.- Kolom string bertingkat dienkode menjadi
Value
protobuf. - Kolom byte bertingkat dienkode ke
Value
protobuf yang menyimpan byte yang dienkode dengan base64. - Kolom numerik bertingkat dienkode sebagai ganda ke dalam
Value
protobuf. - Peta dengan kunci array, peta, atau struct tidak didukung.
- Kolom string bertingkat dienkode menjadi
Konversi dari Pub/Sub Lite ke Kafka
Konektor sumber mengonversi pesan Pub/Sub Lite menjadi data Kafka sebagai berikut:
Pesan Pub/Sub Lite | Kumpulan data Kafka
(SourceRecord )
|
---|---|
key |
Kunci |
data |
Nilai |
attributes |
Header |
event_time |
Stempel waktu. Jika event_time tidak ada, waktu
publikasi akan digunakan. |
Opsi konfigurasi
Selain konfigurasi yang disediakan oleh Kafka Connect API, konektor mendukung konfigurasi Pub/Sub Lite berikut.
Opsi konfigurasi konektor sink
Konektor sink mendukung opsi konfigurasi berikut.
Setelan | Jenis data | Deskripsi |
---|---|---|
connector.class |
String |
Wajib. Class Java untuk konektor. Untuk konektor sink Pub/Sub Lite, nilainya harus com.google.pubsublite.kafka.sink.PubSubLiteSinkConnector .
|
gcp.credentials.file.path |
String |
Opsional. Jalur ke file yang menyimpan kredensial Google Cloud untuk mengautentikasi Pub/Sub Lite. |
gcp.credentials.json |
String |
Opsional. Blob JSON yang berisi Google Cloud untuk mengautentikasi Pub/Sub Lite. |
pubsublite.location |
String |
Wajib diisi. Lokasi topik Pub/Sub Lite. |
pubsublite.project |
String |
Wajib diisi. Google Cloud yang berisi topik Pub/Sub Lite. |
pubsublite.topic |
String |
Wajib diisi. Topik Pub/Sub Lite yang akan memublikasikan data Kafka. |
topics |
String |
Wajib diisi. Daftar topik Kafka yang dipisahkan koma untuk dibaca. |
Opsi konfigurasi konektor sumber
Konektor sumber mendukung opsi konfigurasi berikut.
Setelan | Jenis data | Deskripsi |
---|---|---|
connector.class |
String |
Wajib. Class Java untuk konektor. Untuk konektor sumber Pub/Sub Lite, nilainya harus com.google.pubsublite.kafka.source.PubSubLiteSourceConnector .
|
gcp.credentials.file.path |
String |
Opsional. Jalur ke file yang menyimpan kredensial Google Cloud untuk mengautentikasi Pub/Sub Lite. |
gcp.credentials.json |
String |
Opsional. Blob JSON yang berisi Google Cloud untuk mengautentikasi Pub/Sub Lite. |
kafka.topic |
String |
Wajib diisi. Topik Kafka yang menerima pesan dari Pub/Sub Lite. |
pubsublite.location |
String |
Wajib diisi. Lokasi topik Pub/Sub Lite. |
pubsublite.partition_flow_control.bytes |
Long |
Jumlah maksimum byte yang belum diproses per partisi Pub/Sub Lite. Default: 20.000.000 |
pubsublite.partition_flow_control.messages |
Long |
Jumlah maksimum pesan yang belum terkirim per partisi Pub/Sub Lite. Default: |
pubsublite.project |
String |
Wajib. Project Google Cloud yang berisi topik Pub/Sub Lite. |
pubsublite.subscription |
String |
Wajib diisi. Nama langganan Pub/Sub Lite yang akan mengambil pesan. |
Langkah selanjutnya
- Memahami perbedaan antara Kafka dan Pub/Sub.
- Pelajari Konektor Kafka Grup Pub/Sub lebih lanjut.
- Lihat repositori GitHub Konektor Kafka Grup Pub/Sub.