Ну чтож, время разобрать задачку с собеса одного из РФ БигТехов 🟠
К счастью, на этот раз без душных алгоритмов, довольно прикладная задача. Суть следующая:
Есть N экземпляров одного микросервиса. Нужно реализовать Balancer, который:
- отправляет запрос на наименее нагруженный бэкенд
- блокирует бэкенд на 1 час, если за последние 10 минут он вернул 100+ ошибок
бэкенд из себя представляет обыкновенный интерфейс
type Backend interface {
Invoke(ctx context.Context, req Request) (Response, error)
}
структура балансера, которую надо заполнить
type Balancer struct {
// Your code
}
Необходимо реализовать метод балансера:
func (b *Balancer) Invoke(ctx context.Context, req Request) (resp Response, err error) {
// Your code
return resp, nil
}
Своим решением поделюсь в комментариях, но оставлю скрытую ошибку (может не одну) 👀
Пишите в комментариях, сколько ошибок нашли - потом подведём итоги
К счастью, на этот раз без душных алгоритмов, довольно прикладная задача. Суть следующая:
Есть N экземпляров одного микросервиса. Нужно реализовать Balancer, который:
- отправляет запрос на наименее нагруженный бэкенд
- блокирует бэкенд на 1 час, если за последние 10 минут он вернул 100+ ошибок
бэкенд из себя представляет обыкновенный интерфейс
type Backend interface {
Invoke(ctx context.Context, req Request) (Response, error)
}
структура балансера, которую надо заполнить
type Balancer struct {
// Your code
}
Необходимо реализовать метод балансера:
func (b *Balancer) Invoke(ctx context.Context, req Request) (resp Response, err error) {
// Your code
return resp, nil
}
Своим решением поделюсь в комментариях, но оставлю скрытую ошибку (может не одну) 👀
Пишите в комментариях, сколько ошибок нашли - потом подведём итоги