Nacos 原理 Jraft Distro Grpc 持续跟新中...

一、核心

  1. 通过心跳方式保证集群节点之间的存活状态
  2. 通过一致性协议保证数据AP或者CP

二、协议

Nacos中有两种协议,JRaft(CP)、Distro(AP),协议本身没有什么高大上,只是有一套规则保证CAP;

CAP理论:

  1. C:Consistency(强一致性)
  2. A:Availability(可用性)
  3. P:Partition tolerance(分区容错性)

注册中心:特性更加适合AP,基于内存,保证高可用所以在Nacos中使用Distro协议;
配置中心:特性需要保证各节点配置是同步的,基于存储设备,所以使用的JRaft协议;

1. 集群保活

  1. 每五秒和集群其中一个节点交换节点信息-http;
  2. 第一次5秒给所有发送请求检查健康,后续2秒检查一次-http;

2. tcp保活

Nacos2.*开始使用Grpc,所以有一套保证连接的方式,这个连接可能是集群之间也可能是实例于集群之间的
只管理连接层面的,不管业务层面

  1. 连接活跃时间大于5秒给被连接对象发送一次心跳包-grpc;
  2. 心跳检查失败后,不断重试-睡眠-重试,最少五秒尝试重连一次-grpc;
  3. 给注册到节点的连接,活跃时间超过20秒的发送检查包,失败就断连-grpc;

2. Distro(AP)怎么保证注册中心数据最终一致(Base)

主要在内存中保存集群数据和实例数据

  1. 集群节点启动时全量拉去其他所有集群节点的数据;
  2. 根据权重选择获取数据的集群节点,也就是连接的集群节点;
  3. 每个5秒轮询一个节点校验元数据,校验失败全量拉取;
  4. 每个节点独立处理读请求,及时从本地发出响应。
  5. 写到本机,同步给其他节点

你可能感兴趣的:(Nacos源码,java,开发语言)