Перейти к содержимому

Для каждого микросервиса есть несколько десятков запущенных экземпляров, каждый из которых доступен по своему адресу add

network · balancingYandex / Яндекс (балансировщик)4 кв 2025не решено

Для каждого микросервиса есть несколько десятков запущенных экземпляров, каждый из которых доступен по своему адресу addr. Однако отдельные экземпляры микросервиса ненадежны: они могут падать, быть недоступными либо перегруженными. Поэтому вам нужно реализовать тип Balancer, который также реализует интерфейс Backend и осуществляет client-side балансировку нагрузки между экземплярами микросервиса.

type Request interface{}
type Response interface{}
type Backend interface {
Invoke(ctx context.Context, req Request) (Response, error)
}
var _ Backend = &BackendImpl{}
// addr содержит ip:port конкретного экземпляра
func NewBackend(addr string) *BackendImpl
type Balancer struct {
// TODO
}
var _ Backend = &Balancer{}
// addrs содержат адреса всех балансируемых экземпляров
func NewBalancer(addrs []string) *Balancer {
// TODO
}

Источник: Yandex / Яндекс (балансировщик) · 4 кв 2025

← Балансер по загрузке: · Все задачи · Сети и протоколы