Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pola saga
Sebuah saga terdiri dari urutan transaksi lokal. Setiap transaksi lokal dalam saga memperbarui database dan memicu transaksi lokal berikutnya. Jika transaksi gagal, saga menjalankan transaksi kompensasi untuk mengembalikan perubahan database yang dibuat oleh transaksi sebelumnya.
Urutan transaksi lokal ini membantu mencapai alur kerja bisnis dengan menggunakan prinsip kelanjutan dan kompensasi. Prinsip kelanjutan menentukan pemulihan alur kerja ke depan, sedangkan prinsip kompensasi menentukan pemulihan mundur. Jika pembaruan gagal pada setiap langkah dalam transaksi, saga menerbitkan acara untuk kelanjutan (untuk mencoba kembali transaksi) atau kompensasi (untuk kembali ke status data sebelumnya). Ini memastikan bahwa integritas data dipertahankan dan konsisten di seluruh penyimpanan data.
Misalnya, ketika pengguna membeli buku dari pengecer online, prosesnya terdiri dari urutan transaksi—seperti pembuatan pesanan, pembaruan inventaris, pembayaran, dan pengiriman—yang mewakili alur kerja bisnis. Untuk menyelesaikan alur kerja ini, arsitektur terdistribusi mengeluarkan urutan transaksi lokal untuk membuat pesanan dalam database pesanan, memperbarui database inventaris, dan memperbarui database pembayaran. Ketika proses berhasil, transaksi ini dipanggil secara berurutan untuk menyelesaikan alur kerja bisnis, seperti yang ditunjukkan diagram berikut. Namun, jika salah satu dari transaksi lokal ini gagal, sistem harus dapat memutuskan langkah berikutnya yang tepat — yaitu, pemulihan ke depan atau pemulihan mundur.
![Alur kerja bisnis](images/saga-1.png)
Dua skenario berikut membantu menentukan apakah langkah selanjutnya adalah pemulihan maju atau pemulihan mundur:
-
Kegagalan tingkat platform, di mana ada yang tidak beres dengan infrastruktur yang mendasarinya dan menyebabkan transaksi gagal. Dalam hal ini, pola saga dapat melakukan pemulihan ke depan dengan mencoba kembali transaksi lokal dan melanjutkan proses bisnis.
-
Kegagalan tingkat aplikasi, di mana layanan pembayaran gagal karena pembayaran yang tidak valid. Dalam hal ini, pola saga dapat melakukan pemulihan mundur dengan mengeluarkan transaksi kompensasi untuk memperbarui inventaris dan database pesanan, dan mengembalikan keadaan sebelumnya.
Pola saga menangani alur kerja bisnis dan memastikan bahwa keadaan akhir yang diinginkan dicapai melalui pemulihan ke depan. Jika terjadi kegagalan, itu mengembalikan transaksi lokal dengan menggunakan pemulihan mundur untuk menghindari masalah konsistensi data.
Pola saga memiliki dua varian: koreografi dan orkestrasi.
Koreografi Saga
Pola koreografi saga tergantung pada peristiwa yang diterbitkan oleh layanan mikro. Peserta saga (layanan mikro) berlangganan acara dan bertindak berdasarkan pemicu acara. Misalnya, layanan pesanan dalam diagram berikut memancarkan suatu OrderPlaced
peristiwa. Layanan inventaris berlangganan acara itu dan memperbarui inventaris saat OrderPlaced
acara dipancarkan. Demikian pula, layanan peserta bertindak berdasarkan konteks peristiwa yang dipancarkan.
Pola koreografi saga cocok ketika hanya ada beberapa peserta dalam saga, dan Anda memerlukan implementasi sederhana tanpa satu titik kegagalan. Ketika lebih banyak peserta ditambahkan, menjadi lebih sulit untuk melacak dependensi antara peserta dengan menggunakan pola ini.
![Pola koreografi Saga](images/saga-2.png)
Untuk ulasan terperinci, lihat bagian koreografi Saga dari panduan ini.
Orkestrasi Saga
Pola orkestrasi saga memiliki koordinator pusat yang disebut orkestrator. Orkestrator saga mengelola dan mengoordinasikan seluruh siklus hidup transaksi. Ia menyadari serangkaian langkah yang harus dilakukan untuk menyelesaikan transaksi. Untuk menjalankan langkah, ia mengirim pesan ke layanan mikro peserta untuk melakukan operasi. Layanan mikro peserta menyelesaikan operasi dan mengirim pesan kembali ke orkestrator. Berdasarkan pesan yang diterimanya, orkestrator memutuskan layanan mikro mana yang akan dijalankan selanjutnya dalam transaksi.
Pola orkestrasi saga cocok ketika ada banyak peserta, dan kopling longgar diperlukan antara peserta saga. Orkestrator merangkum kompleksitas dalam logika dengan membuat para peserta digabungkan secara longgar. Namun, orkestrator dapat menjadi satu titik kegagalan karena mengontrol seluruh alur kerja.
![Pola orkestrasi Saga](images/saga-3.png)
Untuk ulasan terperinci, lihat bagian orkestrasi Saga dari panduan ini.