Server dalam sistem terdistribusi dapat memiliki salah satu dua peran : Leader dan Follower. Peran tersebut secara dinamis ditentukan melalui proses pemilihan/voting.
- Hanya terdapat 1 leader dalam satu sistem. Secara periodik, server yang terpilih menjadi leader akan mengirimkan heartbeat message ke semua server follower.
- Setiap server follower memiliki countdown Election Counter yang akan selalu menghitung mundur. Nilai counter digenerate secara random. Nilai counter tersebut akan di-reset (di-random kembali) jika server follower mendapatkan heartbeat message dari leader.
- Jika countdown counter habis dan follower tidak menerima heartbeat message dari leader, bisa diasumsikan bahwa leader bermasalah, sehingga follower tersebut mengajukan diri menjadi kandidat leader.
- Kandidat leader mengirimkan message RequestVote untuk meminta vote dari server lain dengan terlebih dahulu melakukan increment pada term/periode. Misal, jika sebelumnya term/periode 3, maka term/periode pemilihan saat ini adalah term/periode 4.
- Jika follower tersebut mendapatkan jumlah vote secara kuorum (2/3) dari keseluruhan jumlah server, maka dia berperan menjadi leader.
- Pada kondisi khusus dapat dimungkinkan terdapat lebih dari 1 server yang memiliki countdown counter yang sama sehingga berkemungkinan terjadi split vote. Pada kondisi ini, hanya server yang mendapat vote kuorum yang memenangkan pemilihan. Jika tidak ada yang menang, maka dilakukan pemilihan ulang dengan term/periode yang baru.
Bahasa Pemrograman : Python
Mekanisme Komunikasi : ZeroRPC