Membuat arsitektur berbasis peristiwa dengan Eventarc
Anda dapat menggunakan Eventarc dan Firestore untuk membuat arsitektur berbasis peristiwa. Pemicu Firestore untuk Eventarc menghasilkan peristiwa dari perubahan pada dokumen tertentu di database Anda. Pemicu dapat merutekan peristiwa ke tujuan yang didukung:
- Fungsi Cloud Run (generasi ke-2) yang mendukung Library Klien Cloud dan Firebase SDK
- Cloud Run
- Google Kubernetes Engine
- Workflows
Eventarc menawarkan solusi standar untuk mengelola alur perubahan status, yang disebut peristiwa, di antara microservice yang dipisahkan. Saat dipicu, Eventarc merutekan peristiwa ini ke berbagai tujuan sekaligus mengelola pengiriman, keamanan, otorisasi, kemampuan observasi, dan penanganan error untuk Anda.
Batasan
Perhatikan batasan berikut untuk pemicu Firestore untuk Eventarc:
- Pengurutan tidak dijamin. Perubahan cepat dapat memicu peristiwa dalam urutan yang tidak terduga.
Peristiwa dikirim setidaknya satu kali.
Pastikan pengendali peristiwa Anda bersifat idempoten dan hindari menghasilkan hasil atau efek samping yang tidak terduga saat peristiwa dikirimkan lebih dari sekali. Lihat Mem-build fungsi idempoten untuk mempelajari lebih lanjut.
Pemicu dikaitkan dengan satu database. Anda tidak dapat membuat pemicu yang cocok dengan beberapa database.
Menghapus database tidak secara otomatis menghapus pemicu untuk database tersebut. Pemicu berhenti mengirim peristiwa, tetapi akan tetap ada sampai Anda menghapus pemicu. Jika database dibuat ulang, pemicu terkait juga harus dihapus dan dibuat ulang untuk memulihkan pengiriman peristiwa.
Lokasi Eventarc dan Firestore
Eventarc tidak mendukung multi-region untuk pemicu peristiwa Firestore, tetapi Anda tetap dapat membuat pemicu untuk database Firestore di lokasi multi-region. Eventarc memetakan lokasi multi-region Firestore ke region Eventarc berikut:
Firestore multi-region | Wilayah Eventarc |
---|---|
nam5 |
us-central1 |
eur3 |
europe-west4 |
Perbedaan antara fungsi Cloud Run generasi ke-2 dan generasi ke-1
Fungsi Cloud Run (generasi ke-2) menggunakan peristiwa Eventarc untuk semua runtime. Sebelumnya, fungsi Cloud Run (generasi ke-1) menggunakan peristiwa Eventarc untuk hanya beberapa runtime. Peristiwa Eventarc memperkenalkan perbedaan berikut dari fungsi Cloud Run (generasi ke-1).
Pemicu Firestore untuk Eventarc mendukung tujuan tambahan selain fungsi Cloud Run. Anda dapat merutekan
CloudEvents
ke sejumlah tujuan, termasuk, tetapi tidak terbatas pada Cloud Run, GKE, dan Workflow.Pemicu Firestore untuk Eventarc mengambil definisi pemicu di awal operasi tulis database dan menggunakan definisi tersebut untuk memutuskan apakah Firestore harus memunculkan peristiwa. Operasi menulis tidak memperhitungkan perubahan apa pun pada definisi pemicu yang mungkin terjadi saat berjalan.
Fungsi Cloud Run (generasi ke-1) mengambil definisi pemicu selama evaluasi penulisan database, dan perubahan pada pemicu selama evaluasi dapat memengaruhi apakah Firestore memunculkan peristiwa atau tidak.
Interoperabilitas peristiwa mode Datastore dan mode Native
Eventarc mendukung pemicu peristiwa untuk mode Datastore dan mode Native. Pemicu peristiwa ini dapat dioperasikan secara bersama dengan kedua jenis database. Database Firestore dalam mode Native dapat menerima peristiwa Datastore, dan database Firestore dalam mode Datastore dapat menerima peristiwa mode Native.
Interoperabilitas peristiwa memungkinkan Anda membagikan kode Eventarc di seluruh database Firestore dari berbagai jenis.
Konversi peristiwa
Jika Anda menerapkan pemicu peristiwa mode Native ke database mode Datastore, Eventarc akan melakukan konversi berikut:
- Namespace entity disimpan dalam atribut
PartitionId
peristiwa. - Entity tersemat dikonversi ke jenis
map
mode Native.
Langkah selanjutnya
- Pelajari arsitektur berbasis peristiwa.