2019年3月27日 下午12:33
CAP提出三个问题
- 一致性:通常通过算法、规则来实现
- 可用性:通常提高硬件水平,所以不是学习的重点
- 分块性:也是就部分坏了,不影响整体。别一块臭骨头坏了整锅汤。
解决一致性的方法:
加锁
- 问题:可能出现死锁
事务
- 模式一:ACID
注:这里里面解释的一致性很不好:看这里最下面 分布式的整体理解/519B2105-03BD-4E6D-80F2-A3F2C336CC7E.png)
- 模式二:BASE
- 分布式系统中BASE原理:
- 我认为实际生产中我们使用的就是BASE,因为CAP这是一个很强的要求,我们的光信号传播本身就是需要时间的,所以不可能保持绝对的一致性。
- BASE中的关键词有核心可用+中间状态
- 允许中间状态,但是该中间状态不会影响系统的整体可用性
- 也就是我们作为一个将军,打仗的时候要保证自己的核心力量的安全,用小的失利换取更大的收益。
/B951C7B6-8FC2-4553-B66E-61B4C73C28FE.png)
- 分布式系统中BASE原理:
- 模式一:ACID
分布式事务:
- 定义:分布式事务是指事务的参与者、支持事务 的服务器、资源服务器以及事务管理器分 别位于分布式系统的不同节点。通常一个 分布式事务中会涉及对多个数据源或业务系统的操作
- 存在的问题:共识问题 :分布式系统中的进程 经常需要就一些值达成协定,即共识问题
解决方式:2PC(Two-Phase Commit Protocol)两段式提交
- 定义:PPT 任勇毛云计算
- 存在的问题:同步阻塞、数据不一致、单点问题、太过保守 PPT
Paxos:
- 目的:
- 解决一致性,一堆人,选谁的问题。eg:服务器中选出master服务器
- 为什么一个value会对应多个n值?
- 针对同一个问题的方案是可以更新补充的。
- 对于proposer,为什么value从accepter获取最新的值?
- value相同,代表大家讨论的是同一个问题。
- 要针对同一个问题进行讨论。
- 一个强假设:
- accepter只看最新的时间的,这个时间就是n来表示的。
- 由于并发,有稍微旧一毫秒的怎么办?更新一下自己的n,重提就行了。
- 简要了流程说明:
/4A5B8AB2-6DA4-4D16-B592-CD9631CE7887.png)
- 具体的例子
- PPT
Gossip:
- 目的:解决容错问题,方法就是让流言多复制几次,这样其中一台坏了也无所谓。
- 三种模式:
- in the push style,
- nodes periodically send (push) the current content of variable value to a node selected randomly
- in the pull style,
- nodes periodically ask (pull) new updates of the replicated variable from other, randomly selected nodes
- in the push-pull style,
- push and pull are combined together
/7B356755-BE7E-4686-88E0-970137534F75.png)
- push and pull are combined together
- in the push style,