Resource Google Cloud adalah komponen apa pun yang Anda buat atau gunakan dalam Google Cloud. Resource ini membentuk elemen dasar aplikasi dan sistem Anda yang berjalan di platform.
Resource di Managed Service untuk Apache Kafka mencakup hal berikut:
Cluster
Topik
Grup konsumen
ACL
Registry skema
Konteks (dalam registry skema)
Subjek (dalam registry atau konteks skema)
Versi (versi skema dalam subjek)
Skema (diidentifikasi berdasarkan ID, dikaitkan dengan satu atau beberapa subjek dan versi)
Untuk mengetahui informasi selengkapnya tentang penamaan resource Google Cloud umum, lihat Nama resource. API registry skema untuk Managed Service untuk Apache Kafka dirancang agar kompatibel dengan API open source yang ada, sehingga beberapa konvensi penamaan mungkin berbeda dari standar API umum.
Format penamaan resource
Berikut adalah format untuk berbagai resource:
Cluster:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}Topik:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/topics/{TOPIC_ID}Grup konsumen:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/consumerGroup/{CONSUMER_GROUP_ID}ACL:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/clusters/{CLUSTER_ID}/acl/{ACL_ID}Schema registry:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}Konteks:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}Subjek:
- Dalam konteks default:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/subjects/{SUBJECT_ID} - Dalam konteks tertentu:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/subjects/{SUBJECT_ID}
- Dalam konteks default:
Skema (diidentifikasi berdasarkan ID):
- Dalam konteks default:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/schemas/ids/{SCHEMA_ID} - Dalam konteks tertentu:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/schemas/ids/{SCHEMA_ID}
- Dalam konteks default:
Versi (diidentifikasi berdasarkan nomor versi dalam subjek):
- Dalam konteks default:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/subjects/{SUBJECT_ID}/versions/{VERSION_ID} - Dalam konteks tertentu:
projects/{PROJECT_ID}/locations/{LOCATION_NAME}/schemaRegistries/{SCHEMA_REGISTRY_ID}/contexts/{CONTEXT_ID}/subjects/{SUBJECT_ID}/versions/{VERSION_ID}
- Dalam konteks default:
Berikut pengelompokan setiap komponen di bagian berikutnya.
ID Project
Nilainya harus berupa project ID atau nomor project, yang tersedia dari
konsol Google Cloud . Misalnya, my-cool-project adalah project ID,
sedangkan 123456789123 adalah nomor project.
Lokasi
Nilai harus berupa salah satu lokasi Managed Service untuk Apache Kafka yang didukung. Untuk mengetahui daftar lokasi yang tersedia, lihat lokasi Managed Service untuk Apache Kafka.
ID
ID adalah segmen terakhir di jalur resource. Variabel seperti
{CLUSTER_ID}, {TOPIC_ID}, {CONSUMER_GROUP_ID},
{SCHEMA_REGISTRY_ID}, {CONTEXT_ID}, dan
{SUBJECT_ID} harus sesuai dengan panduan berikut:
Tidak diawali dengan string
googDiawali dengan huruf
Batasan panjang:
ID cluster: berisi antara 3 dan 255 karakter.
ID Topik, Grup Konsumen: Panjang apa pun yang diizinkan oleh Apache Kafka. Nama topik Apache Kafka dibatasi hingga 249 karakter.
ID registri skema: berisi hingga 255 karakter.
ID Konteks: berisi hingga 255 karakter.
ID Subjek: berisi hingga 255 byte UTF-8.
Batasan karakter:
ID cluster: Harus cocok dengan regex
^[a-z]([-a-z0-9]*[a-z0-9])?. Artinya, huruf kecil, angka, dan tanda hubung. ID harus dimulai dengan huruf dan tidak boleh diakhiri dengan tanda hubung.ID Topik, Grup Konsumen: Validasi dilakukan oleh Kafka. Karakter yang diizinkan adalah `[a-zA-Z0-9.-], yang mencakup alfanumerik ASCII, titik (.), garis bawah (), dan tanda hubung (-).
ID pendaftaran skema: huruf (huruf besar atau huruf kecil), angka, dan garis bawah
_.ID Konteks: huruf (huruf besar atau huruf kecil), angka, dan karakter khusus berikut: tanda hubung
-, titik., garis bawah_, tilde~, persen%, atau tanda tambah+.ID Subjek: huruf (huruf besar atau huruf kecil), angka, dan karakter khusus berikut: tanda pisah
-, titik., garis bawah_, tilde~, persen%, atau tanda tambah+.
Karakter khusus
Anda dapat menggunakan karakter khusus yang tercantum di bagian sebelumnya dalam ID resource tanpa encoding URL. Namun, Anda harus memastikan bahwa karakter khusus lainnya dienkode atau didekode dengan benar saat digunakan dalam URL.
Misalnya, mi-tópico adalah ID yang tidak valid jika ó bukan karakter yang diizinkan
untuk jenis ID resource tertentu tersebut. Namun, mi-topico akan valid jika
hanya huruf Latin dasar yang diizinkan. Format ini penting saat
melakukan panggilan REST.
Jika Anda mereferensikan topik dari library klien Kafka, jalur resource lengkap tidak digunakan. Hanya nama topik itu sendiri yang digunakan. Demikian pula, saat berinteraksi dengan skema menggunakan integrasi klien Kafka seperti serializer atau deserializer, Anda biasanya menggunakan nama subjek, bukan jalur resource lengkap.
Strategi penamaan subjek
Saat menggunakan registry skema, terutama dengan integrasi klien Kafka seperti serializer dan deserializer, nama subjek sangat penting. Strategi penamaan subjek menentukan cara skema didaftarkan dan diambil dari registry skema. Strategi yang berbeda menawarkan tingkat fleksibilitas dan kontrol yang bervariasi terhadap evolusi skema.
Anda dapat mengonfigurasi strategi penamaan subjek dengan menetapkan
properti key.subject.name.strategy atau value.subject.name.strategy dalam konfigurasi
klien Kafka.
TopicNameStrategy
Ini adalah strategi default untuk library klien Kafka open source.
Nama subjek berasal langsung dari nama topik Kafka, yang ditambahkan dengan
key untuk kunci pesan atau value untuk nilai pesan. Jika auto.register.schema
ditetapkan ke true, klien produsen akan menggunakan topicName-value atau topicName-key
untuk topik bernama topicName.
Berikut beberapa contohnya:
- Nama topik:
orders - Subjek untuk nilai pesan:
orders-value - Subjek untuk kunci pesan:
orders-key
Berikut adalah daftar keuntungan menggunakan TopicNameStrategy:
Strategi ini mudah diterapkan, sehingga cocok untuk banyak kasus penggunaan.
Skema terikat langsung ke topik, sehingga Anda dapat mengembangkan jenis catatan dalam satu topik secara terpisah.
Berikut adalah daftar kerugian menggunakan TopicNameStrategy:
- Setiap topik hanya dapat menangani satu jenis pesan secara efektif berdasarkan skema nilai. Hal ini karena nama subjek ditetapkan ke nama topik. Jika Anda perlu mengirim berbagai jenis data ke topik yang sama, strategi ini tidak akan berfungsi.
RecordNameStrategy
Strategi ini menggunakan nama class yang sepenuhnya memenuhi syarat dari rekaman Avro atau Protobuf sebagai nama subjek.
Berikut beberapa contohnya:
- Nama skema Avro:
com.example.data.Customer - Nama pesan Protobuf:
com.example.data.Order - Subjek untuk skema
customer:com.example.data.Customer - Subjek untuk skema
order:com.example.data.Order
Berikut adalah daftar keuntungan menggunakan RecordNameStrategy:
Karena nama subjek tidak terikat dengan topik, Anda dapat mengirim berbagai jenis data ke topik Kafka yang sama. Hal ini dapat dilakukan selama setiap jenis data memiliki nama yang sepenuhnya memenuhi syarat yang unik dan skema yang sesuai yang terdaftar.
Skema untuk jenis data tertentu seperti
com.example.common.Addressdapat digunakan di beberapa topik, dan evolusinya dikelola secara terpusat dalam satu subjek.
Berikut adalah daftar kerugian menggunakan RecordNameStrategy:
- Anda harus menggunakan subjek dan versi yang sama untuk semua topik yang menggunakan jenis rekaman tertentu. Hal ini dapat membatasi jika Anda memerlukan versi jenis kumpulan data yang sama yang berbeda dalam topik yang berbeda.
TopicRecordNameStrategy
Strategi ini menggabungkan aspek TopicNameStrategy dan RecordNameStrategy.
Nama subjek adalah kombinasi dari nama topik Kafka dan nama class yang sepenuhnya memenuhi syarat dari rekaman, yang diformat sebagai
TOPIC_NAME-FULLY_QUALIFIED_CLASS_NAME.
Berikut beberapa contohnya:
Topik:
user-eventsNama yang sepenuhnya memenuhi syarat:
com.example.events.PageViewNama subjek untuk kombinasi ini:
user-events-com.example.events.PageViewTopik lain:
product-interactionsNama yang sepenuhnya memenuhi syarat:
com.example.events.PageViewNama subjek untuk kombinasi ini:
product-interactions-com.example.events.PageView
Berikut adalah daftar keuntungan menggunakan TopicRecordNameStrategy:
Serupa dengan
RecordNameStrategy, Anda dapat mengirim berbagai jenis data ke topik yang sama.Tidak seperti
RecordNameStrategy, strategi ini memungkinkan Anda mengembangkan skema untuk jenis kumpulan data tertentu secara independen dalam setiap topik. Artinya,my-topic-com.example.project.MyRecorddapat berkembang secara berbeda darianother-topic-com.example.project.MyRecord.
Berikut adalah daftar kerugian menggunakan TopicRecordNameStrategy:
- Nama subjek bisa menjadi cukup panjang karena kombinasi nama topik dan nama rekaman yang sepenuhnya memenuhi syarat.