Service Discovery¶
Since there does not exist a ELT control software wide solution for service discovery yet, the RTC Toolkit introduces a very basic service discovery mechanism that allows lookup and retrieval of service endpoints by name.
The discovery mechanism makes use of the Client-Side Discovery Pattern where a client retrieves endpoints of required services by querying a central service registry (a database).
The service registry is implemented using the same mechanisms as the file based Runtime Configuration Repository and its storage back-end is a single, shared YAML file.
Service endpoints are represented in
URI format and retrieved
using the elt::mal::Uri
class.
Supported Service Types¶
Currently the following service types are supported:
Service Type |
Format |
Description |
---|---|---|
persist_repo_endpoint |
elt::mal::Uri |
Service endpoint of the Persistent Configuration Repository. |
runtime_repo_endpoint |
elt::mal::Uri |
Service endpoint of the Runtime Configuration Repository. |
oldb_endpoint |
elt::mal::Uri |
Service endpoint of the Online Database. |
req_rep_endpoint |
elt::mal::Uri |
CII MAL request/reply endpoint of an RTC Component. |
pub_sub_endpoint |
elt::mal::Uri |
CII MAL publish/subscribe endpoint of an RTC Component. |
For persist_repo_endpoint
only the file URI scheme is supported
(see section Service Discovery Endpoint).
For runtime_repo_endpoint
(see section Data Access for
Runtime Configuration Repository) and oldb_endpoint
(see Data Access for OLDB)
either the cii.oldb URI scheme can be used for the fully fledged implementations,
or the file scheme for the file based implementations.
Limitations and Known Issues¶
The current implementation of the service registry is only a temporary one, it will be replaced by a CII conformant service registry once this is available.
Currently it is not foreseen that developers define custom service types in the service registry. Users are only supposed to re-use the available service types e.g. to add endpoints for new components to the YAML file or to adjust the endpoints of existing components.