Andre's Blog

20160907 How To Pass Only New Information


The CISystem Requirement Specification says, a node shall update all connected nodes continuously about its state and about the states of all connected nodes.

To reduce traffic and time to pass all this information around again and again a protocol to communicate which information has changed is needed.

My idea is to bundle passed information with a version number. This version number is evaluated from the receiving node to decide which information shall be requested and then the server sends only the new information.

In this post just use version from now on, it means the version number.

Maybe an Integer number is sufficient to be used as version, it would be increased every time the information changes. I have to figure out if I need one or two Integer objects to represent the version, something like "x.y" where x is incremented when y has reached the maximum value which can be represented.

Currently I know that information will be

  1. which nodes are online
  2. the joblists, the states of the jobs and everything related to the jobs

Most of these informations have only some states like

  1. available
  2. started
  3. stopped
  4. finished

so a simple Integer should be enough as version.

I am unsure if it makes sense to communicate that a node goes down, because every node is connected with every other node, so every node is noticing via an exception when a node drops the connection.

It may be useful to have this information to be able to see which node was working on a job while it went offline.

Only the owner or producer of the information may increase the version, otherwise it could be possible that different nodes share the same information using different versions.

Sure, when a node goes down it is very unlikely this node can update its states. In this scenario I see the current master node responsible for a joblist as the owner of the joblist information. As mentioned in the CISystem Requirement Specification there will be a priority list which defines which node takes over the responsibility for the joblists of a node going offline.

Select where to go ...

The Blog
My Technical Blogs
Blogs Of Friends