Ticketing
Dokumentasi

Jenis RPC

tag pada frame menentukan jenis RPC. Setiap payload adalah tipe openraft yang diserialisasi dengan postcard.

tagNamaPayload requestPayload responsPeran
1VoteVoteRequestVoteResponsePemilihan leader — kandidat meminta suara ke node lain
2AppendEntriesAppendEntriesRequestAppendEntriesResponseReplikasi log + heartbeat — leader menyebarkan command yang direplikasi ke follower
3FullSnapshottuple (Vote, SnapshotMeta, snapshot_bytes)SnapshotResponseMengirim seluruh snapshot ke node yang tertinggal
  • Vote — saat leader mati, node yang heartbeat-nya berhenti menjadi kandidat dan meminta suara; node yang meraih mayoritas menjadi leader baru.
  • AppendEntries — leader membawa command lock untuk di-commit sebagai entry log. AppendEntries tanpa entry adalah heartbeat itu sendiri — tidak ada pesan heartbeat terpisah.
  • FullSnapshot — mengirim seluruh status saat ini ke node yang terlalu tertinggal untuk mengejar lewat log (atau yang baru bergabung). Dikirim utuh, dalam satu frame, tanpa streaming.

Alur — Saat Leader Mati

Node A
Node B
Node C
mendeteksi heartbeat leader hilang → menjadi kandidat
Vote · meminta suara
Vote · meminta suara
ya
mayoritas termasuk dirinya sendiri → leader baru
AppendEntries (tanpa entry = heartbeat)
AppendEntries (tanpa entry = heartbeat)
RPC konsensus (Raft)

Begitu heartbeat pertama dari leader baru terpilih tiba, cluster kembali ke layanan normal — total jeda biasanya 0,5-1 detik. Lihat Command yang Direplikasi untuk alur AppendEntries (replikasi log) saat operasi normal.

Terminologi

  • replikasi log — leader mengubah command yang sudah diputuskan menjadi log berurutan dan membuat follower mencatatnya persis sama. Menerapkan log yang sama dalam urutan yang sama membawa setiap node ke status yang sama.
  • heartbeat — sinyal "aku masih hidup" yang dikirim berkala. Saat berhenti, follower menyimpulkan leader telah mati dan memulai pemilihan.