【Feign】记录一次feign调用失败的经历

发布时间 2023-04-03 20:25:57作者: aaacarrot

背景

在本地启动一个服务,服务内通过 feign 调用服务器A上的一个接口,和调用服务器B上的另外一个接口。
然后嗯,服务器A接口能够成功调用得到,
但是服务器B接口就会报一个 connect time out (非常快速响应失败)

检查了很久,确认写法是没有错误的,
并且通过 postman 去访问是可以的(使用 postman 调用 网关去调用,成功的,网关在服务A上)
然后去eureka 看,注册的名字也是正确的,确定是没有问题。

再然后,
就不知道为什么了。

先说结果

1、是防火墙的原因, 服务器B开启了防火墙,只对服务器A开启了白名单。
2、本地通过postman 通过网关调用B服务器服务的接口能通,是因为 网关 在A 上, A 可以调用B,所以这条链路是通的。
3、一直以为网关通,调源服务肯定不会有问题的想法,所以没有去尝试直接调用源服务接口,即没有在postman 调用 http://{B-server-ip}:{port}/xxxx,如果早调用,早就发现问题了
4、这一次偏偏网关可以调通,但源服务就真不能调通
5、feign 调用的机制是,本地的feign先去eureka 获取到服务注册信息,拉回到本地,然后再在本地发起请求。所以,feign 在本地先向 A-server (eureka 也在A-server 上)获取这个服务的注册信息,拿到本地后,找到这个注册服务的ip,端口信息,然后再拼装一个完整的请求,在本地发起请求。。。

所以,在本地启动的服务,还是会受到防火墙的影响。。。SO........