Nacos 一致性协议:Distro协议

简介

Distro协议是一种AP分布式协议,是一直最终一致性的协议

设计思想

  • nacos每个节点是平等的都可以处理写请求,同时把数据同步到其他节点
  • 每个节点只负责部分数据,定时发送自己负责的数据的校验值到其他节点来保持数据一致性
  • 每个节点独立处理读请求,及时从本地发出响应

数据初始化

新加入的 Distro 节点会进行全量数据拉取。具体操作是轮询所有的 Distro 节点,通过向其他的机器发送请求拉取全量数据。
在这里插入图片描述

数据校验

在Distro集群启动之后,各台机器之间会定期发送心跳来保证数据一致性

写操作

对于⼀个已经启动完成的 Distro 集群,在⼀次客户端发起写操作的流程中,当注册非持久化的实例的写请求打到某台 Nacos 服务器时,Distro 集群处理的流程图如下。
在这里插入图片描述

步骤:
1.前置filter拦截请求,根据请求中包含的IP和port信息计算所属的Distro的责任节点,请将请求转发到责任节点
2. 责任节点将写请求进行解析
3. Distro协议定期执行Sync任务,将所负责的所有实例信息同步到其他节点上

读操作

由于每台机器上的数据都存放了全量数据,因此每一次读操作,Distro机器会直接从本地拉取数据
在这里插入图片描述

总结:

Distro 协议是 Nacos 对于临时实例数据开发的⼀致性协议。其数据存储在缓存中,并且会在启动时进行全量数据同步,并定期进行数据校验。

在 Distro 协议的设计思想下,每个 Distro 节点都可以接收到读写请求。所有的Distro协议的请求场景主要分为三种情况:

  1. 当该节点接收到属于该节点负责的实例的写请求时,直接写入。
  2. 当该节点接收到不属于该节点负责的实例的写请求时,将在集群内部路由,转发给对应的节点,从而完成读写。
  3. 当该节点接收到任何读请求时,都直接在本机查询并返回(因为所有实例都被同步到了每台机器上)。

Distro 协议作为 Nacos 的内嵌临时实例⼀致性协议,保证了在分布式环境下每个节点上面的服务信息的状态都能够及时地通知其他节点,可以维持数十万量级服务实例的存储和⼀致性。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值