Edge++ Service

From Datonis
Jump to: navigation, search

Welcome to the Edge++ documentation.

Basic Flow:

  • The source data coming to Edge from various Adapters is pushed into Redis input-queues for processing and the processed data is put to the Redis output-queue which is used for transmitting data & alerts to Datonis and executing instructions.
  • The events are processed using Ruby Faas Functions that are present in the Rails framework of Edge++. It is also used for showing operator screens using this data.
  • Redis is used as a shared data-store for Edge and the Rails Framework
  • The number of Redis input queues is a configurable entity that allows us to process data parallelly. It has to be configured in the Rails framework.
  • For example - if there are 30 things configured on Edge, then the number of Redis Input queues can be 5.
  • For one Redis Input Queue, there is one long-running Rake Task which checks if there is any data available in a particular Redis input Queue. The input queue in which a particular thing’s data should go is consistent throughout. This is achieved by distributing the things between the number of configured Redis input queues. The distribution is done using the unique hashCode of the thingKeys.
  • The long-running RakeTask for each input queue has to determine the type of the popped message from the input queue viz. Data, instruction. And the event is processed using the process faasFunction provided along with the event JSON. This faasFunction processes the event and returns the processed values. The output is pushed into the output queue which is read by the Edge. We can also return null which will not push the event to the output queue. This can be decided by analyzing the processing logic.

Please refer links below:

Architecture:

Edge++ high level design .jpg

Instruction flow:

Edge++ Instruction Flow.jpg