1. Задача: Реализация шедулера для отправки запроса на наименее нагруженный бэкенд
type Request interface{}
type Response interface{}
type Backend interface{
Invoke(ctx context.Context, req Request) (res Response, err error)
}
var _ Backend = &BackendImpl{}
func NewBackendImpl(addr string) *BackendImpl
type Scheduler struct {
backends []BackInstance
}
var _ Backend = &Scheduler{}
type BackInstance struct {
back Backend
counter atomic.Int64
}
func NewSheduler(addrs []string) *Scheduler {
backends := make([]BackInstance, 0, len(addrs))
for _, addr := range addrs {
backends = append(backends, BackInstance{
back: NewBackendImpl(addr),
})
}
return…