Documentation
¶
Overview ¶
Package manager предоставляет gRPC-сервис для обмена состоянием между репликами.
Это самый сложный и важный gRPC-сервис в кластере.
Использует Bidi-стримы для:
- Обмена метаданными (Meta)
- Обмена состоянием (State)
- Поддержания соединения с репликами
Каждая реплика открывает Bidi-стрим к другим репликам и отправляет:
- Meta — при подключении
- State — периодически (через Process)
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Component = compogo.Component{ Dependencies: compogo.Components{ &grpcServer.Component, &grpcClientConfig.Component, &manager.Component, &repeater.Component, }, Init: compogo.StepFunc(func(container compogo.Container) error { return container.Provide(NewService) }), PreExecute: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(func( r repeater.Repeater, s *Service, grpc *grpcServer.Server, delayConfig *manager.Delay, m cluster.Manager, ) error { service.RegisterPeerServer(grpc.GetGRPC(), s) m.OnAddPeer().Subscribe(s.onAddPeer) return r.AddProcess(repeater.NewUnlockTask( "cluster.grpc.replica", delayConfig.SyncState, s.Process, )) }) }), }
Component — компонент для регистрации gRPC-сервиса Peer.
Жизненный цикл:
- Init — регистрирует конструктор Service в DI-контейнере.
- PreExecute — подписывается на добавление Peer'ов и запускает задачу рассылки состояния.
Особенности:
- onAddPeer — создаёт Bidi-стрим к новому Peer.
- Process — периодически рассылает состояние всем Peer'ам.
var PeerAlreadyExistsError = errors.New("peer already exists")
Functions ¶
This section is empty.
Types ¶
type Service ¶
type Service struct {
service.UnimplementedPeerServer
// contains filtered or unexported fields
}
Service — реализация gRPC-сервиса Peer.
func NewService ¶
func NewService( m cluster.Manager, delayConfig *managerConfig.Delay, grpcConfig *grpcClientConfig.Config, logger compogo.Logger, closer compogo.Closer, ) *Service
NewService создаёт новый сервис Peer.
func (*Service) Process ¶
Process — периодическая задача для рассылки состояния.
Отправляет текущее состояние всем подключённым репликам. Запускается через Repeater с интервалом delayConfig.SyncState.
func (*Service) Subscribe ¶
Subscribe — обработчик подключения реплики.
Это Bidi-стрим, через который реплики обмениваются состоянием.
Алгоритм:
- Получает Meta от подключающейся реплики.
- Создаёт или обновляет Peer.
- Добавляет Peer в менеджер.
- Отправляет своё Meta обратно.
- Запускает обработку входящих сообщений.