Возможные тайм-ауты при совершении удаленных вызовов с помощью Spring Cloud OpenFeign,И предоставляет метод решения вопроса о тайм-ауте. Путем разумных настроек конфигурации,Разработчики могут эффективно предотвращать тайм-ауты удаленных вызовов из-за задержек в сети и т. д.,Обеспечить стабильность и надежность системы.
Spring Cloud OpenFeign — это платформа для упрощения удаленных вызовов Служить в рамках микроархитектуры Служить. Однако при фактическом использовании из-за задержки в сети, задержки ответа терминала и т. д. удаленные вызовы могут истечь по тайм-ауту, что приведет к снижению производительности системы или даже к сбою. Чтобы решить этот вопрос, в этой статье будут представлены некоторые методы эффективной борьбы с Spring. Cloud Таймаут удаленного вызова OpenFeign обеспечивает стабильную работу системы.
При использовании openFein для удаленного вызова время ожидания вызова истекает, и появляется следующее сообщение об ошибке:
com.netflix.hystrix.exception.HystrixRuntimeException: XXXService#login(RequestObject) timed-out and no fallback available.
OpenFeign Интегрировано внутриHytrix
и Ribbon
компонент, если установлен
feign:
hystrix:
# Используйте имитацию автоматического выключателя
enabled: true
, что эквивалентно включению автоматического выключателя, то время ожидания вызова будет зависеть от Ribbon
и Hytrix
Тот, который меньше, идет на настройку.
Пополнить: существоватьпредставилopenFein
После компонента,Содержимое, которое можно настроить, следующее:
1. Доступные части Hystrix:
hystrix.command.default.execution.timeout.enable=true //Если это значение false, то управление таймаутом имеет управление лентой. Если оно истинно, используются оба таймаута hystrix и таймаут ленты, но вступает в силу тот, который меньше. Значение по умолчанию — true.
hystrix.command.default.execution.isolation.thread.timeoutInMilliсекунды=3000//Тайм-аут предохранителя по умолчанию составляет 1 секунду, наиболее часто изменяемый параметр
circuitBreaker.requestVolumeThreshold=20 //Минимальное количество запросов на срабатывание автоматического выключателя, по умолчанию 20
circuitBreaker.sleepWindowInMilliseconds=5000 //Продолжительность сна, по умолчанию 5 секунд
circuitBreaker.errorThresholdPercentage=50 //Минимальная доля неудачных запросов, вызывающих срабатывание автоматического выключателя, по умолчанию 50 %.
2. Части ленты, которые можно использовать:
ribbon.ReadTimeout=1000 //Таймаут обработки запросов, по умолчанию 1 секунда
ribbon.ConnectTimeout=1000 //Длительность таймаута устанавливается при подключении, по умолчанию 1 секунда
ribbon.MaxAutoRetries=1 //Максимальное количество повторов для одного и того же экземпляра, кроме первого вызова, значение по умолчанию — 1
ribbon.MaxAutoRetriesNextServer=0 //Максимальное количество повторных попыток других экземпляров балансировки нагрузки, исключая первый вызов, по умолчанию — 0 раз
ribbon.OkToRetryOnAllOperations=false //Повторять ли все операции, по умолчанию false
3. Притвориться, что можно. Конфигурация деталей:
feign.hystrix.enable=false //Независимо от того, включает ли feign автоматический выключатель, значение по умолчанию — false
Примечания к ленте:
То есть, если существует только один экземпляр, время ожидания соединения повторяется один раз, а время ожидания обработки также повторяется один раз. То есть фактическое время ожидания ленты составляет 1 секунда × 2 + 1 секунда × 2 = 4 секунды.
Вывод: настройте таймаут InMillisec для Hystrix так, чтобы он был больше, чем для Ribbon (ConnectTimeout + ReadTimeout) × 2. Цель состоит в том, чтобы гарантировать, что удаленный вызов будет завершен до срабатывания автоматического выключателя (включая время повтора Ribbon).
1. Включите переключатель Feign's Hystrix.
feign:
hystrix:
enabled: true
2. Установить продолжительность тайм-аута Hystrix
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 15000
3. Длительность соединения и время ответа для ленты Конфигурация
ribbon:
ConnectTimeout: 2000
ReadTimeout: 5000
Примечание версии: SpringBoot:2.3.3.Release, OpenFeign: 2.2.7.Release
КонфигурациянижеFeign
из Конфигурация:
feign:
hystrix:
# Используйте имитацию автоматического выключателя
enabled: true
strategy:
custom: true # Индивидуальная стратегия имитации автоматического выключателя
httpclient:
enabled: true
okhttp:
enabled: false
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 15000
ribbon:
ConnectTimeout: 2000
ReadTimeout: 5000
Вопросрешить, удаленный звонок микро-Служить прошел успешно.
Spring Cloud OpenFeign как фреймворк для удаленных звонков под архитектурой микро-Служить,В реальных приложениях вы можете столкнуться с тайм-аутом удаленного вызова. В ответ на этот вопрос,В этой статье представлены такие методы, как установка времени ожидания, использование механизма автоматического выключателя и оптимизация сетевой связи. С помощью разумных технических средств,Может эффективно решить вопрос о тайм-ауте удаленного вызова,Повысить надежность системыпроизводительности.