Skip to content

Instantly share code, notes, and snippets.

@bmizerany
Created May 25, 2011 06:47
Show Gist options
  • Save bmizerany/990469 to your computer and use it in GitHub Desktop.
Save bmizerany/990469 to your computer and use it in GitHub Desktop.

Clustering Doozer

Overview

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment