当前位置:网站首页>Nacos一致性协议 CP/AP/JRaft/Distro协议
Nacos一致性协议 CP/AP/JRaft/Distro协议
2022-07-07 13:17:00 【抓手】
Nacos因为要支持多种服务类型的注册,并能够具有机房容灾、集群扩展等必不可少的能力,在单个集群中同时运行CP协议和AP协议两种协议。在决定使用CP还是AP⼀致性时,使用⼀个代理,通过可控制的规则进行转发。
目前的⼀致性协议实现,⼀个是基于Raft的CP⼀致性,⼀个是基于自研协议Distro的AP一致性。
Raft协议
Nacosv1.x采用的是Raft协议,v2.x改为JRaft协议。Raft协议不必多言,是CP协议,基于Leader进行写入。
Distro协议
Distro协议是Nacos社区自研的⼀种AP分布式协议,是面向临时实例设计的⼀种分布式协议,其保证了在某些Nacos节点宕机后,整个临时实例处理系统依旧可以正常工作。其数据存储在缓存中,并且会在启动时进行全量数据同步,并定期进行数据校验。每个Distro节点都可以接收到读写请求。
Distro协议的主要设计思想如下:
- Nacos每个节点是平等的都可以处理写请求,同时把新数据同步到其他节点。
- 每个节点只负责部分数据,定时发送自己负责数据的校验值到其他节点来保持数据⼀致性。
- 每个节点独立处理读请求,及时从本地发出响应。
Distro协议工作原理:
- 数据初始化,新加入的Distro节点会进行全量数据拉取。具体操作是轮询所有的Distro节点,通过向其他的机器发送请求拉取全量数据。在全量拉取操作完成之后,Nacos的每台机器上都维护了当前的所有注册上来的非持久化实例数据。
- 数据校验,在Distro集群启动之后,各台机器之间会定期的发送心跳进行数据校验。如果某台机器校验发现与其他机器数据不一致,则会进行全量拉去请求将数据补齐。
- 写操作,当注册非持久化的实例的写请求打到某台Nacos服务器时,首先被Filter拦截,根据请求的IP端口信息转发到对应的Distro责任节点上处理请求。Distro协议还会定期执行Sync任务,将本机所负责的所有的实例信息同步到其他节点上。
- 读操作,由于每台机器上都存放了全量数据,因此在每⼀次读操作中,Distro机器会直接从本地拉取数据,快速响应。
服务注册发现采用AP协议
为了保障可用性,尽最大可能保证服务注册发现能力可以对外提供服务,Nacos的服务注册发现采取了心跳可自动完成服务数据补偿的机制。如果数据丢失的话,是可以通过该机制快速弥补数据丢失,并保障最终一致性。
配置管理采用CP协议
配置数据,是直接在Nacos服务端进行创建并进行管理的,必须保证大部分的节点都保存了此配置数据才能认为配置被成功保存了。为了避免丢失配置变更引起严重故障,使用了强⼀致性共识算法,保障集群中大部分的节点是强⼀致的。
配置中心的一致性协议
Server间的⼀致性协议,有DB模式(读写分离架构),⼀致性的核心是Server与DB保持数据⼀致性,从而保证Server数据⼀致。Server之间都是对等的,数据写任何⼀个Server,优先持久化,持久化成功后异步通知其他节点到数据库中拉取最新配置值,并且通知写入成功。
Server间的⼀致性协议,无DB模式Server间采用Raft协议保证数据⼀致性。
SDK与Server的⼀致性协议,通过MD5值是否⼀致实现,如果不⼀致就拉取最新值。
边栏推荐
- Lidar Knowledge Drop
- Qu'est - ce qu'une violation de données
- [today in history] July 7: release of C; Chrome OS came out; "Legend of swordsman" issued
- Cocoscreator resource encryption and decryption
- CPU与chiplet技术杂谈
- MongoDB数据库基础知识整理
- 【OBS】RTMPSockBuf_Fill, remote host closed connection.
- 【OBS】RTMPSockBuf_ Fill, remote host closed connection.
- Zhiting doesn't use home assistant to connect Xiaomi smart home to homekit
- Stm32f103c8t6 PWM drive steering gear (sg90)
猜你喜欢
![[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset](/img/69/9dadeb92f8d6299250a894690c2845.png)
[deep learning] semantic segmentation experiment: UNET network /msrc2 dataset

Niuke real problem programming - Day17
![[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper](/img/38/cc5bb5eaa3dcee5ae2d51a904cf26a.png)
[understanding of opportunity -40]: direction, rules, choice, effort, fairness, cognition, ability, action, read the five layers of perception of 3GPP 6G white paper

Apache多个组件漏洞公开(CVE-2022-32533/CVE-2022-33980/CVE-2021-37839)

Win10 or win11 taskbar, automatically hidden and transparent

防火墙基础之服务器区的防护策略

Ctfshow, information collection: web4
![[follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code](/img/8d/a6d477a8679ca4f3885b1a7b542437.png)
[follow Jiangke University STM32] stm32f103c8t6_ PWM controlled DC motor_ code

【搞船日记】【Shapr3D的STL格式转Gcode】
![[Yugong series] go teaching course 005 variables in July 2022](/img/66/4265a06a98412bd2c88d8281caf06e.png)
[Yugong series] go teaching course 005 variables in July 2022
随机推荐
【OBS】RTMPSockBuf_ Fill, remote host closed connection.
Ascend 910 realizes tensorflow1.15 to realize the Minist handwritten digit recognition of lenet network
Used by Jetson AgX Orin canfd
【数据挖掘】视觉模式挖掘:Hog特征+余弦相似度/k-means聚类
Cocoscreator operates spine for animation fusion
Lidar knowledge drops
Stream learning notes
CTFshow,信息搜集:web10
Typescript release 4.8 beta
激光雷达lidar知识点滴
Concurrency Control & NoSQL and new database
2. 堆排序『较难理解的排序』
Spatiotemporal deformable convolution for compressed video quality enhancement (STDF)
Ctfshow, information collection: web9
How to enable radius two factor / two factor (2fa) identity authentication for Anheng fortress machine
Pat grade a 1103 integer factorizatio
Briefly describe the working principle of kept
How does the database perform dynamic custom sorting?
[deep learning] image hyperspectral experiment: srcnn/fsrcnn
一个需求温习到的所有知识,h5的表单被键盘遮挡,事件代理,事件委托