In Zab, assume we have a cluster consists of 3-servers. To deliver a write request, it must run 3 communication steps proposal, acknowledgement and commit. As Zab uses reliable FIFO, it is possible to remove commit round. As soon as a follower receives a proposal, it logs, sends an ACK and commits locally. Upon receiving ACK from any follower, leader commits a proposal locally, no COMMIT message need to be sent to followers. In this case, all servers commit a proposal in two round-trips, resulting in reducing latency particularly in followers.
Note that this optimization can only work in 3-servers cluster (follower reaches a majority as soon as it acks). Does anyone see any problems with such (small) optimization? Ibrahim
