com.bigdata.quorum.package.html Maven / Gradle / Ivy
Quorums
This package defines interfaces and implementations for a quorum of highly
available services. Each quorum has a replication factor k, which
must be an odd integer. A quorum with k := 1
is a singleton
quorum and is not highly available. Highly available quorums have
k := 3
or greater.
Persistent bigdata® services have a lastCommitTime in each root block.
For the purpose of a highly available service, this timestamp provides a summary
of the persistent state of the quorum. When (k+1)/2
services in the
quorum vote for the same lastCommitTime, a simple majority exists and the quorum
can meet. The quorum will elect a leader, which will assign a quorum token,
and followers. Each quorum token is distinct. Applications can read and write
on a quorum while it is met (all writes must be directed to the quorum leader).
If the quorum breaks, then the token is cleared and operations will fail.
A quorum is inherently robust. Writes are replicated from the leader to the
followers using a write pipeline so each service in the quorum has the same
persistent state. If a service in a highly available quorum fails, the quorum
will not break (unless the leader fails, in which case the quorum will meet again
with the remaining services).