#resilience4j #resiliency #resilience4j-retry
Вопрос:
Я использую resilience4j с Spring Boot 2.x Как влияет использование модулей повтора и автоматического выключателя на память и процессор?
Кроме того, каково влияние на память, если у меня 2000 событий/с, поступающих с каждой полезной нагрузкой около 10 МБ, и я сохранил продолжительность ожидания повторной попытки 15 секунд с экспоненциальным коэффициентом возврата 2? У меня 8 ГБ оперативной памяти приложения
Ответ №1:
Лучший способ-отслеживать ваше приложение с помощью профиля, такого как VisualVM. Тогда вы сможете узнать, где находится узкое место.
Одна вещь, которую я знаю, имеет значение, это то, где вы создаете свой экземпляр circuitbreaker. В конце концов, есть коллектор, который удаляет неиспользуемые экземпляры. Но в вашем случае, по-видимому, было бы хорошей идеей не помещать создание автоматического выключателя в метод get, как здесь
@Service
public static class DemoControllerService {
private RestTemplate rest;
private CircuitBreakerFactory cbFactory;
public DemoControllerService(RestTemplate rest, CircuitBreakerFactory cbFactory) {
this.rest = rest;
this.cbFactory = cbFactory;
}
public String slow() {
return cbFactory.create("slow").run(() -> rest.getForObject("/slow", String.class), throwable -> "fallback");
}
}
Но создайте прерыватель цепи в конструкторе.
@Service
public class DemoControllerService {
private RestTemplate restTemplate = new RestTemplate();
private CircuitBreakerFactory circuitBreakerFactory;
private CircuitBreaker circuitBreaker;
@Autowired
public DemoControllerService(CircuitBreakerFactory circuitBreakerFactory) {
this.circuitBreakerFactory = circuitBreakerFactory;
this.circuitBreaker = circuitBreakerFactory.create("circuitbreaker");
}
Также обсуждается возможность размещения одного прерывателя цепи на хост. Другое, что вы можете сделать, — это самостоятельно удалить экземпляр реестра и не ждать, пока компонент circuitbreaker удалит его в будущем.
registry.remove(circuitBreakerName);
Здесь также обсуждается вопрос об очистке памяти реестра.