对应源码:注册实例接口在nacos-naming模块的InstanceController
这里的 consistencyService实现类是 DelegateConsistencyServiceImpl
其中 ephemeralConsistencyService是临时性实现、persistentConsistencyService是持久化实现
Distro协议(ephemeralConsistencyService):每个nacos server实际为部分的数据负责,每一块数据的生成、移除和同步操作都是负责它的那一个nacos server进行。因此每个nacos server仅仅处理所有数据中的一组数据写入操作。
persistentConsistencyService(有两种实现old和new,默认是old的raft协议实现):主从实现(one leader,n follower),采用CAP的CP,避免脑裂问题(网络分区情况导致可能出现多个leader),leader负责写入,leader写入同步超过一半以上节点才算写入成功,如果写入失败,投票选举新的leader。
先看临时性的实现DistroConsistencyServiceImpl
Notifier实现了Runnable接口,启动的时候会执行run方法:
一个服务Service包含多个集群cluster(例如北京、上海机房这样划分),一个集群包含多个实例instance
健康检查定时任务
HealthCheckTask实现了Runnable接口,由线程池调用