Mengonfigurasi kebijakan penyimpanan pesan

Jika Anda memublikasikan pesan ke endpoint Pub/Sub global, Pub/Sub akan otomatis menyimpan pesan di Google Cloud region terdekat. Jika ingin mengontrol region tempat pesan Anda disimpan dan diproses, Anda dapat mengonfigurasi kebijakan penyimpanan pesan di topik Anda.

Ringkasan kebijakan penyimpanan pesan

Anda dapat menetapkan kebijakan penyimpanan pesan saat membuat topik baru atau saat 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 ke Pub/Sub. Kebijakan penyimpanan pesan memastikan bahwa Pub/Sub menyimpan dan memproses pesan hanya dalam kumpulan Google Cloud region yang Anda tentukan, terlepas dari tempat asal permintaan publikasi atau langganan. Jika kebijakan mengizinkan beberapa region untuk operasi publikasi, Pub/Sub akan menyimpan pesan di region yang diizinkan dan 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 berikut:

  • Permintaan publikasi, pengambilan, dan streamingPull yang diterima di region yang tidak diizinkan dalam kebijakan penyimpanan pesan akan ditolak dengan error FAILED_PRECONDITION.

  • Jika klien berjalan di salah satu region yang diizinkan —misalnya, di VM Compute Engine—klien tersebut dapat menggunakan endpoint global . Google Cloud Permintaan klien dirutekan secara lokal di region yang diizinkan. Klien juga dapat menggunakan endpoint lokasi atau endpoint regional yang menargetkan region yang diizinkan.

  • Jika klien berjalan di region yang tidak diizinkan Google Cloud , atau berjalan di luar region yang diizinkan Google Cloud, klien tersebut harus menggunakan endpoint lokasi atau regional yang menargetkan region dalam daftar region yang diizinkan.

  • Pengiriman untuk langganan push hanya ditangani dalam region Cloud yang diizinkan. Dalam beberapa kasus, batasan ini dapat sepenuhnya menghentikan pengiriman pesan untuk langganan push. Jika langganan push memasuki status tersebut karena lokasi push 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 berlaku. Jika tidak ada kebijakan organisasi yang berlaku, kebijakan penyimpanan pesan akan mengizinkan semua region.

  • Demikian pula, jika tidak ada kebijakan penyimpanan pesan yang ditentukan, flag enforceInTransit akan ditentukan berdasarkan kebijakan organisasi Terapkan region dalam transit untuk pesan Pub/Sub yang berlaku. Untuk mengetahui 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 region yang diizinkan oleh kebijakan organisasi Pembatasan Lokasi Resource yang berlaku. 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. Oleh karena itu, kebijakan penyimpanan pesan topik yang 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 tidak diterapkan ke pesan yang sudah dipublikasikan. Pesan yang sudah disimpan berdasarkan kebijakan lama tidak dipindahkan agar konsisten dengan kebijakan baru. Sebaliknya, perubahan hanya berlaku untuk pesan yang dipublikasikan setelah pembaruan.

Pengecualian

Kebijakan ini menentukan daftar nama region yang diizinkan Google Cloud . Oleh karena itu, 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, termasuk:

  • Menetapkan kebijakan penyimpanan pesan menggunakan kebijakan organisasi.
  • Mengonfigurasi kebijakan penyimpanan pesan saat membuat topik.

Menetapkan kebijakan penyimpanan pesan menggunakan kebijakan organisasi

Google Cloud

Konsol

Untuk mengonfigurasi kebijakan penyimpanan pesan yang berlaku untuk beberapa topik, tetapkan kebijakan organisasi Pembatasan Lokasi Resource.

  1. Buka halaman Kebijakan organisasi di konsol Identity and Access Management.

    Buka kebijakan organisasi

  2. Pilih node hierarki resource (organisasi, folder, atau project) yang ingin Anda tetapkan kebijakan organisasi.

  3. Di filter, masukkan Resource Location Restriction.

  4. Klik Google Cloud - Resource Location Restriction.

  5. Klik EDIT.

  6. Tambahkan atau hapus region sesuai kebutuhan.

    Topik baru yang Anda buat akan mewarisi setelan ini. Perubahan tidak otomatis diterapkan ke topik yang ada. Untuk memperbarui topik yang ada, Anda harus menjalankan operasi pembaruan.

