Skip to content

Discovery

Within a dynamic system, it is useful for Components to be able to discover other Components within the System, Subsystem, or Node. This allows for the System configuration to change while in operation while reducing configuration overhead. The Discovery service provides this discovery mechanism.

The Discovery server is responsible for providing the queryable listing of discoverable Subsystems, Nodes, Components, and/or Services, while the Discovery client is responsible for registering the Services available on a Component with the Discovery server and/or querying the Discovery server for discoverable Components.

The figure below shows the possible interactions between a Discovery client and server:

Possible interactions between Discovery Client and Server

  • Component B hosts a Discovery server. This adds support for discoverability to the System, Subsystem, Node, or Component. By hosting the a Discovery server, Component is discoverable.
  • Component A is a Discovery client and registers itself with Component B such that Component B knows about Component A. By registering itself with Component B, Component A is discoverable.
    • It is possible for Component A to register itself with Component B without knowing that Component B exists (by broadcasting the RegisterServices message).
  • Component C is a Discovery client and can query Component B for a list of discoverable Components. This allows Component C to discover both Components A and B.

Component Roles when using the Discovery Service

A Component can function as one or more of the following roles when using the Discovery service:

  1. A Registrant (client) that is responsible for the registration of Services with a Discovery server.
  2. A Database (server) that is responsible for maintaining a listing of discoverable Subsystems, Nodes, Components, and/or Services.
  3. A Querier (client) that is responsible for querying a Discovery server (database) about the existence of Subsystems, Nodes, Components, and/or Services.

Additional Information