Dalam publikasi, klien penayang mengirim pesan ke topik Pub/Sub. Berikut adalah beberapa praktik terbaik untuk memublikasikan pesan ke Pub/Sub.
Dokumen ini mengasumsikan bahwa Anda sudah memahami proses memublikasikan pesan ke topik Pub/Sub.
Jika Anda baru menggunakan Pub/Sub, lihat salah satu Panduan memulai dan pelajari cara menjalankan Pub/Sub menggunakan konsol, gCloud CLI, atau library klien.
Lampirkan langganan atau aktifkan retensi topik sebelum Anda mulai memublikasikan
Jika Anda mulai memublikasikan ke topik yang tidak memiliki pelanggan terlampir, pesan tidak akan dipertahankan. Pesan ini tidak dapat dikirim ke langganan yang dilampirkan berikutnya. Oleh karena itu, sebelum Anda mulai memublikasikan pesan, lakukan salah satu hal berikut:
Melampirkan langganan ke topik. Pilih salah satu metode berikut:
Buat langganan dan tentukan topik selama prosesnya. Pelajari cara membuat langganan pull, langganan push, langganan BigQuery, atau langganan Cloud Storage.
Mengaktifkan retensi pesan topik.
Retensi pesan topik memungkinkan langganan memutar ulang pesan yang dipublikasikan sebelum Anda membuat langganan. Jika retensi pesan topik diaktifkan, biaya penyimpanan untuk pesan yang dipertahankan oleh topik akan ditagih ke project tempat topik berada.
Mengonfigurasi pesan batch
Dalam Pub/Sub, pesan batch mengacu pada proses penggabungan beberapa pesan menjadi satu batch yang dipublikasikan dalam satu permintaan publikasi. Jika Anda menggunakan library klien untuk memublikasikan pesan, pengelompokan diaktifkan secara default. Pengelompokan pesan membantu penayang meningkatkan efisiensinya dan mengirim pesan dengan throughput yang lebih tinggi. Pengelompokan data akan mengurangi biaya untuk memublikasikan data. Namun, pengelompokan juga menyebabkan latensi untuk setiap pesan karena penayang menunggu batch terisi sebelum memublikasikan batch.
Latensi di Pub/Sub dapat berupa dua jenis:
Latensi menyeluruh adalah waktu yang diperlukan untuk memublikasikan pesan oleh penerbit dan mengirimkannya ke pelanggan yang sesuai untuk diproses.
Latensi publikasi adalah jumlah waktu yang diperlukan untuk memublikasikan pesan.
Saat menggunakan pengelompokan, meningkatkan kedua jenis latensi adalah kompromi untuk meningkatkan efisiensi dan throughput.
Anda dapat mengelompokkan pesan dalam library klien berdasarkan ukuran permintaan pesan, jumlah pesan, dan waktu. Saat mengonfigurasi setelan batch, Anda dapat menemukan keseimbangan yang tepat antara biaya, throughput, dan latensi agar sesuai dengan kasus penggunaan Anda.
Nilai default untuk variabel pesan batch dan nama variabel mungkin berbeda di seluruh library klien. Anda dapat menentukan satu atau ketiga nilai tersebut di library klien. Jika salah satu nilai untuk variabel pesan batch terpenuhi, library klien akan memublikasikan batch pesan berikutnya.
Untuk mengonfigurasi pesan batch bagi klien penayang, lihat Pesan batch dalam permintaan publikasi.
Mengonfigurasi kontrol alur untuk lonjakan pesan sementara
Jika klien penayang harus memproses pesan dalam jumlah besar, permintaan publikasi mungkin mulai menumpuk di memori hingga pesan gagal dipublikasikan dengan error Deadline exceeded
.
Untuk mengatasi lonjakan sementara dalam memublikasikan pesan, Anda dapat menggunakan kontrol alur di
setelan penayang. Kontrol alur sisi penayang mencegah resource klien penayang
terlalu kewalahan dengan terlalu banyak permintaan yang belum terselesaikan.
Jika klien penayang dibatasi dalam hal memori, CPU, atau thread,
error Deadline exceeded
dalam jumlah besar akan dihasilkan.
Untuk mengonfigurasi kontrol alur di library klien, tetapkan nilai yang sesuai untuk variabel maximum outstanding messages dan maximum outstanding message bytes. Nilai ini menyeimbangkan throughput pesan dan kapasitas sistem.
Untuk memeriksa apakah library klien Anda mendukung kontrol alur penayang dan untuk mengonfigurasinya, lihat Kontrol alur.
Memahami bandwidth dan latensi jaringan
Throughput penayang Anda dibatasi oleh bandwidth jaringan dan jumlah permintaan yang dikirim. Jika bandwidth Anda bagus, tetapi latensi jaringan tinggi, Anda tidak ingin membebani sistem dengan banyak permintaan kecil. Kontrol alur sisi penayang dapat membantu mengatasi masalah jaringan sisi klien.
Throughput penayang Anda juga dibatasi oleh CPU dan memori. Lebih banyak core mesin yang tersedia memungkinkan Anda menetapkan jumlah thread yang lebih tinggi untuk throughput publikasi yang lebih baik. Untuk lebih memahami cara memaksimalkan performa streaming, lihat Menguji klien Cloud Pub/Sub untuk memaksimalkan performa streaming.
Menyesuaikan variabel permintaan percobaan ulang untuk publikasi yang gagal
Saat pesan dipublikasikan oleh klien penayang, Anda mungkin melihat kegagalan
publikasi. Kegagalan ini biasanya disebabkan oleh bottleneck sisi klien, seperti CPU layanan yang tidak memadai, kondisi thread yang buruk, atau kemacetan jaringan. publisher retry policy
menentukan perilaku jika terjadi kegagalan pengiriman pesan. Kebijakan percobaan ulang menentukan frekuensi Pub/Sub
mencoba mengirimkan pesan dan durasi waktu di antara setiap upaya.
Misalnya, di library klien Java untuk Pub/Sub, klien penayang berisi nilai berikut:
initialRetryDelay. Penundaan awal yang ditunggu penayang sebelum mencoba kembali operasi publikasi. Nilai defaultnya adalah
100 milliseconds
.retryDelayMultiplier. Faktor perkalian yang digunakan untuk menghitung jeda di antara percobaan ulang. Nilai defaultnya adalah
4
. Artinya, penundaan antara percobaan ulang adalah hingga100 milliseconds * 4 = 400 milliseconds
untuk percobaan ulang kedua, dan hingga400 milliseconds * 4 = 1600 milliseconds
untuk percobaan ulang ketiga.maxRetryDelay. Penundaan maksimum yang ditunggu penayang sebelum mencoba kembali operasi publikasi. Nilai defaultnya adalah
60 seconds
.initialRpcTimeout. Waktu tunggu awal yang ditunggu penayang hingga panggilan RPC selesai. Nilai defaultnya adalah
5 seconds
.rpcTimeoutMultiplier. Faktor perkalian yang digunakan untuk menghitung waktu tunggu RPC. Nilai defaultnya adalah
4.0
. Artinya, waktu tunggu RPC untuk panggilan RPC maksimal5 seconds * 4 = 20 seconds
untuk percobaan ulang kedua, dan maksimal10 seconds * 4 = 40 seconds
untuk percobaan ulang ketiga.maxRpcTimeout. Waktu tunggu maksimum yang ditunggu penayang hingga panggilan RPC selesai. Nilai defaultnya adalah
600 seconds
.totalTimeout. Total waktu tunggu untuk operasi publikasi. Hal ini mencakup waktu yang dihabiskan untuk menunggu panggilan RPC selesai dan waktu yang dihabiskan untuk menunggu di antara percobaan ulang. Nilai defaultnya adalah
600 seconds
.
Hanya lakukan penyesuaian pada nilai yang ditentukan jika Anda mendapati setelan percobaan ulang default tidak memadai untuk kasus penggunaan Anda. Misalnya, memublikasikan pesan dalam jumlah besar tidak mengharuskan Anda meningkatkan nilai initialRetryDelay
dan maxRetryDelay
. Namun, Anda dapat menyesuaikan kontrol alur dan pengelompokan dalam situasi tersebut. Jika memublikasikan dari
koneksi internet yang tidak stabil atau koneksi yang dibatasi bandwidth,
Anda dapat bereksperimen dengan nilai untuk variabel initialRpcTimeout
, maxRpcTimeout
,
dan rpcTimeoutMultiplier
. Untuk mengetahui nilai yang direkomendasikan, lihat Operasi publikasi gagal dengan DEADLINE_EXCEEDED.
Menggunakan kebijakan penyimpanan pesan untuk memastikan lokalitas data
Kebijakan penyimpanan pesan topik Pub/Sub menawarkan cara untuk memastikan bahwa pesan yang dipublikasikan ke topik tidak pernah dipertahankan di luar kumpulan region Google Cloud yang Anda tentukan, terlepas dari asal permintaan publikasi.
Gunakan kebijakan penyimpanan pesan untuk menentukan daftar region Google Cloud tempat Pub/Sub diizinkan untuk menyimpan data pesan di disk. Saat pesan dipublikasikan ke region yang tidak ada dalam daftar ini, permintaan akan diteruskan ke region terdekat yang diizinkan untuk diproses. Kebijakan dapat dikonfigurasi pada topik atau sebagai kebijakan organisasi untuk project, folder project, atau seluruh organisasi. Saat kebijakan organisasi dikonfigurasi, kebijakan topik individual hanya dapat diubah dengan cara yang tidak melanggar kebijakan organisasi.
Misalnya, perusahaan yang beroperasi di Eropa dapat menggunakan kebijakan penyimpanan pesan untuk memastikan bahwa semua data disimpan di wilayah Uni Eropa untuk mematuhi hukum setempat.
Untuk informasi selengkapnya, lihat Mengonfigurasi kebijakan penyimpanan pesan.
Praktik terbaik untuk pesan terurut dalam publikasi
Jika Anda menggunakan pengurutan pesan, pastikan hal berikut:
Gunakan endpoint lokasi. Pengurutan pesan dipertahankan di sisi publikasi dan dalam region. Dengan kata lain, jika Anda memublikasikan pesan ke beberapa region, hanya pesan dalam region yang sama yang dikirim dalam urutan yang konsisten. Jika semua pesan Anda dipublikasikan ke wilayah yang sama, tetapi subscriber Anda tersebar di berbagai wilayah, subscriber akan menerima semua pesan secara berurutan. Gunakan endpoint lokasi untuk memublikasikan pesan ke region yang sama.
Mengonfigurasi fungsi publikasi resume. Saat library klien mencoba ulang permintaan dan pesan memiliki kunci pengurutan, library klien akan berulang kali mencoba ulang permintaan, terlepas dari setelan percobaan ulang. Jika terjadi error yang tidak dapat dicoba ulang, library klien tidak memublikasikan pesan dan berhenti memublikasikan pesan lain dengan kunci pengurutan yang sama. Jika Anda siap melanjutkan publikasi pada kunci pengurutan yang gagal dipublikasikan, panggil metode
resumePublish
.
Ringkasan praktik terbaik
Tabel berikut meringkas praktik terbaik yang direkomendasikan dalam dokumen ini:
Topik | Tugas |
---|---|
Mengonfigurasi retensi pesan | Lampirkan langganan sebelum Anda memublikasikan atau mengaktifkan retensi pesan. |
Pesan batch dalam permintaan publikasi | Pesan batch atau grup untuk meningkatkan efisiensi penayang dan mengirim pesan dengan throughput yang lebih tinggi. |
Kontrol alur | Konfigurasikan kontrol alur di setelan penayang untuk menangani lonjakan traffic sementara. |
Menguji klien Pub/Sub untuk memaksimalkan performa streaming | Menskalakan throughput penayang dengan peningkatan core mesin dan bandwidth jaringan yang tersedia. |
Mencoba kembali permintaan | Lakukan penyesuaian pada nilai yang ditentukan dari kebijakan percobaan ulang penerbit hanya jika Anda merasa setelan default tidak memadai untuk kasus penggunaan Anda. |
Mengonfigurasi kebijakan penyimpanan pesan | Gunakan kebijakan penyimpanan pesan untuk menyimpan data pesan di disk hanya di lokasi tertentu. |
Gunakan endpoint lokasi saat menggunakan kunci pengurutan dalam publikasi | Saat menggunakan pesan terurut, gunakan endpoint lokasi dan konfigurasikan fungsi publikasi lanjutan untuk kegagalan publikasi. |