分布式架构 | 青训营笔记

261 阅读4分钟

这是我参与「第五届青训营 」笔记创作活动的第九天

分布式架构

一、分布式概述

  • 分布式计算
  • 分布式存储
  • 分布式数据库

优势

  • 去中心化
  • 低成本
  • 弹性
  • 资源共享
  • 可靠性高

挑战

  • 普遍的节点故障
  • 不可靠的网络
  • 异构的机器与硬件环境
  • 安全

二、系统模型

  • 故障模型

image.png

拜占庭将军问题

结论:两将军问题被证实无解的电脑通信问题,两支军队理论上永远无法达成共识

TCP三次握手是是在两个方向确认包的序列号,增加了超时重试,是两将军问题的一个工程解

更加普适的场景

当有3m+1个将军时,其中m个叛徒时,可以增加m轮协商可以达成一致。

时间和事件顺序

分布式理论的基础

通过逻辑时钟,可以对整个系统中的事件进行全序排序

三、理论基础

1、CAP理论

  • C (Consistence) 一致性,指数据在多个副本之间能够保持一致的特性 (严格的一致性) 。
  • A (Availability)可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到错的响应,但是不保证获取的数据为最新数据。
  • p(Network partitioning)分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障

CAP永远无法同时满足 CAP理论往往运用于数据库领域,同样可以适用于分布式存储方向

  • CA : 放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
  • AP : 放弃一致性( 这里说的一致性是强一致性 ),追求分区容错性和可用性例如一些注重用户体验的系统
  • CP : 放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统

2、ACID理论

  • 原子性(Atomicity): 一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。

  • 一致性(Consistency): 在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设约束、触发器、级联回滚等。

  • 隔离性(Isolation): 数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括未提交读(Read uncommitted)、提交读(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  • 持久性(Durability): 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。


3、BASE理论

针对AP场景 大部分场景与钱财无关 未必要保证一致性 保证最终一致性即可

四、分布式事务

二阶段提交

三个假设

  • 1.引入协调者 (Coordinator) 和参与者 (Participants) ,互相进行网络通信
  • 2.所有节点都采用预写式日志,且日志被写入后即被保持在可靠的存储设备上
  • 3.所有节点不会永久性损坏,即使损坏后仍然可以恢复

三阶段提交

将两阶段提交中的Prepare阶段拆成两部分:Cancommit阶段和Precommit阶段。

解决两个问题:

  • 单点故障问题
  • 阻塞问题

五、共识协议

Quorum NWR三要素

  • N: 在分布式存储系统中,有多少份备份数据
  • W: 代表一次成功的更新操作要求至少有w份数据写入成功
  • R: 代表一次成功的读数据操作要求至少有R份数据成功读取

为了保证强一致性,需要保证W + R > N

  • RAFT协议
  • Paxos协议

六、总结

image.png