Spring 云网关阻止路由发现请求
Spring Cloud Gateway blocking requests for route descovery
我正在使用 spring-cloud-starter-gateway
版本 2.1.0.RELEASE
的 Spring Cloud Gateway,我需要了解为什么 Gateway 会阻止执行 DiscoveryClientRouteDefinitionLocator
进程的请求。
Spring云版本:Greenwich.RELEASE.
我有两个环境:暂存和生产。
在生产中,我们有一个工作网关,/actuator/health
调用具有以下延迟:
我正在调查为什么这些峰值发生在一个简单的健康调用上,我发现网关有时会阻止任何请求(甚至是健康或真正的微服务调用)来执行我所有微服务的发现路由。
我们使用 Consul 作为发现服务器,我试图在我的暂存环境中测试这种延迟(Consul 上的硬件资源更少)。这个块的影响很明显:
改进 Consul 硬件资源后,我们不再有尖峰,但运行状况调用的延迟仍然不完美(发现所有路由时有小的尖峰):
我要问:为什么Spring Cloud Gateway 即使有缓存功能也会阻塞请求?这个进程运行不应该在后台吗?我做错了什么? Spring Cloud Gateway 真的有问题吗?
谢谢。
正如所讨论的 here 之前版本的 Spring Cloud Gateway 使用的是阻塞发现客户端。
使用比 2.1.5.RELEASE 更新的版本将导致网关更加异步,不会执行很多阻塞请求。
我正在使用 spring-cloud-starter-gateway
版本 2.1.0.RELEASE
的 Spring Cloud Gateway,我需要了解为什么 Gateway 会阻止执行 DiscoveryClientRouteDefinitionLocator
进程的请求。
Spring云版本:Greenwich.RELEASE.
我有两个环境:暂存和生产。
在生产中,我们有一个工作网关,/actuator/health
调用具有以下延迟:
我正在调查为什么这些峰值发生在一个简单的健康调用上,我发现网关有时会阻止任何请求(甚至是健康或真正的微服务调用)来执行我所有微服务的发现路由。
我们使用 Consul 作为发现服务器,我试图在我的暂存环境中测试这种延迟(Consul 上的硬件资源更少)。这个块的影响很明显:
改进 Consul 硬件资源后,我们不再有尖峰,但运行状况调用的延迟仍然不完美(发现所有路由时有小的尖峰):
我要问:为什么Spring Cloud Gateway 即使有缓存功能也会阻塞请求?这个进程运行不应该在后台吗?我做错了什么? Spring Cloud Gateway 真的有问题吗?
谢谢。
正如所讨论的 here 之前版本的 Spring Cloud Gateway 使用的是阻塞发现客户端。
使用比 2.1.5.RELEASE 更新的版本将导致网关更加异步,不会执行很多阻塞请求。