实例 down 掉, eureka 要 90s 后才剔除,那么期间的被打到这台实例的请求是不是就挂了?

2022-03-02 12:57:09 +08:00
 yedra
3125 次点击
所在节点    Java
16 条回复
zhaorunze
2022-03-02 13:09:10 +08:00
有负载均衡呢,挂了不会请求其他机器么
nicholasxuu
2022-03-02 13:23:33 +08:00
health check 失败时不就可以直接被路由给踢了吗?
fkdog
2022-03-02 13:35:20 +08:00
是的呢。
各个 service 也是定期从 eureka 获取最新的服务可以用 ip 列表,然后本地按照一定的策略去访问。
如果某个服务 A 挂了,B 服务本地从 eureka 获取的 A 服务 ip 列表还没更新,那么也是会出现访问到已经 down 机的那个 ip 上。

要么做好服务 fallback ,要么做好故障转移
fkdog
2022-03-02 13:37:17 +08:00
另外补充一下,有些注册中心用的是 push 模式,有的用的 pull ,有的用的长链接轮训。 主动 push 和长链接轮训的这种,如果 B 能优雅停机,那么 A 是能及时获取到最新的服务列表。

如果 B 异常 down 机或者网络故障,那么 A 依然还是要做好回退策略的。
murenx
2022-03-02 14:00:54 +08:00
CAP 理论背书,分布式系统中注册中心必有,至于 A 和 C ,根据侧重点不同选取。eureka 就是保证了 AP ,至于 C ,通过重试,回退,幂等,分布式事务等策略进行处理
dalang
2022-03-02 14:01:33 +08:00
90 秒这个时间是可以调的。
murenx
2022-03-02 14:02:04 +08:00
eureka 是 AP
ZooKeeper 是 CP
nacos 不仅支持 CP 也支持 AP
liyunyang
2022-03-02 16:50:45 +08:00
paradoxs
2022-03-02 16:52:11 +08:00
90 秒不是固定的

直接换 nacos+sential
twogoods
2022-03-02 19:00:31 +08:00
搜一下 eureka 服务优雅下线
sun1993
2022-03-02 19:14:46 +08:00
P2C 负载均衡算法,可以主动将坏节点降权,并规律性重试,这个机制有点类似熔断
starrynight9
2022-03-02 22:47:08 +08:00
每个请求是由服务的 ribbon 组件进行处理的。默认请求失败之后会重试下一台实例,所以在外部看来就是可能会卡了一下。如果请求幂等的话,是没啥问题的
plko345
2022-03-02 23:17:15 +08:00
@twogoods 这个是主动下线, 假设情况是服务的一个副本意外故障呢, 怎么在短时间内(如 5 秒内)让该服务自动下线
twogoods
2022-03-03 09:50:20 +08:00
@plko345 #13 意外故障也分情况 是不是 unhealth 了会不会同步到 eureka,能不能代业务上判断加个钩子实现主动 shutdown,又或者不强依赖实例下线,调用方重试行不行,又或者负载均衡算法根据错误率权重来选择实例
Chinsung
2022-03-03 11:38:46 +08:00
重试配置好,直接 try 下一台机器就行了,当次请求的延迟可能会高一点
要么就检测实例 down 了就发 eureka 接口手动下线
wujiezero
2022-03-03 15:05:37 +08:00
负载均衡策略可以设置请求不发往 down 掉的实例

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX