【问题标题】:Spring Cloud Gateway blocking requests for route descoverySpring Cloud Gateway 阻塞路由发现请求
【发布时间】:2019-10-21 01:39:45
【问题描述】:

我正在使用来自spring-cloud-starter-gateway 版本2.1.0.RELEASE 的Spring Cloud Gateway,我需要了解为什么Gateway 会阻止执行DiscoveryClientRouteDefinitionLocator 进程的请求。

Spring Cloud 版本:Greenwich.RELEASE。

我有两个环境:暂存和生产。

在生产中,我们有一个有效的网关,/actuator/health 调用的延迟如下:

我正在调查为什么在一个简单的健康调用中会出现这些峰值,我发现网关有时会阻止任何请求(甚至是健康或真正的微服务调用)以执行我所有微服务的发现路由。

我们使用 Consul 作为发现服务器,我尝试在我的暂存环境中测试这种延迟(Consul 上的硬件资源更少)。这个区块的影响很明显:

在改进 Consul 硬件资源后,我们不再出现尖峰,但延迟仍然不是完美的(发现所有路由时出现了小尖峰):

我要问:为什么 Spring Cloud Gateway 会阻塞请求,即使有缓存功能?这个进程不应该在后台运行吗?我做错了什么?真的是 Spring Cloud Gateway 的问题吗?

谢谢。

【问题讨论】:

  • 是否有可能在网关上设置了一个断路器,使得一些对 consul 的请求确实以超时结束并且 hystrix 进入“打开”状态?
  • 我在 github 中创建了同样的问题,得到了我期待的答案:github.com/spring-cloud/spring-cloud-gateway/issues/1104

标签: spring-cloud spring-cloud-gateway


【解决方案1】:

正如here 讨论的那样,Spring Cloud Gateway 的早期版本使用了阻塞发现客户端。

使用比 2.1.5.RELEASE 更新的版本会导致网关更加异步,不会执行很多阻塞请求。

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 2019-03-02
    • 2020-10-06
    • 2019-08-03
    • 2019-03-31
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多