nacos服务端-AP模式
2022-06-27 11:36:04   0  举报             
     
         
 nacos服务端-AP模式
    作者其他创作
 大纲/内容
 createServiceIfAbsent
  放入到内存中
  Datum datum = consistencyService.get();
  检查当前集群的服务实例
  consistencyService.listen();
  优先从缓存中拿
  获取创建的或者缓存中的
  handle(pair);
  getPushService().serviceChanged(this);
  Distro协议处理数据
  run()
  获取缓存中的数据
  添加实例到服务中
  nacos-client
  Notifier
  获取所有的临时实例
  加同步锁
  PushService
  entry.getValue().init();
  com.alibaba.nacos.naming.controllers.InstanceController#register
  添加集群检查定时任务
  1、获取service实例的副本;2、然后把需要变动的实例在副本上进行操作(新增、更新、删除);3、本质是一种copyOnWrite的思想。
  HealthCheckTask
  1、将实际数据和缓存比对并更新;2、将注册的数据加入到副本;
  ServiceManager#registerInstance
  5秒执行定时任务
  发送service变动udp消息
  将最新的副本数据,替换当前的实例数据
  最终实现更新逻辑的是cluster
  创建、初始化、放入内存结构中
  synchronized (service)
  DistroConsistencyServiceImpl
  加入到队列中
  healthCheckProcessor.process(this);
  putServiceAndInit(service);
  第一步:创建Service
  监听数据变化
  ClientBeatCheckTask
  putService(service);
  List<Instance> instances = service.allIPs(true);
  createEmptyService
  超过默认15秒则下线
  udpPush(ackEntry);
  instance.setHealthy(false);
  distroProtocol.sync
  deleteIp(instance);
  初始化Cluster
  检查和更新临时实例的状态,如果它们已过期则将其删除。AP模式下的健康检查
  1、一种称为Distro的一致性协议算法使用发行版算法将数据分成许多块。2、每个 Nacos 服务器节点只负责一个数据块。每个数据块都由其负责的服务器生成、删除和同步。所以每个 Nacos 服务器只处理总服务数据的一个子集的写入。3、 同时每个 Nacos 服务器都会收到其他 Nacos 服务器的数据同步,所以每个 Nacos 服务器最终都会有一套完整的数据。
  service.init();
  HealthCheckReactor.scheduleCheck(checkTask);
  超过30秒则删除
  onApplicationEvent(ServiceChangeEvent event)
  CP模式下的健康检查
  HealthCheckReactor.scheduleCheck(clientBeatCheckTask)
  ephemeralInstances = toUpdateInstances;
   
 
 
 
 
  0 条评论
 下一页
  
   
   
   
  
  
  
  
  
  
  
  
 