1 client will have one dashboard, and manage some edge cluster devices, 1 cluster has many devices, 1 cluster can contains different set of edge device services (with other clusters)
So 1 dashboard will have multiple REST services for each cluster.
So these tasks will be:
Dashboard web must have model to manage many edge REST clusters
REST for each cluster is able to manage multiple devices
REST to manage device services (done)
Ref: #15
Current Situation
REST service is project :dashboard:connector:edge
Edge device is project :edge:bios
Using hazelcast member to join all edge devices and REST service in one cluster
Bad things:
hazelcast member uses too much RAM when cluster is grown up
REST service is not considered as leader, when it is gone, one of edge device is selected as leader
1 client will have one dashboard, and manage some edge cluster devices, 1 cluster has many devices, 1 cluster can contains different set of edge device services (with other clusters) So 1 dashboard will have multiple REST services for each cluster. So these tasks will be:
done
) Ref: #15Current Situation
REST service
is project:dashboard:connector:edge
Edge device
is project:edge:bios
hazelcast member
to join all edge devices andREST service
in one clusterhazelcast member
uses too much RAM when cluster is grown upREST service
is not considered asleader
, when it is gone, one ofedge device
is selected asleader
Overview Solution
hazelcast client
inedge device
REST service
asleader
withhazelcast member
Kafka
as alternative forhazelcast
Useful resource
Acceptance criteria
:core:base
ClientListener
when one client is joined or unjoined. Similar withClusterNodeListener
IClusterDelegate
addregisterClientListener
,findClientById
,getAllClients
ClusterConfig
to add listener address formember listener
andclient listener
. Remember modify json config file. See here and here:core:cluster:hazelcast:client
(new project)hazelcast-client
dependencies:core:cluster:hazelcast
HazelcastClientListener implements ClientListener
HazelcastClusterDelegate
based on changes inIClusterDelegate
Hazelcast client
:dashboard:connector:edge
:core:sql
(test inh2
, production inpostgres
)REST endpoint
to:edge:bios
:core:cluster:hazelcast:client
in dependencieshazelcast client
to connect:dashboard:connector:edge
:edge:bios
can send/receive data from:dashboard:connector:edge