election

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: 3 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// AgeSyncFieldName — флаг для таймаута синхронизации "возраста" (term).
	// Этот таймаут определяет, сколько реплика ждёт ответы на запросы AgeSync.
	AgeSyncFieldName = "cluster.delay.election.age"

	// VoteFieldName — флаг для таймаута голосования.
	// Этот таймаут определяет, сколько реплика ждёт бюллетени от других
	VoteFieldName = "cluster.delay.election.vote"
)

Variables

View Source
var (
	// AgeSyncDefault — время ожидания ответов при синхронизации term (5 секунд).
	// За 5 секунд все реплики должны успеть ответить, чтобы выборы не затягивались.
	AgeSyncDefault = 5 * time.Second

	// VoteDefault — время ожидания бюллетеней при голосовании (30 секунд).
	// 30 секунд — это компромисс между скоростью и надёжностью.
	// Если реплика медленная, она всё равно успеет проголосовать.
	VoteDefault = 30 * time.Second
)
View Source
var Component = compogo.Component{
	Name: "cluster.election.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.DurationVar(&config.AgeSync, AgeSyncFieldName, AgeSyncDefault, "")
			flagSet.DurationVar(&config.Vote, VoteFieldName, VoteDefault, "")
		})
	}),
	Configuration: compogo.StepFunc(func(container compogo.Container) error {
		return container.Invoke(Configuration)
	}),
}

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

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

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

Флаги:

  • --cluster.delay.election.age — таймаут для синхронизации term
  • --cluster.delay.election.vote — таймаут для голосования

Functions

This section is empty.

Types

type Config

type Config struct {
	AgeSync time.Duration
	Vote    time.Duration
}

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

func Configuration

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

Configuration загружает конфигурацию из Configurator.

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

func NewConfig

func NewConfig() *Config

NewConfig создаёт новую конфигурацию с нулевыми значениями.

Jump to

Keyboard shortcuts

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