Memahami Konsep Two-Phase Commit Pada Sistem Terdistribusi

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

Seiring dengan perkembangan teknologi dan bisnis yang begitu cepat, Aplikasi yang  sebelumnya di bangun dengan konsep microservice telah berubah menjadi sekumpulan app yang besar.

Tentunya ini mempengaruhi arsitektur sistem yang ada, tidak lagi hanya sekedar microservice tapi telah berubah menjadi sistem terdistribusi.

Pada 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 dibagi kedalam dua bagian yang terpisah.

Pada 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 berbeda geografis dan sistem 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 agar transaksi divalidasi.

Sesuai dengan namanya, koordinator mengatur kegiatan dan sinkronisasi antar server .

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 dan mengirimkan pesan kepada koordinator bahwa commit-nya telah berhasil.

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: