Details
Description
We need to check whether it is reasonable and feasible to port the etcd Raft implementation [1] to Java, maintaining the same API interaction model:
- Raft instance is a single-threaded state machine with methods to accept messages, return progress to be processed by a raft client, and tick callback
- Raft instance does not actively send messages, not does it actively write to persistent log or the state machine
The implementation should demonstrate how the module will be used with omitted components: Raft Log, State Machine, Messaging, Timer.
The implementation must cover:
- Ability to provide leader/follower callbacks
- Ability to read linearizable and relaxed commit indexes
The implementation may cover:
- Replication group reconfiguration
The implementation prototype does not cover:
- Multi-raft groups
- Asynchronous state machine mutation