分布式理论-现代架构基石(进阶)|青训营笔记

96 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第四天

今天会学习到:

  • 分布式的概述
  • 分布式的系统模型
  • 基础理论
  • 事务
  • 共识协议
  • 实践

分布式的概述

分布式的优势:

  1. 去中心化
  2. 低成本
  3. 弹性
  4. 资源共享
  5. 可靠性高

挑战:

  1. 普遍节点故障
  2. 不可靠的网络
  3. 异构的机器与硬件环境
  4. 安全

常见的分布式系统

image.png

系统模型

故障模型

  • 拜占庭:节点可以任意篡改发送给其他节点的数据
  • ADB:节点可以篡改数据,但不能伪造其他节点数据
  • Performance failure:节点未在特定时间段内收到数据,时间太早或太晚
  • Omission failure:节点收到数据时间无限晚,即收不到数据
  • Crash failure:Omission基础上增加节点停止响应假设
  • Fail-stop failure:Crash上增加错误可检测假设

(正确、时间、状态、原因)

image.png

拜占庭将军从2人→3人→4人,经过推演可得出:当有3m+1个将军,其中m个叛徒时,可以增加m轮协商,最终达成一致。

CAP理论

image.png

ACID理论

A(2万)→【转1万】B(2万) 生成 A(1万)→B(3万) 原子性:强调操作 (A与B的转账操作必须是一个原子,不能存在A转了B没转这种情况) 一致性:强调状态 (A与B转账后转账结果和金额必须相同,不能出现不对账的情况)

BASE可用

互联网系统(非金融类)不追求一致性。保证CAP中的AP已经很够用了。

分布式事务

二阶段提交

image.png

image.png

两阶段提交需注意的问题:

1、性能问题

2、协调者单点故障问题

3、网络分区带来的数据不一致

当AB双方交易其中一方产生问题时,会选择进行回滚重新发起事务,这时会选择加锁锁定用户视角防止回滚给用户带来的疑问。

三阶段提交

和二阶段提交解决的问题: 1.单点故障问题 2.阻塞问题 类似TCP三次握手协议,尽量减少阻塞和资源浪费。

MVCC

是一种并发控制方法。维持一个数据的多个版本使其读写操作没有冲突。

时间戳是通过一个物理服务器形成的物理时钟来添加时间戳(初态API)。详见: Spanner论文的TrueTime API。 但是一些条件不足的就使用另一种:时间戳(TSO)有中心服务器进行时间戳分发,但是交互成本比较大。

共识协议

RAFT协议

image.png

image.png

Paxos协议

image.png

RAFT有很多开源实践。容错中有Raft Learner模式可以对其进行修复。

实践

image.png

思考题

image.png

image.png 10是一个课程,MIT的教授讲解的很生动形象。