Untuk mengetahui informasi selengkapnya tentang kebijakan organisasi, lihat Mengelola resource Anda Google Cloud .

Mengonfigurasi kebijakan penyimpanan pesan saat membuat topik

Konsol

Saat menggunakan Google Cloud konsol, Anda tidak dapat mengonfigurasi kebijakan penyimpanan pesan saat membuat topik. Sebagai gantinya, semua topik baru akan otomatis mewarisi kebijakan organisasi Pembatasan Lokasi Resource Anda.

Namun, setelah membuat topik, Anda dapat mengubah kebijakan penyimpanan pesannya di konsol dengan operasi pembaruan.

gcloud CLI

Untuk membuat topik dengan kebijakan penyimpanan pesan tertentu, gunakan gcloud pubsub topics create perintah 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 Anda.
  • REGION1, REGION2: daftar region yang didukung yang dipisahkan koma. Google Cloud

REST

Untuk membuat topik dengan kebijakan penyimpanan pesan, gunakan metode projects.topics.create.

Permintaan harus diautentikasi dengan token akses di header Authorization. Untuk 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 di isi permintaan:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"],
    "enforceInTransit": true
  }
}

Dengan:

  • 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 mengetahui informasi selengkapnya tentang cara mengonfigurasi kebijakan penyimpanan pesan.

Memperbarui kebijakan penyimpanan pesan

Konsol

  1. Di Google Cloud konsol, buka halaman Topic details.

    Buka Topic details

  2. Pilih topik yang akan diperbarui.

    Anda dapat memilih beberapa topik.

  3. Di Panel Info, pilih tab Storage Policy.

    Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Show info panel.

  4. Pilih atau batalkan pilihan region sebanyak yang diperlukan.

  5. Klik Update.

gcloud CLI

Untuk menerapkan kebijakan penyimpanan pesan yang ditentukan dalam kebijakan Pembatasan Lokasi Resource organisasi Anda ke topik, jalankan perintah gcloud pubsub topics update berikut:

gcloud pubsub topics update TOPIC_ID \
    --recompute-message-storage-policy

Untuk memperbarui kebijakan penyimpanan pesan 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 yang didukung yang dipisahkan koma. Google Cloud

REST

Untuk memperbarui topik dengan kebijakan penyimpanan pesan, gunakan projects.topics.patch metode.

Permintaan harus diautentikasi dengan token akses di header Authorization. Untuk 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 di isi permintaan:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"], // Replace with your required region
    "enforceInTransit": true
  }
}

Dengan:

  • 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 mengetahui informasi selengkapnya tentang cara memperbarui kebijakan penyimpanan pesan.

Mengelola perbedaan antara kebijakan organisasi dan topik

Melihat perbedaan antara kebijakan organisasi dan topik

Konsol

Konsol menampilkan perbedaan antara kebijakan organisasi dan kebijakan penyimpanan pesan topik individual. Google Cloud

Untuk melihat apakah ada topik yang tidak sinkron dengan kebijakan organisasi Anda:

  1. Buka halaman Topic details.

    Buka Topic details

  2. Pilih topik.

  3. Di Panel Info, pilih tab Storage Policy.

    Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Show info panel.

    Kebijakan penyimpanan Anda ditampilkan di panel, beserta perbedaan antara kebijakan organisasi dan topik.

gcloud CLI

Untuk memeriksa kebijakan saat ini yang ditetapkan ke topik, jalankan perintah berikut:

gcloud pubsub topics describe TOPIC_ID

Ganti kode berikut:

  • TOPIC_ID: ID topik yang Anda periksa.

Menyelesaikan perbedaan antara kebijakan organisasi dan topik

