Files
neon/docs/broker.md
Arseny Sher 7850fe4fa6 Add readme.
2022-11-21 10:45:25 +04:00

1.1 KiB

Neon broker

Neon storage broker targets two issues:

  • Allowing safekeepers and pageservers learn which nodes also hold their timelines, and timeline statuses there.
  • Avoiding O(n^2) connections between storage nodes while doing so.

This is used

  • By pageservers to determine the most advanced and alive safekeeper to pull WAL from.
  • By safekeepers to synchronize on the timeline: advance remote_consistent_lsn, backup_lsn, choose who offloads WAL to s3.

Technically, it is a simple stateless pub-sub message broker based on tonic (grpc) making multiplexing easy. Since it is stateless, fault tolerance can be provided by k8s; there is no built in replication support, though it is not hard to add.

Currently, the only message is SafekeeperTimelineInfo. Each safekeeper, for each active timeline, once in a while pushes timeline status to the broker. Other nodes subscribe and receive this info, using it per above.

grpcurl can be used to check which values are currently being pushed:

grpcurl -proto broker/proto/broker.proto -d '{"all":{}}' -plaintext localhost:50051 neon_broker.NeonBroker/SubscribeSafekeeperInfo