分布式一致性原理学习笔记(2)
来源:互联网 发布:iosselect.js api 编辑:程序博客网 时间:2024/06/01 09:08
分布式一致性的相关理论
- ACID
1:原子性
所有的操作结果只有两种状态:全部成功,全部不执行
2:一致性
数据的执行结果是一个状态跳转到另外一个状态。没有中间态。排除故障的状态
3:隔离性
并发隔离
4:持久性
一旦事务成功。其结果必将永久保存。 - CAP
1:一致性
数据在不同节点的同步。 其中又分为 强一致性,弱一致性,最终一致性
2:可用性
对于请求的操作总是能进行可处理的返回。
3:分区容错性
遇到网络分区故障时候,仍然能保证对外提供满足一致性和可用性的服务。影响到系统的扩展性。
三者只能最多满足两种。所以一般在设计阶段会放弃强一致性。 - BASE
1:基本可用
出现不可预知故障的时候。将对系统的影响降级到响应时间上的损失和功能上的损失。
2:软状态
允许系统在不同节点的数据副本之间同步数据存在延时。
3:最终一致性
强调系统中节点的副本在一段时间的同步后,最终能达到一致的状态。
一致性协议
- 2阶段提交
阶段一 :提交事务请求
1:事务访问
协调者向所有参与者发送事务内容。询问是否可以执行事务操作。
2:执行事务
参与者执行事务操作。并记录入日志
3:各参与者向协调者反馈事务询问的响应
阶段二 :执行事务提交
结果1:执行事务提交
a:发送提交请求。
b:事务提交
c:反馈事务提交结果
d:完成事务
结果2:中断事务
a:发送回滚请求
b:事务回滚
c:反馈回滚结果
d:中断事务
总的来说,二阶段提交时将事务分成两个极端。
一个是尝试询问执行,另外一个是分配提交反馈。
此方式优点是 原理简单,实现方便
缺点:同步阻塞,单点问题,脑裂,保守。
- 3阶段提交
阶段一:CanCommit
1:事务询问
2:反馈事务询问相应
阶段二:PreCommit
两种可能:
a:执行事务预提交
1:发送预提交请求
2:事务预提交
3:反馈预提交执行响应
b:中断事务
1:发送中断请求
2:中断事务
阶段三:doCommit
两种可能
a:执行提交
1:发送提交请求
2:事务提交
3:反馈事务提交结果
4:完成事务
b:中断事务
1:发送中断请求
2:事务回滚
相比二阶段提交协议,三阶段提交协议降低了参与则的阻塞访问。并避免了单点故障的影响
缺点:
接受preCommit后,如果网络出现分区。协调者于参与者不能有效地进行网络通信。那么,参与者依然会进行实物提交。可能导致数据的不一致性。
1 0
- 分布式一致性原理学习笔记(2)
- 分布式一致性原理学习笔记(1)
- 分布式一致性原理学习笔记(3)
- 分布式一致性原理学习笔记(4)
- 分布式一致性算法学习笔记
- BigData学习2_分布式基础(1):CAP原理、BASE思想和最终一致性
- 分布式一致性Paxos算法学习笔记(一)
- 分布式一致性Paxos算法学习笔记(二)
- 分布式一致性Paxos算法学习笔记(三)
- Memcache学习笔记(6)- memcache分布式算法 - 一致性hash
- 分布式一致性Paxos算法学习笔记(二):算法详解
- 分布式一致性协议学习笔记(一)--Paxos
- (笔记)理解和学习分布式一致性协议:raft
- 《分布式服务架构原理设计与实战》第2章分布式系统一致性的问题笔记
- 分布式一致性Paxos算法学习笔记
- 《彻底解决分布式系统一致性问题》学习笔记
- 分布式一致性原理与实践(一)
- 分布式一致性原理
- 详解javascript的【6种数据类型】
- Leetcode 11. Container With Most Water (Medium) (java)
- Swift3.0教程(一)-基本的语法
- 对CSDN的建议(一)
- Error:File path too long on Windows,keep below 240 characters 解决
- 分布式一致性原理学习笔记(2)
- 工作第十周:干货太多脑子不够用怎么办
- c语言中的sizeof(面试、笔试常考)
- unity3D——登录界面
- PHP笔记2:PHP 7 中的正则表达式
- python扩展C
- bootStarp Tab Collapse
- list集合的遍历3种方法
- LeetCode: Decode String