You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
consul/contributing/rpc
Daniel Nephin da67bdcc31
contrib: add first draft of RPC docs
3 years ago
..
streaming
README.md contrib: add first draft of RPC docs 3 years ago
routing.mmd contrib: add first draft of RPC docs 3 years ago
routing.svg contrib: add first draft of RPC docs 3 years ago

README.md

RPC

This section is a work in progress.

The RPC subsystem is exclusicely in Server Agents. It is comprised of two main components:

  1. the "RPC Server" (for lack of a better term) handles multiplexing of many different requests on a single TCP port.
  2. RPC endpoints handle RPC requests and return responses.

The RPC subsystems handles requests from:

  1. Client Agents in the local DC
  2. (if the server is a leader) other Server Agents in the local DC
  3. Server Agents in other Datacenters
  4. in-process requests from other components running in the same process (ex: the HTTP API or DNS interface).

Routing

The "RPC Server" accepts requests to the server port and routes the requests based on configuration of the Server and the the first byte in the request. The diagram below shows all the possible routing flows.

RPC Routing

source

The main entrypoint to RPC routing is handleConn in agent/consul/rpc.go.

RPC Endpoints

This section is a work in progress, it will eventually cover topics like:

  • net/rpc - (in the stdlib)
  • new grpc endpoints
  • Streaming

RPC connections and load balancing

This section is a work in progress, it will eventually cover topics like:

  • agent/router
  • agent/pool