Nacos服务注册原理分析( 三 )

通过是否存在ephemeral,为true,走AP模式,否则走CP模式 。
Nacos 默认就是采用的AP模式使用Distro协议实现 。实现的接口是EphemeralConsistencyService对节点信息的持久化主要是调用put方法,
会先写入到DataStore中:
public void onPut(String key, Record value) {if (KeyBuilder.matchEphemeralInstanceListKey(key)) {Datum<Instances> datum = new Datum<>();datum.value = https://www.isolves.com/it/cxkf/kj/2023-02-08/(Instances) value;datum.key = key;datum.timestamp.incrementAndGet();// 数据持久化到缓存中dataStore.put(key, datum);}if (!listeners.containsKey(key)) {return;}notifier.addTask(key, DataOperation.CHANGE);}总结

  • 从依赖上找到需要启动的是要加载的服务注册类NacosDiscoveryAutoConfiguration,主要配置三个对象 NacosServiceRegistryNacosRegistrationNacosAutoServiceRegistration
  • NacosServiceRegistry类的register方法,封装实例和心跳信息 通过http请求,定时发送发送心跳包,默认时间间隔是5秒 。通过http请求,发送实例信息 。
  • 服务端 接收到心跳请求,更新心跳包最新时间 。服务端在15秒没有收到心跳包会将实例设为不健康,在30秒没有收到心跳包会将临时实例移除掉 。接收到服务注册接口,通过ephemeral判断是否走AP还是走CP,AP模式使用Distro协议 。通过调用EphemeralConsistencyService接口实现,持久化实例信息 。
参考
  • Nacos源码之注册中心的实现 https://juejin.cn/post/7170224661014249502
  • Nacos 服务注册源码分析 https://juejin.cn/post/6983614902540140558

【Nacos服务注册原理分析】


推荐阅读