Nacos架构与原理:CAP一致性协议详解
创作时间:
作者:
@小白创作中心
Nacos架构与原理:CAP一致性协议详解
引用
1
来源
1.
https://cloud.tencent.com/developer/article/2301539
Nacos是一个集服务注册发现和配置管理于一体的组件,为了实现数据存储和一致性保障,它在单个集群中同时运行CP协议(Raft)和AP协议(Distro)。这种设计既满足了服务发现注册中心的高可用性需求,又保证了配置数据的强一致性。
为什么 Nacos 需要一致性协议
Nacos的目标是尽可能减少用户的部署和运维成本,支持单机模式和集群模式的启动。由于Nacos需要存储数据,因此在集群模式下,必须解决节点间的数据一致性和同步问题。这需要引入共识算法来保障数据一致性。
为什么 Nacos 选择了 Raft 以及 Distro
Nacos作为一个集服务注册发现和配置管理于一体的组件,需要从两个方面来考虑数据一致性保障:
从服务注册发现来看
- 对于非持久化服务(需要客户端上报心跳进行服务实例续约),由于采用了心跳可自动完成服务数据补偿的机制,因此更注重可用性,适合使用最终一致性共识算法。
- 对于持久化服务(直接通过Nacos服务端创建的数据),则需要保障数据在各个节点之间的强一致性,因此选择强一致性共识算法。
从配置管理来看
配置数据必须保证大部分节点都保存了此配置数据才能认为配置被成功保存,因此对于配置数据的管理,必须要求集群中大部分节点是强一致的,只能使用强一致性共识算法。
为什么是 Raft 和 Distro ?
Raft (CP模式)
- 选择原因:当前工业生产中使用最多的强一致性共识算法是Raft协议,它更容易理解且有多个成熟实现。Nacos作为Java技术栈项目,选择了支持多RaftGroup的JRaft,为后续的多数据分片提供了可能。
Distro (AP模式)
- 特点:Distro是阿里巴巴自研的最终一致性协议,通过引入权威Server的概念,有效降低了消息冗余问题,提高了网络传输效率。
Nacos 一致性协议的演进
早期的 Nacos 一致性协议
早期Nacos架构中,服务注册和配置管理的一致性协议是分开的,没有下沉到内核模块作为通用能力演进,导致服务注册发现模块逻辑复杂且难以维护。
当前 Nacos 的一致性协议层
当前Nacos已经将一致性协议能力下沉到内核模块,提供了统一的抽象接口,使得服务注册发现模块和配置管理模块不再需要耦合任何一致性语义,实现了计算存储的彻底分离。
Nacos 如何做到一致性协议下沉
- 一致性协议抽象:将一致性协议抽象为基本的读写操作,通过插件化设计实现解耦。
- 数据存储抽象:通过KVStore接口实现存储抽象,使得服务模块和配置模块可以专注于核心逻辑,而将数据存储和一致性问题交给存储层处理。
通过这些改进,Nacos实现了计算和存储的逻辑分离,提高了系统的性能和可用性。
热门推荐
破解课业压力难题:9种方法助孩子每天阅读半小时
38℃高温下绽放:七种耐热花卉养护指南
阳台种花选这4种:耐晒易养,光照足就开花
夏季阳台种植攻略:18种耐热花卉让你的花园持续绽放
五种食物加健康生活方式,让血管更年轻
纳豆激酶:溶栓降脂效果好,还能增强免疫力
口腔健康从饮食抓起:9种天然食物助你保护牙齿
探秘海棠区的千年古迹,你get了吗?
蜈支洲岛:中国的马尔代夫,海岛度假的完美选择
蜈支洲岛:三亚海棠湾的海岛度假胜地
日照市美术馆新展来袭,艺术迷们冲鸭!
“瘗玉埋香”:《红楼梦》中林黛玉悲剧命运的古典隐喻
从朝云暮雨到风流韵事:解密“云雨”的文学密码
婚礼致辞这样写:男方女方父母范例精选
弥勒旅游必去三地:艺术小镇、森林公园和最大笑佛
杭州古镇摄影指南:15个实用技巧,轻松拍出氛围感大片!
周末打卡塘栖古镇,拍出最美江南水乡
楼塔古镇摄影打卡,抓住杭州最美瞬间
杭州古镇探秘:乌镇、西塘、南浔的文化之旅
花形似蝶、净化空气,蝴蝶兰成家居养花新宠
怎么ping自己电脑的ip地址
从柚子到牛油果:10种适合控糖期食用的低糖水果
冬日橙子季:六大养生功效与挑选食用全指南
车厘子营养价值全解析:抗氧化助眠,但肾病患者需谨慎
每100克仅含7-9克糖,枇杷是名副其实的低糖水果
黑胡椒粉与白胡椒粉:从工艺到风味的差异解析
白胡椒粉配清汤,黑胡椒粉配麻辣:火锅调味全攻略
南航联手科大讯飞、中国卫通,科技赋能飞行新体验
南航机队调整背后的战略深意
南方航空宽体机占比低的秘密