Я использую Spring Cloud Gateway из spring-cloud-starter-gateway версии 2.1.0.RELEASE, и мне нужно понять, почему Gateway блокирует запросы на выполнение процесса DiscoveryClientRouteDefinitionLocator.
Версия Spring Cloud: Greenwich.RELEASE.
У меня есть две среды: постановка и производство.
В продакшене у нас есть работающий шлюз со следующей задержкой для /actuator/health вызова:
Я исследовал, почему эти всплески возникают при простом вызове работоспособности, и выяснил, что шлюз иногда блокирует любые запросы (даже вызов работоспособности или реальный вызов микросервисов) для выполнения маршрутов обнаружения всех моих микросервисов.
Мы используем Consul для сервера обнаружения, и я попытался протестировать эту задержку в своей тестовой среде (с гораздо меньшими аппаратными ресурсами на Consul). Влияние этого блока очевидно:
После улучшения аппаратных ресурсов Consul у нас больше нет всплесков, но задержка по-прежнему не идеальна (и есть небольшие всплески для обнаружения всех маршрутов) для вызова работоспособности:
Мне нужно спросить: почему Spring Cloud Gateway блокирует запросы, даже имея функцию кэширования? Разве этот процесс не должен работать в фоновом режиме? Что я делаю неправильно? Это действительно проблема с Spring Cloud Gateway?
Спасибо.
Я создал эту же проблему в github и получил ожидаемый ответ: github.com/весеннее облако/весеннее облако-шлюз/проблемы/1104.





Как обсуждалось здесь, предыдущая версия Spring Cloud Gateway использовала блокирующий клиент обнаружения.
Использование более новых версий, чем 2.1.5.ВЫПУСК, приведет к более асинхронному шлюзу, который не выполняет много блокирующих запросов.
Возможно ли, что на шлюзе установлен прерыватель цепи, так что некоторые запросы к консулу заканчиваются таймаутом и hystrix переходит в состояние "открыто"?