5.4 Architectural considerations

In Figure 5.4.1, different supported deployment architectures for NGSI-LD systems are shown.

NGSI-LD Architecture

Figure 5.4-1: NGSI-LD Deployment Architectures

The central deployment has a central Context Broker storing all information in the system. Context Producers create, update and delete the information stored in the Context Broker. Context Consumers retrieve, query and subscribe to information stored in the Context Broker.

In the distributed deployment, there are Context Sources, possibly in addition to Context Producers. Context Sources store their own information and implement the NGSI-LD operations for retrieving, querying and subscribing to information. In order to be found by the Context Broker, the Context Sources register what kind of information they have with the Context Registry. On a request from a Context Consumer, the Context Broker checks the Context Registry for relevant Context Sources in addition to its own storage. It aggregates the infomration from the Context Sources and its own storage before returning it to the Context Consumer, i.e the distribution is transparent to the Context Consumer.

As these are architectural roles, an application can implement multiple roles at the same time, e.g. act as both a Context Consumer and a Context Producer.

Since Context Brokers also implement all operations of Context Sources, they can act as Context Sources themselves, and thus hierarchical architectures can be built as shown in the case of the Federated Deployment. However, the difference between distributed and federated deployments is more that in the case of a distributed deployment it is assumed that the whole deployment is set up and controlled by a single stakeholder, i.e. the distribution is intentional, whereas in a federated deployment, the assumption is that multiple stakeholder want to (partially) share their information.

As mentioned above, the underlying distribution is largely transparent to the Context Consumers, thus deployments can evolve from centralized to distributed or federated without having to change the Context Consumer.