Konsol

  1. Di Google Cloud konsol, buka halaman Topic details.

    Buka Pub/Sub

  2. Pilih topik.

  3. Di Panel Info, pilih tab Storage Policy.

    Panel ini mungkin diciutkan secara default. Jika diciutkan, klik Show info panel.

    Kebijakan penyimpanan Anda ditampilkan di panel, beserta perbedaan.

    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.

  4. Topik tidak mengizinkan penyimpanan di beberapa lokasi yang diizinkan.

    Perbarui untuk mengizinkan penyimpanan di semua tempat yang diizinkan oleh kebijakan Anda.

  5. Topik habis masa berlakunya dengan lokasi yang diizinkan dan dilarang.

    Perbarui untuk mengizinkan penyimpanan di tempat yang diizinkan oleh kebijakan Anda.

  6. Pilih opsi yang sesuai untuk menyelesaikan masalah Anda.

  7. Klik Update topic.

    Dialog Sync to organization storage policy akan terbuka.

  8. Klik Update topic.

Memantau dan memecahkan masalah

Untuk membantu Anda memahami tempat data pesan disimpan, Pub/Sub menawarkan metrik yang dipecah berdasarkan setiap Google Cloud region.

Anda dapat menggunakan metrik ini untuk:

  • Memahami cara data Anda didistribusikan di seluruh dunia.
  • Mengoptimalkan lokasi deployment penayang dan pelanggan, berdasarkan data tersebut.

Metrik penyimpanan pesan

Jumlah pesan tersimpan yang tidak terkonfirmasi:

subscription/num_unacked_messages_by_region

Volume data tersimpan:

subscription/unacked_bytes_by_region

Usia pesan terlama:

subscription/oldest_unacked_message_age_by_region

Metrik analog tersedia untuk topik dan snapshot. Selain itu, metrik yang sesuai tersedia untuk pesan terkonfirmasi yang secara opsional dipertahankan untuk pemutaran ulang. Contoh:

subscription/num_retained_acked_messages_by_region

Implikasi performa dan ketersediaan

Kebijakan penyimpanan pesan tidak memengaruhi SLA secara keseluruhan, tetapi menimbulkan pertukaran kontrol ketersediaan saat penayang atau pelanggan berjalan di luar atau di region yang tidak diizinkan oleh kebijakan. Google Cloud Pengguna yang menjalankan klien penayang dalam kumpulan region yang diizinkan oleh kebijakan penyimpanan pesan tidak akan melihat perubahan apa pun dalam latensi atau ketersediaan layanan.

Untuk memahami pertukaran ini, sebaiknya pertimbangkan cara permintaan publikasi dirutekan. Umumnya, Pub/Sub mencoba menyimpan pesan Anda sedekat mungkin dengan sumber permintaan. Permintaan yang berasal dari dalam Google Cloud sebagai aturan, terikat ke instance Pub/Sub di region yang sama. Jika penayang berada di satu region, hanya menambahkan lebih banyak region ke kebijakan penyimpanan pesan tidak akan meningkatkan ketersediaan. Saat memublikasikan dari luar Google Cloud, lapisan perutean tambahan akan terlibat untuk mendapatkan permintaan ke region terdekat tempat layanan Pub/Sub tersedia. Google Cloud

Pertimbangkan kebijakan penyimpanan pesan yang hanya mengizinkan region us-central1.

  1. Klien penayang yang berjalan di us-east1 mengeluarkan permintaan Publish.
  2. Permintaan dirutekan ke server Pub/Sub di us-east1.
  3. Daripada menyimpan data di us-east1, permintaan dirutekan ke region terdekat yang diizinkan oleh kebijakan penyimpanan pesan, yaitu us-central1.
  4. Pub/Sub menyimpan pesan yang dipublikasikan di us-central1 dan meneruskan pesan ke pelanggan dari lokasi tersebut.

Mekanisme ini memiliki implikasi terhadap latensi permintaan dan ketersediaan sistem secara keseluruhan. Karena permintaan melintasi lebih banyak link jaringan, permintaan memerlukan waktu lebih lama untuk diselesaikan dan memiliki peluang kegagalan yang relatif lebih tinggi. Hal ini juga berarti bahwa pelanggan mungkin melihat pesan agak terlambat karena pesan harus melakukan perjalanan ke region terdekat yang diizinkan sebelum dikirim. Jika kebijakan mengizinkan satu region, tetapi aplikasi penayang Anda berjalan di beberapa region, aplikasi terdistribusi hanya akan tersedia seperti satu region yang diizinkan.

Langkah berikutnya

  • Lihat Ringkasan Pub/Sub API untuk mengetahui informasi tentang cara menggunakan endpoint global atau lokasi.