Dubbo + Nacos这么玩就失去高可用的能力了( 四 )


至此问题解决 , 安心干活儿去了 , 哈哈!
3.Raft协议简单讲下Raft协议 , Raft协议主要用来满足微服务CAP理论中的CP , 保障集群环境下的数据一致性 。在Raft理论中 , 把每一个集群节点定义了三种状态 , 跟zookeeper的ZAB 协议类似:
Follower 追随者:集群所有节点一开始都是 Follower 。
Candidate 候选者:当集群的某个节点开始发起投票选举 Leader 的时 , 先给自己投一票 , 这时就会从 Follower 变成 Candidate 。
Leader 领导者:当集群的某个节点获得大多数节点(超过一半)的投票 , 那么就会变成 Leader 。
四、总结经过以上的过程 , 有3点注意:

  • nacos-client和nacos-server的心跳只是告诉服务器 , 我这个客户端的服务是正常的 , 同时nacos-server集群之间会异步同步服务信息 。但是具体调用时依赖dubbo , dubbo在调用时 , 是单独的通道从nacos-server拉取provider的元数据 。
  • nacos-server重启时 , 一定要选在深夜 , 避开正常流量时间 。同时为了保障集群持续可用 , 集群节点数保持奇数 , 偶数时会出现选主问题 , 导致客户端与服务端无法正常通信 , 无法发起微服务调用 。也就失去了nacos集群的能力了 。
  • 出现疑难问题时 , 首先看异常信息 , 然后猜测原因 , 再通过实践去验证 , 最终可以通过源码再去证实 。




推荐阅读