Parameter Raft
| Item | Nilai |
|---|---|
| Interval heartbeat | 250ms |
| Election timeout | 500-1000ms — pemilihan leader baru dimulai dalam jendela waktu ini setelah leader gagal |
| Jumlah node | 3 atau 5 (dipaksakan saat load konfigurasi — selain itu menolak untuk boot) |
| Node ID | posisi (cluster_self)-nya di daftar cluster_peers — itulah kenapa urutan daftar harus identik di setiap node |
| Bootstrap | 500ms setelah startup, setiap node menginisialisasi dengan membership yang sama — diabaikan jika bergabung ke cluster yang sudah diinisialisasi |
| Penyimpanan log | in-memory (volatile) — node yang di-restart pulih lewat replikasi/snapshot |
| Deteksi expiry lease | leader memeriksa setiap 100ms dan meng-commit Expire lewat konsensus |
Granularitas timeout wait | timeout menunggu (T) juga diputuskan pada tick 100ms yang sama — bisa tiba hingga 100ms terlambat |
Kenapa 3 atau 5 Node
Sebuah commit butuh mayoritas. Konfigurasi berjumlah genap hanya menambah biaya tanpa menambah toleransi kegagalan, jadi server menolaknya.
| Jumlah node | Mayoritas | Kegagalan bersamaan yang ditoleransi |
|---|---|---|
| 2 | 2 | 0 — satu kegagalan saja menghentikan cluster. Tidak lebih baik dari mode single |
| 3 | 2 | 1 |
| 4 | 3 | 1 — sama seperti 3 node, hanya menambah biaya |
| 5 | 3 | 2 |
Ringkasan Perilaku Kegagalan
| Situasi | Perilaku |
|---|---|
| Request klien ke node bukan-leader | M (alamat leader), atau E no_leader jika leader tidak diketahui |
| Kegagalan leader | leader baru terpilih dalam 500-1000ms. Request selama jendela itu mendapat E no_leader → klien mencoba lagi |
| Saat pergantian leader | request acquire yang tertunda dibersihkan dengan M/E no_leader, dan klien mencoba lagi ke leader baru |
| Restart node | boot dengan status kosong → mengejar lewat replikasi log/snapshot peer |
| Mayoritas hilang | commit menjadi tidak mungkin → penulisan berhenti (keamanan diutamakan), otomatis dilanjutkan begitu mayoritas pulih |
Terminologi
- quorum — lebih dari setengah total node (2 dari 3, atau 3 dari 5). Karena keputusan apa pun butuh persetujuan quorum, dua kelompok yang terpartisi tidak akan pernah bisa sama-sama meng-commit keputusan yang bertentangan sekaligus.
- election timeout — berapa lama follower menunggu tanpa heartbeat sebelum menyimpulkan leader telah mati dan memulai pemilihan. Diacak per node untuk mengurangi kandidasi bersamaan.