报错
给 SpringClout 项目搭了一个 Zuul 网关,结果启动之后,一访问就报错,最直接的信息就是:
1、com.netflix.zuul.exception.ZuulException: Forwarding error
2、Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: service-provider
解决办法:
将 zuul 服务注册为 eureka 的客户端
原因
看报错信息,很明显:Zuul 中的负载平衡器没有客户端可用的服务器:服务提供程序。我已经启动了服务器了,为什么找不到呢?原因很可能是 zuul 网关根据名称去 Eureka 拉取服务地址的时候没有拉取到,或者说,zuul 还不是 Eureka 的客户端,也就是 zuul 作为一个客户端没有服务器。

之前解决这个问题和理解这个问题看到这两篇博客,不同原因导致的报错,这两篇博客或许能够提供帮助:SpringCloud:Load balancer does not have available server for client: MICROSERVICECLOUD-DEPTSpring Cloud 中,如何解决 Feign/Ribbon 第一次请求失败的问题?
解决: 当我们碰到该类问题时,在排除了配置文件,代码等方面的错误后,如果依然报xxx服务没有被注册进Eureka时,打开Eureka的网页刷新一下,如果页面显示xxx服务已经被注册进其中,这时再次访问之前报错的url,就不会有问题了。该问题应该是Eureka自身的一些bug或者是一些别的隐藏知识点
多请求几遍,Eureka比较慢