Documentation
¶
Overview ¶
Circuit Breaker паттерн для управления отказами в распределенных системах. Используется для предотвращения повторных неудачных запросов к сервисам, которые могут быть временно недоступны. Позволяет снизить нагрузку на проблемные сервисы. Имеет три состояния:
closed(замкнутое состояние, когда запросы пропускаются к сервису), open (разомкнутое состо]ние, когда запросы не пропускаются к проблемному сервису) half-open(частично разомкнутое состояние, когда часть запросов пропускается для проверки доступности сервиса).
Index ¶
- type CBManager
- func (m *CBManager) AllowRequest(serverURL string) (bool, State)
- func (m *CBManager) GetCircuitBreaker(serverURL string) *circuitBreaker
- func (m *CBManager) GetCircuitBreakerState(serverURL string) string
- func (m *CBManager) GetCircuitBreakerStats() map[string]any
- func (m *CBManager) InitCircuitBreakers(servers []string, cfg CircuitBreakerConf) (cbInitErr []error)
- func (m *CBManager) ReportFailure(serverURL string)
- func (m *CBManager) ReportSuccess(serverURL string)
- type CircuitBreakerConf
- type State
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CBManager ¶ added in v0.2.1
type CBManager struct {
// contains filtered or unexported fields
}
func NewCBManager ¶ added in v0.2.1
func NewCBManager() *CBManager
NewManager создает новый менеджер circuit breakers
func (*CBManager) AllowRequest ¶ added in v0.2.1
AllowRequest проверяет, разрешен ли запрос к серверу
func (*CBManager) GetCircuitBreaker ¶ added in v0.2.1
GetCircuitBreaker возвращает Circuit Breaker для сервера
func (*CBManager) GetCircuitBreakerState ¶ added in v0.2.1
GetCircuitBreakerstate возвращает текстовое состояние Circuit Breaker
func (*CBManager) GetCircuitBreakerStats ¶ added in v0.2.1
GetCircuitBreakerStats возвращает статистику всех Circuit Breakers
func (*CBManager) InitCircuitBreakers ¶ added in v0.2.1
func (m *CBManager) InitCircuitBreakers(servers []string, cfg CircuitBreakerConf) (cbInitErr []error)
InitCircuitBreakers инициализирует Circuit Breakers для серверов
func (*CBManager) ReportFailure ¶ added in v0.2.1
ReportFailure отмечает неудачный запрос
func (*CBManager) ReportSuccess ¶ added in v0.2.1
ReportSuccess отмечает успешный запрос
type CircuitBreakerConf ¶
type CircuitBreakerConf struct {
FailureThreshold int `yaml:"failure_threshold"` // Количество неудач до срабатывания
RecoveryTimeout time.Duration `yaml:"recovery_timeout"` // Время до попытки восстановления
SuccessThreshold int `yaml:"success_threshold"` // Количество успешных запросов для восстановления
HalfOpenPrc int `yaml:"half_open_prc"` // Процент пропускаемых запросов
}
Структура для конфигурации Circuit Breaker