服务端通过InstanceController中的register方法对客户端的http请求进行处理:
serviceManager.registerInstance(namespaceId, serviceName, instance);
1-serviceManager和consistencyService
serviceManager是一个管理服务注册的类,并且被spring管理,
服务端启动后会进行执行init() 方法:
consistencyService.listen(KeyBuilder.SERVICE_META_KEY_PREFIX, this);
将自己加入到到consistencyService的监听集合中。
consistencyService是一个一致性的接口,这里基于我们关注基于AP原则实现的注册
中心,所以其实现类是DistroConsistencyServiceImpl,并且也被spring管理,初始
化的时候会执行init()方法:
@PostConstruct
public void init() {
//启动两个任务,一个进行从其他服务加载数据,一个进行监听配置的变更
GlobalExecutor.submit(loadDataTask);
GlobalExecutor.submitDistroNotifyTask(notifier);
}
loadDataTask:当服务端重启或者新增一个nacos服务实例的时候会从其他服务器
同步数据到当前服务器,然后将服务信息存入内存中:
//1-将配置存入内存中
dataStore.put(entry.getKey(), entry.getValue());
并且会通知加入到DistroConsistencyServiceImpl监听集合</