Ticketing
Dokumentasi

Struktur Frame

Framing biner length-prefix yang membawa RPC Raft. Berbeda dari frame protokol klien yang diakhiri \n, panjangnya dikirim lebih dulu dan sejumlah byte itu kemudian dibaca. Pasangan request-respons pada satu koneksi bergantian secara berurutan, dan sisi yang men-dial selalu menjadi requester.

Request (dialer → receiver)

Strukturrefresh

Respons (receiver → dialer)

Strukturrefresh
FieldUkuranIsi
tagu8Jenis RPC — lihat Jenis RPC (hanya di request)
lenu32, big-endianPanjang byte dari payload yang mengikuti
payloadlen byteTipe openraft yang diserialisasi dalam format postcard

Aturan Manajemen Koneksi

  • len dibatasi maksimum 64 MiB (diperiksa saat diterima). Frame yang melebihi batas, frame yang cacat, tag yang tidak dikenal, atau error pemrosesan Raft semuanya ditangani dengan menutup koneksi — sisi yang men-dial (openraft) menyambung ulang dan mencoba lagi.
  • Sisi yang men-dial memakai ulang satu koneksi per node tujuan. Saat terjadi error I/O, atau jika round trip dibatalkan di tengah jalan, koneksi itu dibuang dan koneksi baru dibuat pada panggilan berikutnya — stream yang terbaca separuh tidak pernah dipakai ulang dalam keadaan tidak selaras.

Terminologi

  • length-prefix — framing yang mengirim panjang body lebih dulu, lalu membaca sejumlah byte itu persis. Tidak perlu delimiter seperti \n, sehingga data biner apa pun bisa dibawa apa adanya.
  • serialisasi — mengubah struct dalam memori menjadi urutan byte yang siap ditransportasikan.
  • RPC (remote procedure call) — pasangan request-respons yang memanggil fungsi di server lain lewat jaringan, seolah-olah memanggilnya secara lokal.