Important design decisions
Overall Description
The coordination layer offers communication through a message broker and a data transmission via https. This is illustrated in the below figure. In general communication is initiated and actions are coordinated via the message broker, while the actual transmission of data is done via data transmission.
Message Communications
Start communication via Topic
All communication via the Coordination layer starts via a Topic that is send to all. It is up to the individual subscribers to determine whether it is a message that concerns them, for example a Get message does only concern the pillars involved in a certain service level agreement.
Atomic operations
Operation must be as atomic and simple as possible. this serves to give simplicity, and to get as little overlap between different operations as possible.
Using Get as example
The Get operation can begin by asking pillars who will be the fastes, or it can start by actually sending a get message for a specific default pillar.
In the strict interpretation of single operations this will be seen as two operations
- GetTime
- Get
An the difference between the two get scenarios will be that teh first will both consist of a GetTime and a Get opertation, while the later will only consist of a Get.
The below figure illustrates the messages of the two operations illustrated, where messages belonging to the same communication in an operation is placed edge to edge. note that it only includes messages on the message bus, i.e. excluding the actual data transmission.
Since each communication is started via a topic this means that the GetTime and the Get is sent to a Topic. This is illustrated in the below sequence diagram
<TBD> See http://wiki.statsbiblioteket.dk/BitmagasinWiki/Sekvens1
The advantages are:
- the Get operation works similar for the two scenarios
- it will be easy to handle shift in services, e.g. exchanging one primary pillar with another, exchaging pillars in a SLA etc.
The disadvantages can be:
- there may be a heavy load of messages that all substribers must go through in order to find the ones interesting for themselves.