Saat ini dalam pengujian: kode GitHub akan dibuka setelah selesai.

Protokol — Server ↔ Server (Cluster)

Protokol RPC peer, dipakai hanya dalam mode cluster. Node berbagi satu status lock lewat konsensus Raft — setiap perubahan status lock (acquire, release, expiry) hanya diterapkan setelah proposal leader → replikasi mayoritas → commit, sehingga mutual exclusion tetap terjaga bahkan saat partisi atau failover. Lihat Cara Kerja untuk penjelasan konsepnya.

Alur — dari satu acquire hingga di-commit

Klien
Leader
Follower 1
Follower 2
A · acquire (key)
AppendEntries (Grant)
AppendEntries (Grant)
OK
mayoritas tercapai → commit, diterapkan di semua node
A · acquired (token)
permintaanresponsRPC konsensus (Raft)

Leader mengubah command lock menjadi command yang direplikasi, membawanya dalam RPC AppendEntries, dan meng-commit setelah mayoritas termasuk dirinya sendiri mencatatnya (dengan 3 node, leader ditambah follower 1 sudah cukup — tidak perlu menunggu sisanya). Respons ke klien baru dikirim setelah commit, jadi begitu kamu menerima respons, lock itu sudah tertulis di mayoritas.

Aturan Port & Alamat

  • RPC peer memakai port Raft khusus = port klien + 1000 (mis. 52256225). Diturunkan otomatis tanpa key konfigurasi terpisah, dan hanya listen dalam mode cluster. Firewall kamu perlu membuka kedua port.
  • Konfigurasi (cluster_self/cluster_peers) selalu berisi alamat klien. Hanya dial ke peer yang menambahkan +1000 ke port — alamat redirect M (moved) yang diberikan ke klien selalu alamat klien polos.
  • Peran dibedakan murni lewat port — tidak ada langkah dalam protokol untuk membedakan klien dari peer. Lihat Koneksi & Auth untuk urutan koneksi dan aturan auth/TLS.

Daftar Isi

Lihat Juga