Page tree
Skip to end of metadata
Go to start of metadata
BellaDati IoT Data Collector is distributed microservices based application implemented in Java utilizing proven frameworks Hazelcast and Vert.x.

Collector modules


Provides licensing and management services to other modules

  • provides auditing services and provides status of receivers and sensors
  • recognizes and cooperates with all receivers and senders that are deployed on the same local machine or on remote machines
  • It automatically recognizes other modules, that are running on the same machine or on different servers


Receives data from IoT devices, eventually subscribes the data published by external services. It provides authentication and message verification mechanism to ensure the data security and integrity. There are several modes, in which the Receiver can operate:

  • MQTT server  - module is running as MQTT server, which allows devices to either subscribe or publish messages to it
  • MQTT subscribe - module subscribes to existing MQTT broker and receives messages from it
  • HTTP POST consumer - module accepts HTTP POST request with data from devices
  • UDP server - module accepts UDP datagrams
  • Telnet server/client - module is running as telnet server or telnet client
  • Websockets server/client - module - module is running as Websockets server or client


Sender is used to read data from receiver and conditionally execute automated actions, for example:

  • Send data to the BellaDati backend over REST API

  • Send data to 3rd party systems using HTTP protocol

  • Send email

  • Save data to file

  • Publish MQTT messages to the MQTT broker

Modules API

Each IoT Data Collector module provides set of HTTP endpoints, which can be used to manage module's configuration, read status or received data.

Scalability and distributed processing

  • BellaDati IoT Data Collector is built on top of native clustering and distributed storage approach.
  • Messages are distributed among the modules running in a computer cluster, which allows horizontal scaling of processing and available storage.
  • Message backups are also distributed among particular modules to protect against failure of any single module.
  • BellaDati IoT Data Collector provides central, predictable scaling of applications through in-memory access to frequently used data and across an elastically scalable data grid.
  • BellaDati IoT Data Collector is a robust and layered system, which ensures adequate stability and reliability

Microservices based architecture

BellaDati IoT Data Collector is implemented in reactive style, which is a new way of building distributed applications taking advantages of modern CPU architectures and using resources more efficiently. Combined with microservices, it provides a perfect flexibility where each of its modules is individually developed, released, deployed, scaled, updated and reloaded. It also infuses the required resilience into the system to avoid failure cascading and keep the system responsive even when facing failures. Last but not least, the asynchronous communication, promoted by its reactive implementation, copes with the interaction challenges, but also the concurrency required to face load variations.

BellaDati IoT Data Collector is distributed reactive system, running on the top of the Java Virtual Machine using an asynchronous and non-blocking development model. Its ecosystem are just JAR files used and has four key properties:

  1. Uses asynchronous message-passing
  2. Is elastic
  3. Is resilient
  4. Is responsive

Each of the collector modules, which are forming the BellaDati IoT Data Collector, interact using asynchronous message-passing regardless of whether these modules are co-located or distributed. Each module reacts to the received message by using an asynchronous non-blocking development model. This allows the collector to more effectively share resources by doing work only in response to outside messages.

Collector modules are also elastic, meaning they react to increasing load well because of the architecture highly concurrent and distributed. It also takes advantages of multi-core CPUs.

Collector modules are also resilient, treating failure as a first-class citizen --- it can face failures, isolate them, and recovers using sophisticated strategies.

The final property, responsive, means the collector is real-time and engaging. It continues to provide its service in a timely-fashion even when the system is facing failures or peak of demand.

  • No labels