Configuration Server

The Configuration Server implements four critical services for a Deephaven cluster:

  • Configuration service, allowing Deephaven servers to read configuration properties at startup.
  • Schema service, allowing the creation and removal of schemas.
  • Registry service, allowing the registration of query workers (which can facilitate dynamic routing).
  • Routing service, allowing the definition of ingestion sources and making them available for use in the cluster.

Client authentication

Any program requiring these services needs to authenticate with the authentication server first. Once authenticated, the program requests an authentication token from the Authentication Server and provides it to the Configuration Server to prove its credentials. The token is an opaque array of bytes from the client's perspective, which the controller validates by doing its own call to the authentication service to confirm the credentials. This operation is referred to as the "three-way handshake" between a client, the authentication server, and another Deephaven service (in this case, the relevant service implementation inside the Configuration Server).

Fault Tolerance

The Configuration Server uses a model of fully symmetric active replicas. In the default configuration, when clients need to make a call in to any of the services provided by the Configuration Server, on that first call, they will pick one host at random from the configured set and stick to that server for all subsequent requests. If the chosen server eventually becomes unavailable, a different one will be picked randomly and used instead. Note that from a load balancing perspective, losing one server implies serving the same client request load from a reduced number of servers, which, in turn, implies a higher load on each server.