1
zhaorunze 2022-03-02 13:09:10 +08:00
有负载均衡呢,挂了不会请求其他机器么
|
2
nicholasxuu 2022-03-02 13:23:33 +08:00
health check 失败时不就可以直接被路由给踢了吗?
|
3
fkdog 2022-03-02 13:35:20 +08:00
是的呢。
各个 service 也是定期从 eureka 获取最新的服务可以用 ip 列表,然后本地按照一定的策略去访问。 如果某个服务 A 挂了,B 服务本地从 eureka 获取的 A 服务 ip 列表还没更新,那么也是会出现访问到已经 down 机的那个 ip 上。 要么做好服务 fallback ,要么做好故障转移 |
4
fkdog 2022-03-02 13:37:17 +08:00
另外补充一下,有些注册中心用的是 push 模式,有的用的 pull ,有的用的长链接轮训。 主动 push 和长链接轮训的这种,如果 B 能优雅停机,那么 A 是能及时获取到最新的服务列表。
如果 B 异常 down 机或者网络故障,那么 A 依然还是要做好回退策略的。 |
5
murenx 2022-03-02 14:00:54 +08:00
CAP 理论背书,分布式系统中注册中心必有,至于 A 和 C ,根据侧重点不同选取。eureka 就是保证了 AP ,至于 C ,通过重试,回退,幂等,分布式事务等策略进行处理
|
6
dalang 2022-03-02 14:01:33 +08:00
90 秒这个时间是可以调的。
|
7
murenx 2022-03-02 14:02:04 +08:00
eureka 是 AP
ZooKeeper 是 CP nacos 不仅支持 CP 也支持 AP |
8
liyunyang 2022-03-02 16:50:45 +08:00
|
9
paradoxs 2022-03-02 16:52:11 +08:00
90 秒不是固定的
直接换 nacos+sential |
10
twogoods 2022-03-02 19:00:31 +08:00
搜一下 eureka 服务优雅下线
|
11
sun1993 2022-03-02 19:14:46 +08:00
P2C 负载均衡算法,可以主动将坏节点降权,并规律性重试,这个机制有点类似熔断
|
12
starrynight9 2022-03-02 22:47:08 +08:00 1
每个请求是由服务的 ribbon 组件进行处理的。默认请求失败之后会重试下一台实例,所以在外部看来就是可能会卡了一下。如果请求幂等的话,是没啥问题的
|
14
twogoods 2022-03-03 09:50:20 +08:00
@plko345 #13 意外故障也分情况 是不是 unhealth 了会不会同步到 eureka,能不能代业务上判断加个钩子实现主动 shutdown,又或者不强依赖实例下线,调用方重试行不行,又或者负载均衡算法根据错误率权重来选择实例
|
15
Chinsung 2022-03-03 11:38:46 +08:00
重试配置好,直接 try 下一台机器就行了,当次请求的延迟可能会高一点
要么就检测实例 down 了就发 eureka 接口手动下线 |
16
wujiezero 2022-03-03 15:05:37 +08:00
负载均衡策略可以设置请求不发往 down 掉的实例
|