If an application were to be installed on an edge node, preferably delivered by Open Horizon, that could query the system for information, surface it, and make the data available in an efficient and edge-native manner, that would be ideal. This may mean updating the node properties, and it may mean making the information remotely queryable without the operator logging in to the edge node.
The design includes 3 layers described below:
- The platform functionality
- The node functionality
- The query and monitoring functionality
The Platform Functionality - Extending Open Horizon as a Platform:
AnyLog extends the Open Horizon functionality delivered to the edge as a platform:
- A shared metadata layer (hosted on blockchain or a master node) that contain policies shared among participating nodes. For example:
- Policies representing the members of the network.
- Policies representing the schemas used.
- Policies representing configurations.
- Policies representing nodes and users permissions.
- Any metadata that needs to be shared among nodes of the network.
- A Peer to Peer and secure network using the AnyLog protocol allowing nodes to exchange messages.
The Node Functionality - Extending the functionalities of nodes deployed by Open Horizon:
AnyLog extends the Open Horizon functionality delivered to the individual nodes by using the platform functionality such that:
- Data that needs to be monitored will be persistent in a local database.
- The schemas that are used to store the data are shared among all participating nodes.
- Each node is extended to include a rule engine that can act on data and status events.
- Each node is extended to include southbound connectors (to ingest data) and northbound connectors (to share data).
- Each node can collect and monitor the target metrics.
The query and monitoring functionality
Nodes members of the network, as well as applications connected to nodes in the network, are able to view all the monitored data as if it is a single and unified collection of data.
Practically, nodes view a virtual database based on the schema published by the shared metadata layer and can issue queries to the data as if the data is centralized.
In addition, a network can be configured such that nodes would push data to an aggregator node periodically, or based on events.
The query or monitoring can view an entire network as a single machine, or dynamically partition the network to satisfy the user view by criteria's determined by the users (and represented in the shared metadata policies).
For example: by locations, by type of software deployed, by owners etc.
User experience is similar to the experience with a cloud/centralized solution:
- From a single point, the distributed data can be queried as if the data is hosted in a centralized database.
- A user selects a database from a list of virtual databases.
- A user selects a table from a list of virtual tables.
- A user issue q query to the table.
- The user can specify all nodes with relevant data (nodes with data associated to the table), or specify a subset of nodes (for example: nodes deployed in a region or nodes with a named data owner).
- From a single point, all the resources are monitored and managed as if the resources are hosted in a single machine.
- User can issue a status request from all nodes or to a subset of nodes (for example: nodes deployed in a region or nodes with a named data owner).
- Users can query an aggregator node.
- Using the rule engine, users and processes can be alerted by events on the individual nodes or on the aggregator node.
Are there any ways to optionally extend the CLI when components are installed? If not, they we should avoid this.
The lower level AnyLog functionality is enabled by a CLI, this can extend the hzn CLI.
AnyLog CLI includes dynamic help with links to help pages on GitHub - all of that can be available as an extension of the hzn CLI.
Installing the Anylog agent on an edge node should provide metrics collection and surfacing.
N/A
Ideally, the Anylog component should not need root-level access.
The Anylog component maintains its own P2P network.
Link to Anylog docs.