分布式理论 | 青训营笔记

60 阅读5分钟

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

分布式理论 - 现代架构基石

分布式

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等

优势

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

挑战

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

使用者视角

Why:
1.数据爆炸,对存储和计算有大规模运用的述求
2.成本低,构建在廉价服务器之上
How:
1.分布式框架
2.成熟的分布式系统
What:
1.理清规模,负载一致性要求等
2.明确稳定性要求,制定技术方案

学习者视角

Why:
1.后端开发必备技能
2.帮助理解后台服务器之间协作的机理
How:
1.掌握分布式理论
2.了解一致性协议
What:
1.把要点深入展开,针对难点搜索互联网资料进行学习
2.将所学知识运用于实践

分布式存储,分布式数据库,分布式计算。

拜占庭将军问题

解决方案:TCP三次握手

CAP理论

一致性,可用性,分区容错性三者只能得到两个。

ACID理论(CA:一致性,可用性)

数据库事务拥有四个特性ACID即分别是原子性( Atomicity ) 、一致性( Consistency )、隔离性 ( Isolation ) 和持久性( Durability )。

原子性(A)。原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。

一致性(C)。一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

隔离性(I)。隔离性是当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所于扰,多个并发事务之间要相互隔离。

持久性(D)。持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故陪的情况下也不会丢失提交事务的操作。

BASE理论(AP:可用性,分区容错性)

二阶段提交or三阶段提交

MVCC

MVCC是一种并发控制的方法,维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写,也不阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能,解决脏读的问题。

Quorum NWR模型

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

为了保证强一致性:W+R>N

Raft协议

Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制。

分布式 KV

  1. 架构
    将海量结构化数据根据Key分成不同的Region,每个Region构建一个单机KV数据库,Region之间形成Raft Groups做到强一致。
  2. 容错
    当Node故障时,通过Raft Learner模式进行数据修复。
  3. 弹性
    当出现局部Key热点或数据膨胀时Region可以进行Split操作,分成两个子Region,反之收缩时进行Merge操作。

思考题

  1. 分布式系统有哪些优势和挑战 ?
  2. 两将军问题为什么理论上永远达不成共识 ?
  3. 为什么TCP采用三次握手? 而不是两次和四次 ?
  4. 为什么在4将军问题中,增加1轮协商就可以对抗拜占庭故障 ?
  5. 什么是最终一致性 ? 什么是线性一致性 ?
  6. CAP理论中,请举例说明可用性和一致性的矛盾 ?
  7. ACID理论的一致性和CAP理论的一致性有什么区别 ?
  8. 两阶段提交中,什么场景需要数据库管理员介入 ?
  9. 三阶段提交缓和两阶段提交的哪两个问题 ?
  10. 什么场景适合乐观锁 ? 什么场景适合悲观锁 ?
  11. 在共识协议中,为什么说允许数据被覆盖会带来数据一致性问题 ?
  12. RAFT协议中,Leader写成功日志Loa20但未同步给Followers后发生宕机,Follower重新选举后产生一条新日志Log20,这时Leader重启,整个系统发现两种不一样的Log20的记录,请问如何区分并拒掉前面的Log20?13.RAFT协议中,Stale读是如何产生的 ? 该如何解决Stale读的问题 ?