discovery

package
v1.0.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 23, 2026 License: MIT Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// HostsFieldName — имя флага для указания начального списка хостов кластера.
	HostsFieldName = "cluster.discovery.hosts"
)

Variables

View Source
var Component = compogo.Component{
	Name: "cluster.discovery.config",
	Init: compogo.StepFunc(func(container compogo.Container) error {
		return container.Provide(NewConfig)
	}),
	BindFlags: compogo.BindFlags(func(flagSet flag.FlagSet, container compogo.Container) error {
		return container.Invoke(func(config *Config) {
			flagSet.StringSliceVar(&config.Hosts, HostsFieldName, nil, "")
		})
	}),
	Configuration: compogo.StepFunc(func(container compogo.Container) error {
		return container.Invoke(Configuration)
	}),
}

Component — компонент Compogo для инициализации конфигурации discovery.

Жизненный цикл компонента:

  1. Init — регистрирует конструктор NewConfig в DI-контейнере.
  2. BindFlags — привязывает флаг командной строки --cluster.discovery.hosts.
  3. Configuration — загружает конфигурацию из Configurator (и переопределяет флагами).

После этого конфигурация доступна для внедрения в другие компоненты через DI.

Functions

This section is empty.

Types

type Config

type Config struct {
	Hosts []string
}

Config содержит настройки для обнаружения узлов.

Механизм discovery работает следующим образом:

  • Если список Hosts пуст — текущая реплика становится мастером (единственный узел).
  • Если список содержит только текущий хост — аналогично, она становится мастером.
  • Если список содержит другие хосты — реплика пытается подключиться к ним, обмениваясь метаданными и состоянием.

После успешного обнаружения, реплики синхронизируются через другие механизмы (election, sync, reaper), и список discovery больше не используется до перезапуска.

func Configuration

func Configuration(config *Config, configurator compogo.Configurator) *Config

Configuration загружает конфигурацию из Configurator и устанавливает дефолтные значения.

Важно: если Hosts не задан через флаг, он пытается получить его из Configurator. Это позволяет гибко настраивать кластер через файлы конфигурации, переменные окружения или флаги командной строки.

func NewConfig

func NewConfig() *Config

NewConfig создаёт новый экземпляр конфигурации с пустым списком хостов. Используется в DI-контейнере как конструктор.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL