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

L · Notifikasi Leader

Strukturrefresh

Bukan respons atas sebuah request, melainkan notifikasi yang dikirim server lebih dulu (khusus cluster). Saat mendeteksi bahwa leader Raft berganti, node mengirim alamat klien dari leader baru satu kali ke semua klien yang sedang terhubung dengannya.

Apa bedanya dengan M

M · MovedL · Notifikasi Leader
SifatRespons atas sebuah requestNotifikasi dari server (tidak terkait request)
Makna"request ini tidak bisa diproses di sini""leader sudah berganti" (informasi)
Koneksiditutup lalu sambung ulang ke leader barudipertahankan — hanya hint yang diperbarui
Node inidipastikan bukan leaderbisa jadi justru leader baru

Jangan menutup koneksi setelah menerima L. Node yang mengirim notifikasi itu sering kali justru leader barunya, dan masih ada request yang akan lewat di koneksi tersebut.

Mengapa ini diperlukan

Tanpa notifikasi ini, klien baru mengetahui pergantian leader setelah melempar sebuah request dan dipantulkan dengan M. L menghilangkan perjalanan bolak-balik itu, sehingga request pertama sesudah failover pun langsung menuju leader baru.

Semua klien resmi untuk protocol formal pertama memahami L. Mengabaikan op yang tidak dikenal lalu terus memakai stream tidak diperbolehkan.

Notasi byte: op berupa karakter ASCII, dan addr berupa teks UTF-8 (panjang variabel, ditampilkan sebagai N di struktur). \n di akhir adalah 0A.

Alur

Klien
Node yang terhubung
Leader baru
pemilihan mengganti leader
L · notifikasi leader (alamat leader baru)
hanya hint leader yang diperbarui — koneksi dipertahankan
mulai request berikutnya langsung ke leader baru
A · acquired (token)
permintaanrespons

Dalam mode server tunggal tidak ada konsep leader, jadi notifikasi ini tidak pernah dikirim. Untuk perilaku cluster secara keseluruhan, lihat Protokol (Cluster).