High-level architecture of Heartbeat Microservice

Heartbeat Microservice startup script (misshtbtd.py) gets the configuration from CBS and parses these entries and saves them in the postgres database having table name vnf_table_1. Each entry in the configuration is for a particular eventName. Each entry has missed heartbeat count, heartbeat interval, Control loop name etc. along with many other parameters.

Whenever a heartbeat event is received, the sourceName, lastEpochTime and other information is stored in another postgres database having table name vnf_table_2. It is designed to process the heartbeat event having different sourceNames having same eventName. In such case, sourceName count is maintained in vnf_table_1 which would give number of SouceNames that have same eventName. As and when new sourceName is received, sourceName count is incremented in vnf_table_1

The heartbeat Microservice is designed to support multiple instances of HB Microservice to run simultaneously. The first instance of the HB Microservice would assume the role of active instance, and instances that started running later would become inactive instances. If the active HB microservice is not responding or killed, the inactive HB instance would take over the active role. To achieve this functionality, one more postgres table hb_common is introduced which has parameters specific to active instances such as process id/hostname of the active instance, last accessed time updated by active instance.

Heartbeat Microservice supports the periodic download of CBS configuration. The periodicity of download can be configured.

Heartbeat Microservice also supports the download of CBS configuration whenever configuration changes. Here Docker container would call the function/method to download the CBS configuration.

The heartbeat microservice has 2 states

Reconfiguration state – Download configuration from CBS and update the vnf_table_1 is in progress.

Running state – Normal working that comprises of receiving of HB events and sending of control loop event if required conditions are met.