anchor.diff:  The clustered service container will notify the service it has started using the `onStart` callback. This will occur
   before input messages are received, either from log replay or live from a client. It is during this phase that we need
   to load the initial state of the service. Aeron Cluster passes in an `Image` that will contain the most recent valid
  -snapshot of the service. The service should take care of deserializing the data from the image and initialize its state.
  +snapshot of the service. The service should take care of deserializing the data from the image and initialise its state.
   We will come back to the details of how the snapshot is loaded after we've looked how messages are handled and how a
   snapshot is stored.
   
  
positive.code: 
  == Configuring a Cluster
  
  Now we have our application implemented we can move onto running it in a cluster. There are a number of moving parts to
  setting up a cluster node, one of the trickiest parts of using Aeron Cluster is getting the configuration correct. We
  are going to start with a static three-node cluster with a simplified configuration where all the components
  (MediaDriver, Archive, ConsensusModule and ClusteredServiceContainer) for a single node within a single process. Later
  we will then start the cluster as three separate processes.
  
  === Running Multiple Nodes on the Same Host
  
  
negative.code: port has an offset of 1, so for Node 2 it will have port 9201.
  
  To start the cluster node we are going define our own class with a main method. It will construct and start all the
  necessary components. As indicated above we are going to give each node of the cluster a unique id (0, 1, and 2). We
  are also going to use this value as the cluster member id.
  
  [source, Java, indent=0, options="nowrap"]
  ----
  