当前位置:网站首页>常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
常见分布式理论(CAP、BASE)和一致性协议(Gosssip、Raft)
2022-08-03 15:49:00 【InfoQ】
一、CAP理论与BASE理论:
1、什么是 CAP 理论:
- C:Consistency 一致性:指强一致性,分布式系统中的所有节点在同一时刻具有同样的值、都是最新的数据副本,一致性保证了不管向哪台服务器写入数据,其他的服务器能实时同步数据
- A:Availability 可用性:部分结点宕机不影响整个集群对外提供服务,每次向未故障的节点发送请求,服务节点总能保证在有限的时间内处理完成并进行响应,从用户角度来看就是不会出现系统操作失败或者访问超时等问题,但是系统内部可能会出现网络延迟等问题
- P:Partition Tolerance 分区容错性:由于网络的问题错综复杂,如果某个节点因为网络等问题造成数据不一致,或者数据延迟很久才同步过来,虽然会影响部分节点数据的时效性,但是服务节点依然是可用的,分布式系统要能容忍这种情况的,也就是说,尽管网络上有部分消息丢失,但系统仍然可继续工作。
2、一致性的类别:
3、什么是 BASE 理论:
- BA 基本可用:指分布式系统在出现故障的时候,允许损失部分可用性,保证核心可用。但不等价于不可用。比如:搜索引擎0.5秒返回查询结果,但由于故障,2秒响应查询结果;网页访问过大时,部分用户提供降级服务等。
- 软状态:软状态是指允许系统存在中间状态,并且该中间状态不会影响系统整体可用性,即允许系统在不同节点间副本同步的时候存在延时。
- 最终一致性:系统中的所有数据副本经过一定时间后,最终能够达到一致的状态,不需要实时保证系统数据的强一致性。
二、一致性协议:
1、Gossip协议:
- (1)Gossip协议是周期性散播消息,每隔一段时间传播一次
- (2)被感染的节点,每次可以继续散播N个节点
- (3)每次散播消息时,都会选择尚未发送过的节点进行散播,不会向发送的节点散播
- (4)同一个节点可能会收到重复的消息,因为可能同时多个节点正好向它散播
- (5)集群是去中心化的,节点之间都是平等的
- (6)消息的散播不用等接收节点的 ack,即消息可能会丢失,但是最终应该会被感染
2、Raft一致性协议:
- (1)Leader节点:同大多数分布式中的Leader节点一样,所有数据的变更都需要先经过Leader
- (2)Follower节点:Leader节点的追随者,负责复制数据并且在选举时候投票的节点
- (3)Candidate候选节点:参与选举的节点,就是Follower节点参与选举时会切换的角色
2.1、Leader 选举:
2.2、数据日志的复制:
边栏推荐
猜你喜欢
方舟生存进化开服需要多少钱
After the cnpm installation is successful, the prompt is not an internal and external command, nor is it a runnable command solution
使用Make/CMake编译ARM裸机程序(基于HT32F52352 Cortex-M0+)
AWS中国区SDN Connector
如何启动 NFT 集合
CS免杀姿势
MySQL性能优化_小表驱动大表
[微信小程序开发者工具] × #initialize
方舟开服工具、服务器教程win
身为售后工程师的我还是觉得软件测试香,转行成功定薪11.5K,特来分享下经验。
随机推荐
开源一夏 | 阿里云物联网平台之极速体验
深度学习——安装CUDA以及CUDNN实现tensorflow的GPU运行
Convex Optimization of Optimal Power Flow (OPF) in Microgrids and DC Grids (Matlab Code Implementation)
Research on power flow in DC microgrid based on Newton's method (Matlab code implementation)
【899. 有序队列】
破解数字化转型困局,企业分析协同场景案例解析
身为售后工程师的我还是觉得软件测试香,转行成功定薪11.5K,特来分享下经验。
AWS China SDN Connector
C#.NET 国密数字信封
【周报】2022年7月31日
AI+BI+可视化,Sugar BI架构深度剖析
16 【过渡 动画】
JD6606SP5_JD6606SSP_JD6606SASP_JD6621W7百盛新纪元授权代理商
如何分析周活跃率?
请问下,flink cdc监控oracle,我看源码是通过sid方式的,请问怎么改成service
With a single operation, I improved the SQL execution efficiency by 10,000,000 times!
1、实例开启无锁表结构变更以后,在任务编排中通过“单实例SQL”节点进行的结构变更,是优先采用无锁表
LyScript 验证PE程序开启的保护
js中的基础知识点 —— 事件
瞌睡检测系统介绍