Raft guarantees that each of these properties is true at all the time
- Election Safety: at most one leader can be elected in a given term (not time but term) -> ($5.2 Leader Election)
- Leader Append-only: a leader never overwrites or deletes entries in its logs; it only appends new entries; -> ($5.3 Log Replication) (but followers may overwrite or truncate their logs)
- Log Matching: if two logs contain an entry with the same index and term, then logs are identical in all entries up through the given index; -> ($5.3 Log Replication)
- Leader Completeness: if a log entry is commited in a given term, then that entry will be present in the logs of the leaders for all higher numbered terms; ($5.4)
- State Machine Safety: if a server has applied a log entry at a given index to its state machine, no other server will ever apply a different log entry for the same index ($5.4.3)
- AppendEntries
- Log Replication
- Persistence
- Membership Changes
- Log Compaction
- Example of Pluggable State Machine
- rate limiter
- pressure testing
- otel: metrics
grpc part https://grpc.io/docs/guides/performance/
- try to change to streaming RPCs (with keep alive) or keep both and do a benchmarking
- channel optimization
- error handling
- authentication
- flow control
| Number | Feature Topic |
|---|---|
| 1 | deadline/timeout |
| 2 | graceful shutdown (https://grpc.io/docs/guides/server-graceful-stop) |
| 3 | server/client interceptors |
| 4 | compression |
| 5 | retry (partially used) |
- async all with future pattern
- retry call with timeout
- fan-in/fan-out in RAFT
- short stopping in RAFT
- ticker, timer
- context examples summary
- plummer and channels
- add batching to handling ClientCommands, and send AppendLogEntries
- check prof Yang's improvements of paxos for ideas
- check architecture classes of caching and memory hierarchy for ideas

