Memahami Two-Phase Commit Dalam Sistem Terdistribusi

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Memahami Two-Phase Commit Dalam Sistem Terdistribusi

Seiring dengan perkembangan Aplikasi yang telah banyak berubah menjadi sebuah Super APP. Tentunya ini mempengaruhi arsitektur sebuah sistem, tidak lagi hanya sekedar microservice tapi telah menjadi sebuah sistem terdistribusi.

Dalam arsitektur sistem terdistribusi kita sering mendengar konsep Two-Phase Commit, apa itu two-phase commit yuks kita bahas sama-sama.

Two-Phase Commit merupakan protokol standar yang memastikan bahwa commit basis data di implementasikan dalam situasi dimana operasi commit harus dipecah kedalam dua bagian yang terpisah.

Dalam manajemen basis data, menyimpan perubahan data dikenal sebagai commit dan membatalkan perubahan dikenal sebagai rollback.

Keduanya bisa dicapai dengan mudah menggunakan pencatatan transaksi ketika dilakukan dalam satu server, tetapi ketika data tersebar kedalam server yang beragam geografis dalam sistem yang terdistribusi (yaitu setiap server menjadi entitas independen dengan log terpisah), proses commit akan menjadi lebih rumit.

two-phase commit ilustration two-phase commit ilustration // google image

Dalam hal ini, objek khusus diperlukan untuk menjadi koordinator dalam transaksi terdistribusi.

Sesuai dengan namanya, koordinator mengatur kegiatan dan sinkronisasi antar server yang terdistribusi. Untuk menangani hal ini Two-Phase Commit diimplementasikan, berikut fase-fase yang dilakukan :

1) Phase 1


Setiap server yang perlu melakukan penulisan data, mencatatkan datanya ke log. Jika server tidak berhasil, ia merespon dengan pesan gagal. Jika berhasil, server merespon dengan pesan OK.

2) Phase 2


Fase ini dimulai setelah semua peserta merespon OK. Kemudian, koordinator mengirimkan sinyal ke setiap server dengan instruksi commit.

Setelah melakukan commit, masing-masing menulis commit sebagai bagian dari catatan lognya untuk referensi dan mengirimkan pesan kepada koordinator bahwa commit-nya telah berhasil diimplementasikan.

Jika salah satu server ada yang gagal, koordinator akan mengirimkan instruksi ke semua server untuk me-rollback kembali transaksi. Setelah server me-rollback kembali, masing-masing mengirimkan umpan balik bahwa proses telah selesai.

Baca artikel lainya :