acos中就体现了,Nacos 1.x版本使用提供者上报心跳的方式保持服务健康状态,由于每次上报健康状态都需要写入数据(最后健康检查时间),故对资源的消耗是非常大的,施工围挡所以Nacos 2.0版本后就改为了长连接会话保持健康状态。
所以健康检查我个人比较倾向最后两种方案:注册中心主动探测与提供者与注册中心会话保持的方式。
结合上述变更推送,我们发现如果实现了长连接,好处将很多,很多情况下,一个服务既是消费者,又是提供者,施工围挡此时一条TCP长连接可以解决推送和健康检查,甚至在注册注销接口的实现,我们也可以复用这条连接,可谓是一石三鸟。
-
- 客户端正常重启:客户端主动关闭连接,服务端实时感知
- 服务端正常重启 : 服务端主动关闭连接,客户端实时感知
- 防抖:网络短暂不可用,客户端需要能接受短暂网络抖动,需要一定重试机制,防止集群抖动,超过阈值后需要自动切换 server,但要防止请求风暴
- 断网:断网场景下,施工围挡以合理的频率进行重试,断网结束时可以快速重连恢复
- 低成本多语言实现:在客户端层面要尽可能多的支持多语言,降低多 语言实现成本
-
- 利用第三方组件完成,如Mysql、Redis等,好处是有现成的水平扩容方案,稳定性强;坏处是架构变得复杂
- 利用注册中心本身来存储数据,好处是无需引入额外组件;坏处是需要解决稳定性问题;www.whllwq.cn/
第一种方案我们不必多说,第二种方案中最关键的就是解决数据在注册中心各节点之间的同步,因为在数据存储在注册中心本身节点上,如果是单机,机器故障或者挂掉,数据存在丢失风险,所以必须得有副本。www.whllwq.cn/