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协议的主要设计思想如下:

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

Distro协议工作原理:

  1. 数据初始化,新加入的Distro节点会进行全量数据拉取。具体操作是轮询所有的Distro节点,通过向其他的机器发送请求拉取全量数据。在全量拉取操作完成之后,Nacos的每台机器上都维护了当前的所有注册上来的非持久化实例数据。
  2. 数据校验,在Distro集群启动之后,各台机器之间会定期的发送心跳进行数据校验。如果某台机器校验发现与其他机器数据不一致,则会进行全量拉去请求将数据补齐。
  3. 写操作,当注册非持久化的实例的写请求打到某台Nacos服务器时,首先被Filter拦截,根据请求的IP端口信息转发到对应的Distro责任节点上处理请求。Distro协议还会定期执行Sync任务,将本机所负责的所有的实例信息同步到其他节点上。
  4. 读操作,由于每台机器上都存放了全量数据,因此在每⼀次读操作中,Distro机器会直接从本地拉取数据,快速响应。

服务注册发现采用AP协议

为了保障可用性,尽最大可能保证服务注册发现能力可以对外提供服务,Nacos的服务注册发现采取了心跳可自动完成服务数据补偿的机制。如果数据丢失的话,是可以通过该机制快速弥补数据丢失,并保障最终一致性。

配置管理采用CP协议

配置数据,是直接在Nacos服务端进行创建并进行管理的,必须保证大部分的节点都保存了此配置数据才能认为配置被成功保存了。为了避免丢失配置变更引起严重故障,使用了强⼀致性共识算法,保障集群中大部分的节点是强⼀致的。

配置中心的一致性协议

Server间的⼀致性协议,有DB模式(读写分离架构),⼀致性的核心是Server与DB保持数据⼀致性,从而保证Server数据⼀致。Server之间都是对等的,数据写任何⼀个Server,优先持久化,持久化成功后异步通知其他节点到数据库中拉取最新配置值,并且通知写入成功。
Server间的⼀致性协议,无DB模式Server间采用Raft协议保证数据⼀致性。
SDK与Server的⼀致性协议,通过MD5值是否⼀致实现,如果不⼀致就拉取最新值。

Nacos一致性协议 CP/AP/JRaft/Distro协议相关推荐

  1. Nacos集群CP架构底层Raft分布式一致性协议实现

    Nacos集群CP架构底层Raft协议实现 一.CAP定理 分区容错性 CP模式 AP模式 二.Raft算法 Leader Election 领导选举 Log Replication 日志复制 Rep ...

  2. 3.Nacos一致性协议Raft

    Nacos一致性协议 分布式一致性协议有很多,例如Paxos协议,Zab协议,Raft协议,而Nacos采用的是Distro协议和Raft协议.对于非临时数据,Nacos采用的是Raft协议,而临时数 ...

  3. Nacos 是如何同时实现AP与CP的

    Nacos 是如何同时实现AP与CP的 两种一致性策略如何在nacos中共存 AP实现 CP实现 重要的协议--RAFT nacos是如何实现CP(raft)的 为什么要同时实现CP和AP两套一致性策 ...

  4. Nacos如何实现Raft算法与Raft协议原理详解

    前言 大名鼎鼎的Paxos算法可能不少人都听说过,几乎垄断了一致性算法领域,在Raft协议诞生之前,Paxos几乎成了一致性协议的代名词.但是对于大多数人来说,Paxos算法太难以理解了,而且难以实现 ...

  5. GOSSIP PROTOCOL(又被称为反熵Anti-Entropy, 一种弱一致性, 同步信息交换通信的协议)...

    GOSSIP PROTOCOL(又被称为反熵"Anti-Entropy", 一种弱一致性, 同步信息交换通信的协议) 1.它是一种最终一致性算法 2.它是弱一致性的 1.https ...

  6. STEP-已成为国际标准的应用协议(AP)

    关于范围的描述摘取自SC4项目管理数据库,SC4在线(http://www.tc184-sc4.org/)2006年3月21日最后更新.关于一致类的描述摘取自第六条国际标准(IS).国际标准草案(DI ...

  7. Nacos注册中心CP架构Raft源码分析

    @toc[] 一.CAP介绍 二.Nacos如何设置CP.AP模式 我们使用nacos的时候,有一个关于节点类型的配置: cloud:nacos:discovery:server-addr: 192. ...

  8. 注册中心对比CP/AP动态切换

    服务注册中心对比 服务注册与发现框架 公司 CAP 控制台 社区活跃 Eureka Netflix AP 支持 低(2.x闭源) Zookeeper Apache CP 不支持 中 Consul Go ...

  9. 协议篇————9、Telnet协议详解

    一.概述 Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议.Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终端 ...

  10. DASH协议及各种码率自适应协议的对比

    一.DASH协议 官方文档,包括一些白皮书啊之类的各种: MPEG-DASH标准第一部分2012版和2014版,英文版 MPEG-DASH官网白皮书 标准文档: 这些白皮书没找到中文版,所以我自己翻译 ...

最新文章

  1. 手机自动化测试:appium源码分析之bootstrap十二
  2. MyBatis 实际使用案例-transactionManager
  3. linux操作系统之线程同步及互斥量
  4. 02_使用jq实现进入和离开动画
  5. 在XP下,如何使指定的用户在登录界面可见
  6. 基于java客户关系管理系统
  7. 求三阶行列式--学解析几何的朋友计算外积和混合积可以用这个啦--
  8. AutoCAD.NET开发:PaletteSet
  9. 1.1.从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队。如果该 年没有举办世界杯,则输出:没有举办世界杯。
  10. google与百度地图api体验笔记
  11. Firebug教你玩转网页小把戏!
  12. 上海东方美谷JW万豪、福清喜来登、宁波杭州湾凯悦等酒店开业 | 中国酒店周刊...
  13. element-ui vue-quill-editor 富文本编辑器 解决插入图片不采用base64 从服务器传图片在显示返回url
  14. Webots学习笔记 1.创建自己的仿真机器人模型
  15. CentOs 7 中vim文本编辑器的下载及使用
  16. 我作为大学生刚出校园实习的感受
  17. 速途研究院联合融云:中国移动社交沟通指数报告
  18. 第一Python第一个爬虫项目
  19. 中国人民大学于坤教授:以社会支持体系提升就业力 | 牛客大咖说
  20. 指令集创始人潘爱民博士荣获CSDN“2021年度IT领军人物”

热门文章

  1. 抖音短视频去水印教程
  2. python爬虫cookie
  3. Flutter修改App名称(Android+IOS)
  4. 《如何学商学》及听课感想
  5. 公募基金资格:社保、养老金、企业年金,三者有什么区别?
  6. 如何获取win10当前桌面背景壁纸
  7. 32位ubuntu 编译android源码,ubuntu 下编译android源码错误解决记录
  8. 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
  9. vba批量合并指定的sheet_用VBA实现把多个Excel文件合并到一个Excel文件的多个工作表(Sheet)里...
  10. HTML打地鼠小游戏代码