分布式理论 | 青训营笔记

62 阅读2分钟

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

分布式理论

概述

什么是分布式

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

image.png

Why-How-What

Why:

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

常见的分布式系统

image.png

系统模型

故障模型

image.png

拜占庭将军问题

image.png

image.png

image.png

共识与一致性

image.png

时间与事件顺序

image.png

image.png

理论基础

CAP理论

image.png

image.png

ACID理论

image.png

BASE理论

image.png

分布式事务

两阶段提交

image.png

image.png

三阶段提交

image.png

MVCC

image.png

共识协议

Quorum NWR模型

image.png

RAFT协议

image.png

image.png

Paxos协议

  • Paxos算法与RAFT算法区别:

    • Multi-Paxos 可以并发修改日志,而Raft写日志操作必须是连续的
    • Multi-Paxos 可以随机选主,不必最新最全的节点当选Leader
  • 优劣势

    • 优势:写入并发性能高,所有节点都能写
    • 劣势:没有一个节点有完整的最新的数据,恢复流程复杂,需要同步历史记录

问题

  • 分布式系统有哪些优势和挑战?

  • 两将军问题为什么理论上永远达不成共识?

  • 为什么TCP采用三次握手?而不是两次和四次?

  • 为什么在4将军问题中,增加1轮协商就可以对抗拜占庭故障?

  • 什么是最终一致性?什么是线性一致性?

  • CAP理论中,请举例说明可用性和一致性的矛盾?

  • 数据库里的一致性和分布式系统中的一致性有什么区别?

  • 两阶段提交中,什么场景需要数据库管理员介入?

  • 三阶段提交缓和两阶段提交的哪两个问题?

  • 什么场景适合乐观锁?什么场景适合悲观锁?

  • 在共识协议中,为什么说允许数据被覆盖会带来数据一致性问题?

  • RAFT协议中,Leader写成功日志Log20但未同步给Followers后宕机,Follower重新选举后产生一条新日志Log20,这时Leader重启,整个系统发现两种不一样的Log20的记录,请问如何区分并拒掉前面的Log20?

  • RAFT协议中,Stale读是如何产生的?该如何解决Stale读的问题?