Horizontal Cluster Architecture
Horizontal Cluster is a set of different nodes that work together acting as a single logical entity. Each node of the cluster is a dedicated platform server, which is assigned a certain role.
Roles of nodes in Horizontal Cluster:
- Cluster Coordinator supervises cluster operation and access control
- Primary Nodes are executing the business logic of IoT applications and dealing with machine data
- Login Servers handle user connection sessions and UI
- Application Servers are responsible for the hosting application resources and configuration
Some external systems are also used with Horizontal Cluster:
- Database cluster (e.g. Apache Cassandra cluster) provides elastic persistent storage
- Deployment of DevOps environments control application via a version control system or an AggreGate Marketplace server
- External user/tenant registry support ensures smooth integration with the OSS/BSS, billing and similar systems
- Automatic scalability can be achieved by connecting to an infrastructure/virtualization management system
Cluster Node Roles
Horizontal Cluster may grow to thousands of nodes once tenant operations lead to new device connections. Cluster upscaling can be automated via an external IaaS/visualization management system. However, cluster node roles are pre-defined regardless of the cluster size.
Cluster Coordinator is the “brain” of Horizontal Cluster. Its main functions are:
- Overall system supervision
- Resources allocation and distribution
- Role-based access control
- Interaction with an external tenant and user registries
- Billing data provisioning
- Applications deployment control
- Primary nodes deployment and upscaling/downscaling
Fault tolerance and, at the same time, high performance of Cluster Coordinator are achieved by the usage of distributed in-memory storage. All changes of cluster configuration are instantly replicated to all Cluster Coordinator nodes, which operate in active-active mode.
Primary Nodes are the main workers in Horizontal Cluster. The functionality of Primary Nodes includes:
- Communicating with remote devices
- Storing and processing device data
- Executing Digital Twins and machine learning models
- Managing event streams
- Executing any other IoT application logic
All resources of Primary Nodes are separated into realms of different tenants. Cluster Coordinator optimizes each realm to distribute resources of one tenant on the same or neighbor nodes.
Primary Nodes don’t save their state locally and use an external database cluster for persistent storage. If a node fails, its resources are loaded by another primary node, effectively ensuring fault tolerance.
Login Servers act as user connection handlers. They provide access to the platform for desktop client users, web sessions, and mobile applications. Once a user establishes a connection, Login Server interacts with Cluster Coordinator to prepare a UI-level resource set according to the user's role. All UI and user analytics activities are performed on Login Servers, so concurrent session number growth can be easily mediated by adding new instances of Login Server and registering them in network load balancing infrastructure.
Application Servers host master copies of low-code applications and their configurations. Application updates are delivered to Application Server nodes via a version control system or marketplace. Some application logic can be executed directly on Application Servers while other modules are replicated to Primary Nodes by Cluster Coordinator.