A Doozer cluster is one or more doozerd
processes interconnected with one
another, where all the participants are performing consensus. Each member of a
cluster is refered to as a cal. CAL stands for "Coordinator, Acceptor,
and Learner" as defined by Paxos.
CALs can propose changes to the state of the system (or mutations) through consensus, vote for their proposals and/or others, and learn winning proposals. Each proposal is given a sequence number in which it wants to be added to the log of history. Only one mutation per sequence number is allowed, ever. A proposal can contain many changes to the store, know as a revisions or rev (see [Data Model][]). These revisions are ordered according to the sequence of bytes they came in.
A doozerd
process attached to a cluster that is not participating in
consenses is a slave. Slaves can only learn winning proposals and update their
state accordingly. Meanwhile, they are watching for an available cal
slot to become available. In the event of a cal slot becoming available, slaves
will attempt to lock the right to take over that responsibility.
NOTE: One doozer alone is suffucient for development purposes.