Documentation
¶
Overview ¶
Package discovery отвечает за начальное обнаружение узлов кластера. При старте реплика читает список хостов из конфига и пытается подключиться к ним.
Discovery выполняется один раз при запуске приложения (в фазе PostExecute). Он не отвечает за динамическое обнаружение новых узлов — это задача Sync.
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Component = compogo.Component{ Name: "cluster.discovery", Dependencies: compogo.Components{ &discoveryConfig.Component, &grpc.Component, }, PostExecute: compogo.StepFunc(func(container compogo.Container) error { return container.Invoke(func( config *discoveryConfig.Config, grpcConfig *grpc.Config, replicaConfig *managerConfig.Replica, m cluster.Manager, logger compogo.Logger, closer compogo.Closer, ) (err error) { if len(config.Hosts) == 0 || (len(config.Hosts) == 1 && config.Hosts[0] == m.Me().GetHost()) { m.Me().AddRole(domain.Master) return } for _, host := range config.Hosts { if host == replicaConfig.Host { continue } err = m.AddPeer(manager.NewPeer(host, m.Me(), &grpcConfig.GrpcConfig, logger.GetLogger("discovery"), closer)) if err != nil { return err } } return nil }) }), }
Component — компонент Compogo для фазы обнаружения. Выполняется после инициализации всех зависимостей (PostExecute).
Логика работы:
- Если список хостов пуст → текущий узел становится мастером.
- Если в списке только текущий хост → текущий узел становится мастером.
- Иначе для каждого хоста из списка (кроме себя) создаётся Peer и добавляется в Manager.
После добавления Peer, Manager начинает синхронизацию состояния через gRPC-стримы.
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.