anchor.diff:  === Components of Aeron Cluster
   
   One of the key design goals of Aeron is to build a system that is highly composable. For example, Aeron Archive which
  -provides a means to persist an Aeron stream is used by Aeron Cluster to persist the Raft log.  Messages are sent around
  -a cluster using Aeron's Media Driver. Therefore, Aeron Cluster is an aggregation of a number of existing Aeron
  -components and a few new ones. To successfully run a cluster node it is necessary to have one (or at least one in the
  -case of ClusteredServiceContainer) of each of the Aeron components running. Because all communication between these
  -components within a single node uses IPC they can be run all in the same process, in separate processes or any arbitrary
  -combination.
  +provides a means to persist the Raft log created by Aeron Cluster. Aeron Cluster sends messages via a Media Driver.
  +Therefore, Aeron Cluster is an aggregation of a number of existing Aeron components and a few new ones. To successfully
  +run a cluster node it is necessary to have one (or at least one in the case of ClusteredServiceContainer) of each of
  +the Aeron components running. Because all communication between these components within a single node uses IPC they can
  +be run all in the same process, in separate processes or any arbitrary combination.
   
   ==== MediaDriver
   
  -The MediaDriver is the means by which data is moved into, out of, and around the cluster. Aeron Cluster reuses the
  +The MediaDriver is the means by which data is sent into, out of, and around the cluster. Aeron Cluster reuses the
   Publication and Subscription functionality in Aeron to handle all distributed and inter-process messaging.
   
   NOTE: Currently, only the Java implementation of the MediaDriver is supported for use in Aeron Cluster.
  
positive.code: 15060
  ----
  
  Note the second argument to the `ClusterTool` is the directory where the Consensus Module's data is stored, and we have
  substituted the `leaderMemberId` to locate the correct directory for the leader.
  
  This will have printed out a simple number which is the pid of the leader process.
  
negative.code: for `offer` is checked as it is a non-blocking call and not guaranteed to succeed.
  
  <6> When doing any busy loops within the clustered application use the Cluster's `IdleStrategy::idle(int)` within the
  wait loop to allow the service to wait while allowing other threads to progress. It will take care of handling thread
  interrupts and ensure the node fails correctly.
  
  === Storing State
  
  