Тестирует знание паттернов для работы с ограниченными ресурсами.
Троттлинг: Ограничение частоты запросов (например, 100 RPS).
Буферизация: Использовать очередь для накопления запросов.
Circuit Breaker: Отключать вызовы при ошибках.
Реализации:
Rate Limiter (Resilience4j):
RateLimiter limiter = RateLimiter.of("alerts", 100); // 100 зап/сек
CheckedRunnable restricted = RateLimiter.decorateCheckedRunnable(
limiter,
() -> externalService.send(alert)
);Очередь с контролем потребления:
// Consumer с ограниченным числом потоков
@Bean
public Executor alertExecutor() {
return Executors.newFixedThreadPool(10); // Не более 10 параллельных вызовов
}Circuit Breaker (Hystrix/Resilience4j):
CircuitBreaker breaker = CircuitBreaker.of("alerts",
config -> config.failureRateThreshold(50));При 50% ошибок вызовы временно блокируются.
Вывод: Комбинация троттлинга, очередей и Circuit Breaker защищает сервис.