当前位置:网站首页>常见分布式理论(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、数据日志的复制:












边栏推荐
- 开源一夏 | 打工人的第25天-曾经的考研人
- 扩展欧几里得求逆元实例
- 神经网络,凉了?
- 2021年12月电子学会图形化二级编程题解析含答案:绘制多边形
- 美国国防部更“青睐”光量子系统研究路线
- After the cnpm installation is successful, the prompt is not an internal and external command, nor is it a runnable command solution
- 方舟开服教程win
- AI+BI+可视化,Sugar BI架构深度剖析
- 【899. 有序队列】
- 新版本MaxCompute 的SQL支持 UDF 分区裁剪的逻辑是怎样的?
猜你喜欢

使用Make/CMake编译ARM裸机程序(基于HT32F52352 Cortex-M0+)

JD6606SP5_JD6606SSP_JD6606SASP_JD6621W7百盛新纪元授权代理商

How to get the 2 d space prior to ViT?UMA & Hong Kong institute of technology & ali SP - ViT, study for visual Transformer 2 d space prior knowledge!.

基于DMS的数仓智能运维服务,知多少?

Essentially a database data recovery 】 【 database cannot read data recovery case

How to prevent hacking Windows server security Settings

ECCV 2022 | 基于关系查询的时序动作检测方法
![[Code Hoof Set Novice Village 600 Questions] Define a function as a macro](/img/7c/7e1469090ca3d1dea703b3fcee7428.png)
[Code Hoof Set Novice Village 600 Questions] Define a function as a macro

AI也有健忘症?英国41岁教授专访:解决灾难性遗忘

【Unity入门计划】制作RubyAdventure01-玩家的创建&移动
随机推荐
实习路途:记录给我的第一个实习项目中的困惑
ReentrantLock详解
人脸识别损失函数的汇总 | Pytorch版本实现
2021年12月电子学会图形化四级编程题解析含答案:质数判断器
Internship Road: Documenting Confusion in My First Internship Project
Basic knowledge points in js - events
分布式系统与微服务的区别
高可用版 主数据库数据结构改变 备数据库会自动改变吗
2021年12月电子学会图形化二级编程题解析含答案:绘制多边形
Go Go 简单的很,标准库之 fmt 包的一键入门
每日练习------有10个数字要求分别用选择法从大到小输出
2021年12月电子学会图形化四级编程题解析含答案:新冠疫苗接种系统
DC-DC 2C (40W/30W) JD6606SX2 power back application
如何用二分法搜索、查找旋转数组中是否含有某个(目标)值? leetcode 81.搜索旋转排序数组
土耳其国防部:联合协调中心将对首艘乌克兰粮船进行安全检查
证实了,百度没有快照了
下午见!2022京东云数据库新品发布会
With a single operation, I improved the SQL execution efficiency by 10,000,000 times!
如何选择合适的损失函数,请看......
【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01