anchor.diff:  
   === Publishing to the Cluster
   
  -Next we are going push messages into the cluster itself. So that the client is able to fail over to different nodes as
  -nodes come and go in the cluster the Aeron publications are wrapped in a class called `AeronCluster`. This is the
  +Next we are going push messages into the cluster itself. So that the client is able to fail over to different nodes, as
  +nodes come and go, in the cluster the Aeron publications are wrapped in a class called `AeronCluster`. This is the
   second of the two items that are connected at start up. This class provides an API very similar to the Publication API.
   
   [source, Java, indent=0, options="nowrap"]
  
positive.code: 
  Within Aeron Cluster, replication (ensuring that a follower node has the same state as the leader) and recovery
  (restoring a stopped node to its previous state)footnote:[Where stopping could include crashing or manually shutting
  down] are the same problem or at least at similar enough that they use the same mechanism. They rely on three
  functions, firstly, some known initial state, this could either be the state when first provisioned (a 'null' or empty
  state) or some snapshot of state at a point in time. Secondly, an ordered log of all input messages, this is handled by
  Cluster's Raft implementation. Thirdly, the application logic needs to be deterministic, i.e. it must derive all of its
  resulting state and output events from the initial state and the input messages, such that for the same inputs it will
  always get the same result. This can be a trickier than it first seems as it excludes some functionality that we may
  normally take for granted.
  
  [TIP]
  ====
  
negative.code: 
  In a production deployment, you will want to run the 3 instances on three separate servers, however for our example we
  want to run the services on a single machine. This does make port allocation a concern as each node within the cluster
  needs to bind to a number of ports, so we need to make sure are no clashes. We could do this with VMs or containers,
  but in the interest of simplicity we are going to specify a port range for each node. For example:
  
  - Node 0, ports: 9000-9099
  - Node 1, ports: 9100-9199
  