Jika Anda memublikasikan pesan ke endpoint Pub/Sub global, Pub/Sub akan otomatis menyimpan pesan di region Google Cloud terdekat. Jika ingin mengontrol region tempat pesan disimpan dan diproses, Anda dapat mengonfigurasi kebijakan penyimpanan pesan pada topik Anda.
Ringkasan kebijakan penyimpanan pesan
Anda dapat menetapkan kebijakan penyimpanan pesan saat membuat topik baru atau memperbarui topik menggunakan konsol, Google Cloud CLI, atau REST API.
Kebijakan penyimpanan pesan hanya berlaku untuk konten pesan. Kebijakan ini tidak berlaku untuk data lain seperti nama topik, label, atau setelan Identity and Access Management (IAM).
Pub/Sub menyimpan pesan saat klien memublikasikan pesan tersebut ke Pub/Sub. Kebijakan penyimpanan pesan memastikan bahwa Pub/Sub menyimpan dan memproses pesan hanya di kumpulan region Google Cloud yang Anda tentukan, terlepas dari asal permintaan publikasi atau berlangganan. Jika kebijakan ini mengizinkan beberapa region untuk melakukan operasi publikasi, Pub/Sub akan menyimpan pesan di region yang diizinkan yang paling dekat dengan tempat pesan yang dipublikasikan memasuki jaringan Google Cloud.
Saat menentukan kebijakan penyimpanan pesan, Anda dapat menetapkan enforceInTransit
ke True
. Flag ini mengatur hal-hal berikut:
Permintaan publikasi, pull, dan streamingPull yang diterima di region yang tidak diizinkan dalam kebijakan penyimpanan pesan ditolak dengan error
FAILED_PRECONDITION
.Pengiriman untuk langganan push hanya ditangani dalam region Cloud yang diizinkan. Dalam beberapa kasus, pembatasan ini dapat menjeda sepenuhnya pengiriman pesan untuk langganan push. Saat langganan push memasuki status tersebut karena lokasi push yang terlalu dibatasi oleh kombinasi faktor seperti lokasi penyimpanan pesan, region yang diizinkan, dan lokasi resource ekspor, status ini akan terlihat di Stackdriver.
Kebijakan penyimpanan pesan untuk topik baru
Jika Anda tidak menentukan kebijakan penyimpanan pesan saat membuat topik, kebijakan penyimpanan pesan akan otomatis ditentukan berdasarkan kebijakan organisasi Pembatasan Lokasi Resource yang efektif. Jika tidak ada kebijakan organisasi yang berlaku, kebijakan penyimpanan pesan akan mengizinkan semua region.
Demikian pula, jika tidak ada kebijakan penyimpanan pesan yang ditentukan, tanda
enforceInTransit
ditentukan berdasarkan kebijakan organisasi Terapkan region dalam pengiriman untuk pesan Pub/Sub yang efektif. Untuk informasi selengkapnya tentang kebijakan organisasi ini, lihat Batasan kebijakan organisasi.Jika Anda menentukan kebijakan penyimpanan pesan saat membuat topik, kebijakan penyimpanan pesan hanya dapat berisi wilayah yang diizinkan oleh kebijakan organisasi Pembatasan Lokasi Resource yang efektif. Jika tidak ada kebijakan organisasi yang berlaku, kebijakan penyimpanan pesan dapat berisi region mana pun.
Kebijakan penyimpanan pesan untuk topik yang ada
Saat kebijakan organisasi diperbarui, perubahan tidak otomatis diterapkan ke topik yang ada. Dengan demikian, kebijakan penyimpanan pesan topik yang sudah ada dapat tidak sinkron dengan kebijakan organisasi terbaru. Untuk mengetahui informasi selengkapnya, lihat Mengelola perbedaan antara kebijakan organisasi dan topik.
Saat kebijakan penyimpanan pesan topik diperbarui, perubahan tersebut tidak diterapkan ke pesan yang sudah dipublikasikan. Pesan yang sudah disimpan berdasarkan kebijakan lama tidak dipindahkan agar konsisten dengan kebijakan baru. Namun, perubahan hanya berlaku untuk pesan yang dipublikasikan setelah update.
Pengecualian
Kebijakan ini menentukan daftar nama region Google Cloud yang diizinkan. Dengan demikian, item berikut tidak didukung:
- Daftar pengecualian
- Zona atau lokasi multi-region
Jika Anda memublikasikan pesan dengan kunci pengurutan dan kebijakan penyimpanan pesan mengecualikan region terdekat, layanan Pub/Sub akan menampilkan error.
Mengonfigurasi kebijakan penyimpanan pesan
Ada dua cara untuk mengonfigurasi kebijakan penyimpanan pesan untuk topik, yang meliputi:
- Menetapkan kebijakan penyimpanan pesan menggunakan kebijakan organisasi.
- Mengonfigurasi kebijakan penyimpanan pesan saat membuat topik.
Menetapkan kebijakan penyimpanan pesan menggunakan kebijakan organisasi
Konsol
Untuk mengonfigurasi kebijakan penyimpanan pesan yang berlaku untuk beberapa topik, tetapkan kebijakan organisasi Pembatasan Lokasi Resource.
Buka halaman Kebijakan organisasi di konsol Identity and Access Management.
Pilih node hierarki resource (organisasi, folder, atau project) yang ingin Anda tetapkan kebijakan organisasinya.
Di filter, masukkan Pembatasan Lokasi Resource.
Klik Google Cloud - Resource Location Restriction.
Klik EDIT.
Tambahkan atau hapus wilayah sesuai kebutuhan.
Semua topik baru yang Anda buat akan mewarisi setelan ini. Perubahan tidak otomatis diterapkan ke topik yang sudah ada. Untuk memperbarui topik yang ada, Anda harus menjalankan operasi pembaruan.
Untuk mengetahui informasi selengkapnya tentang kebijakan organisasi, lihat Mengelola resource Google Cloud.
Mengonfigurasi kebijakan penyimpanan pesan saat membuat topik
Konsol
Saat menggunakan konsol Google Cloud, Anda tidak dapat mengonfigurasi kebijakan penyimpanan pesan saat membuat topik. Sebagai gantinya, semua topik baru otomatis mewarisi kebijakan organisasi Pembatasan Lokasi Resource.
Namun, setelah membuat topik, Anda dapat mengubah kebijakan penyimpanan pesannya di konsol dengan operasi update.
gcloud CLI
Untuk membuat topik dengan kebijakan penyimpanan pesan tertentu, gunakan perintah gcloud pubsub topics create
dengan flag --message-storage-policy-allowed-regions
:
gcloud pubsub topics create TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1, REGION2
Ganti kode berikut:
TOPIC_ID
: ID atau nama untuk topik baru.REGION1, REGION2
: daftar region Google Cloud yang didukung yang dipisahkan koma.
REST
Untuk membuat topik dengan kebijakan penyimpanan pesan, gunakan
metode
projects.topics.create
.
Permintaan harus diautentikasi dengan token akses di header Authorization
. Guna mendapatkan token akses untuk Kredensial Default Aplikasi saat ini: gcloud auth application-default print-access-token
.
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Tentukan kolom berikut dalam isi permintaan:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"],
"enforceInTransit": true
}
}
Dengan keterangan:
PROJECT_ID adalah project ID Anda.
TOPIC_ID adalah topic ID Anda.
REGION adalah region yang Anda tentukan.
Contoh respons:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Baca referensi API berikut untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi kebijakan penyimpanan pesan.
Memperbarui kebijakan penyimpanan pesan
Konsol
Di konsol Google Cloud, buka halaman Detail topik.
Pilih topik untuk diperbarui.
Anda dapat memilih beberapa topik.
Di Panel Info, pilih tab Kebijakan Penyimpanan.
Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Tampilkan panel info.
Pilih atau batalkan pilihan wilayah sebanyak yang diperlukan.
Klik Perbarui.
gcloud CLI
Untuk menerapkan kebijakan penyimpanan pesan yang ditentukan dalam kebijakan Pembatasan Lokasi Resource organisasi Anda ke suatu topik, jalankan perintah gcloud pubsub topics update
berikut:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
Untuk memperbarui kebijakan penyimpanan pesan suatu topik dengan region tertentu, jalankan perintah gcloud pubsub topics update
dengan flag --message-storage-policy-allowed-regions
:
gcloud pubsub topics update TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1, REGION2
Ganti kode berikut:
TOPIC_ID
: ID topik yang Anda perbarui.REGION1, REGION2
: daftar region Google Cloud yang didukung yang dipisahkan koma.
REST
Untuk memperbarui topik dengan kebijakan penyimpanan pesan, gunakan metode projects.topics.patch
.
Permintaan harus diautentikasi dengan token akses di header Authorization
. Guna mendapatkan token akses untuk Kredensial Default Aplikasi saat ini: gcloud auth application-default print-access-token
.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Tentukan kolom berikut dalam isi permintaan:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"], // Replace with your required region
"enforceInTransit": true
}
}
Dengan keterangan:
PROJECT_ID adalah project ID Anda.
TOPIC_ID adalah topic ID Anda.
REGION adalah region yang Anda tentukan.
Contoh respons:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Lihat referensi API berikut untuk informasi selengkapnya tentang memperbarui kebijakan penyimpanan pesan.
Mengelola perbedaan antara organisasi dan kebijakan topik
Lihat perbedaan antara kebijakan organisasi dan topik
Konsol
Konsol Google Cloud menampilkan perbedaan antara kebijakan organisasi dan kebijakan penyimpanan pesan masing-masing topik.
Untuk melihat apakah ada topik yang tidak sinkron dengan kebijakan organisasi Anda:
Buka halaman Detail topik.
Pilih topik.
Di Panel Info, pilih tab Kebijakan Penyimpanan.
Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Tampilkan panel info.
Kebijakan penyimpanan Anda ditampilkan di panel, beserta perbedaan antara kebijakan organisasi dan topik.
gcloud CLI
Untuk memeriksa kebijakan saat ini yang ditetapkan ke suatu topik, jalankan perintah berikut:
gcloud pubsub topics describe TOPIC_ID
Ganti kode berikut:
TOPIC_ID
: ID topik yang Anda periksa.
Mengatasi perbedaan antara kebijakan organisasi dan topik
Konsol
Di konsol Google Cloud, buka halaman Detail topik.
Pilih topik.
Di Panel Info, pilih tab Kebijakan Penyimpanan.
Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Tampilkan panel info.
Kebijakan penyimpanan Anda ditampilkan di panel, beserta perbedaannya.
Jika ada perbedaan, panel info akan menampilkan tiga opsi untuk menyinkronkan kebijakan penyimpanan topik dengan kebijakan organisasi Anda, termasuk:
Topik mengizinkan penyimpanan di lokasi yang tidak diizinkan.
Perbarui untuk mengizinkan penyimpanan hanya di tempat yang diizinkan oleh kebijakan Anda.
Topik tidak mengizinkan penyimpanan di beberapa lokasi yang diizinkan.
Perbarui untuk mengizinkan penyimpanan di semua tempat yang diizinkan oleh kebijakan Anda.
Topik sudah tidak berlaku dengan lokasi yang tidak diizinkan dan diizinkan.
Perbarui untuk mengizinkan penyimpanan di tempat yang diizinkan oleh kebijakan Anda.
Pilih pilihan yang sesuai untuk menyelesaikan masalah Anda.
Klik Perbarui topik.
Dialog Sinkronkan ke kebijakan penyimpanan organisasi akan terbuka.
Klik Perbarui topik.
Memantau dan memecahkan masalah
Untuk membantu Anda memahami tempat data pesan disimpan, Pub/Sub menawarkan metrik yang dikelompokkan berdasarkan setiap region Google Cloud.
Anda dapat menggunakan metrik ini untuk:
- Pahami bagaimana data Anda didistribusikan di seluruh dunia.
- Optimalkan lokasi deployment penayang dan pelanggan berdasarkan data tersebut.
Metrik penyimpanan pesan
Jumlah pesan tersimpan yang tidak dikonfirmasi:
subscription/num_unacked_messages_by_region
Volume data yang disimpan:
subscription/unacked_bytes_by_region
Usia pesan terlama:
subscription/oldest_unacked_message_age_by_region
Metrik analog tersedia untuk topik dan ringkasan. Selain itu, metrik yang sesuai tersedia untuk pesan yang dikonfirmasi dan dipertahankan secara opsional untuk diputar ulang. Contoh:
subscription/num_retained_acked_messages_by_region
Implikasi performa dan ketersediaan
Kebijakan penyimpanan pesan tidak memengaruhi keseluruhan SLA, tetapi menimbulkan kompromi kontrol ketersediaan saat penayang atau pelanggan berjalan di luar Google Cloud atau berada di region yang tidak diizinkan oleh kebijakan tersebut. Pengguna yang menjalankan klien penayang dalam kumpulan region yang diizinkan oleh kebijakan penyimpanan pesan tidak akan melihat perubahan apa pun pada latensi atau ketersediaan layanan.
Untuk memahami konsekuensi ini, sebaiknya pertimbangkan cara rute permintaan publikasi. Umumnya, Pub/Sub mencoba menyimpan pesan Anda sedekat mungkin dengan sumber permintaan. Permintaan yang berasal dari dalam Google Cloud, pada umumnya, terikat dengan instance Pub/Sub di region yang sama. Jika penayang berada di satu wilayah, hanya menambahkan wilayah lain ke kebijakan penyimpanan pesan tidak akan meningkatkan ketersediaan. Saat memublikasikan dari luar Google Cloud, lapisan perutean tambahan diperlukan untuk mendapatkan permintaan ke region Google Cloud terdekat tempat layanan Pub/Sub tersedia.
Pertimbangkan kebijakan penyimpanan pesan yang hanya mengizinkan region us-central1
.
- Klien penayang yang berjalan di
us-east1
mengeluarkan permintaanPublish
. - Permintaan diarahkan ke server Pub/Sub di
us-east1
. - Bukannya menyimpan data di
us-east1
, permintaan dirutekan ke region terdekat yang diizinkan oleh kebijakan penyimpanan pesan, yaituus-central1
. - Pub/Sub menyimpan pesan yang dipublikasikan di
us-central1
dan meneruskan pesan ke pelanggan dari lokasi tersebut.
Mekanisme ini memiliki implikasi untuk latensi permintaan dan ketersediaan sistem secara keseluruhan. Karena permintaan melintasi lebih banyak link jaringan, prosesnya akan memerlukan waktu lebih lama dan peluang gagalnya relatif lebih tinggi.Hal ini juga berarti bahwa pelanggan mungkin akan melihat pesan tersebut nanti karena harus melakukan perjalanan ke region terdekat yang diizinkan sebelum dikirimkan. Jika kebijakan ini mengizinkan satu region, tetapi aplikasi penayang Anda berjalan di beberapa region, aplikasi yang didistribusikan hanya akan tersedia jika satu region yang diizinkan.
Langkah selanjutnya
- Lihat ringkasan Pub/Sub API untuk mengetahui informasi tentang cara menggunakan endpoint global atau lokasi.