Transaksi Terdistribusi 2PC: Konsisten tapi Rapuh
Saat satu operasi menyentuh dua database, kita ingin keduanya berhasil bersama atau gagal bersama. Two-phase commit (2PC) menjamin itu — tapi dengan harga yang sering tidak sepadan.
Konsisten, tapi memblokir
2PC menyiapkan, lalu komit. Selama fase siap, sumber terkunci menunggu keputusan koordinator. Bila koordinator gagal di tengah, sumber terjebak menunggu — ketersediaan turun. Konsistensi didapat dengan menukar ketersediaan.
Rapuh di hadapan kegagalan
2PC berasumsi koordinator dan peserta dapat pulih. Dalam praktik, kegagalan koordinator adalah titik tunggal yang sulit. Untuk sistem terdistribusi yang besar, kerapuhan ini sering lebih mahal daripada manfaatnya.
Pertimbangkan saga
Untuk banyak kasus, saga (rangkaian langkah dengan kompensasi) lebih tahan: tidak ada kunci global, tiap langkah komit sendiri, dan kegagalan ditangani dengan langkah balik. Konsistensi akhir, bukan seketika — tapi tetap berjalan saat kegagalan terjadi.