首页 > 其他 > 详细

nacos 集群管理服务临时实例数据

时间:2020-01-15 14:00:12      阅读:219      评论:0      收藏:0      [点我收藏+]

1. 按服务名选择 nacos 节点,即一个服务的实例增删改,只由特定的 nacos 节点负责

com.alibaba.nacos.naming.web.DistroFilter#doFilter
com.alibaba.nacos.naming.core.DistroMapper#responsible(java.lang.String)

2. 当前 nacos 节点对服务实例增删改后,会重新把数据同步给其他节点

// com.alibaba.nacos.naming.consistency.ephemeral.distro.DistroConsistencyServiceImpl#put
public void put(String key, Record value) throws NacosException {
    onPut(key, value);
    // 把同步数据的任务放入队列
    taskDispatcher.addTask(key);
}
// com.alibaba.nacos.naming.consistency.ephemeral.distro.DataSyncer#submit

用到了一些技巧,批量同步

3. 当前 nacos 节点定时计算自己所负责的服务实例的 md5 值,同步给其他 server,这是对 2 的一个后备

// com.alibaba.nacos.naming.consistency.ephemeral.distro.DataSyncer.TimedSync#run

这是一个全量数据 md5 值的同步

当目标节点收到全量数据 md5 值后,筛选出 toUpdateKeys 和 toRemoveKeys,然后从源节点同步数据

// DistroConsistencyServiceImpl#onReceiveChecksums
try {
    byte[] result = NamingProxy.getData(toUpdateKeys, server);
    processData(result);
} catch (Exception e) {
    Loggers.DISTRO.error("get data from " + server + " failed!", e);
}

nacos 集群管理服务临时实例数据

原文:https://www.cnblogs.com/allenwas3/p/12195781.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!