The architecture chapter describes the overall architecture of Eclipse Ditto and in detail which sub-components fulfill which responsibilities.

Top level component view

This overview shows the Ditto services (components), the externally provided and consumed API endpoints, the external dependencies (MongoDB and nginx) and the relations of the services to each other.

Ditto services and context
Ditto services in blue and context with nginx as reverse proxy and MongoDB

The components have the following tasks:


Ditto consists of multiple “microservices” as shown in the above component view.

A “microservice” in Ditto is defined as:

  • has its own data store which only this microservice may access and write to
  • has an API in form of signals (commands, command responses, events)
  • can be accessed by other services only via the defined signals


All microservices can communicate asynchronously in a Ditto cluster. Communication is done via Akka remoting which means that each service acts as server, providing a TCP endpoint, as well as client sending data to other services.

Therefore, it is required that all Ditto microservices can reach each others port 2551.

Another consequence is that all messages which are sent between Ditto microservices are in a way serializable and deserializable. All Ditto signals can be serialized from Java objects to JSON representation and deserialized back from JSON to Java objects.

Tags: architecture