开发者社区 > 云原生 > 正文

针对源码注册,数据流转有些疑问希望得到解答---nacos 1.3.2

1.注册失败,心跳成功,那么服务也会注册到节点上,最后也会同步到其它节点;这个会不会有一种幻觉的感觉,明明失败了,过一会儿查看确有了

2.tcp 健康检测机制,根据检查结果,实例状态发送变化,怎么同步给其它实例呢 --我看源码是发送请求/api/healthCheckResult 但是没有找到这个请求接收的类;就是TCP 健康检查结果数据怎么流转的呢

3.raft 存储数据的问题

三个活跃节点 A,B,C;其中A 为leader

1.在注册服务的时候,先在A 节点存储成功,但是这个时候B,C 因为某种原因网络波动了,导致最终注册失败,提示给客户端注册失败;但是随后网络恢复,leader 会通过心跳把刚才注册的服务同步到其它节点吗?如果会,其实表示已经注册成功了; 2. 即使不会,A 节点已经有刚注册节点,这个不需要回滚机制吗?

目前有5个节点,A,B,C,D,E 其中 A 为leader

2.注册服务时,A 向B发送了注册请求后就宕机了,B 已经存储了,最后leader 选举,选了C (有可能把);那c 在发起心跳时,由于B 的term >C ,无法接受C 的心跳数据同步,一直会出现,B 数据多余C 情况,除非新增服务;这种情况能容忍吗

原提问者GitHub用户wu603772498

展开
收起
学习娃 2023-05-22 16:54:58 115 0
1 条回答
写回答
取消 提交回答
  • 第一点:是一个优化点 第三点:一致性协议是不存在回滚机制的,只有提交成功或者不成功;B的term大于C,C就不可能会是Leader,除非网络分区的因素,C节点所在的网络分区的总Nacos节点数满足过半要求,且C的term最大

    关于第二个问题,关于健康检查结果的改变,通过distro协议的对账机制同步给其他节点。没有走raft协议。

    原回答者GitHub用户chuntaojun

    2023-05-23 10:18:34
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载