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

90 阅读3分钟

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

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

一、本堂课重点内容:

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

本堂课的知识要点有哪些?

  • 分布式概述
    • 分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
    • 分布式存储
      1. Google File System(GFS):google:分布式文件系统
      2. Ceph:统一的分布式存储系统
      3. Hadoop HDFS:基于GFS架构的开源分布式文件系统
      4. Zookeeper:高可用的分布式数据管理与系统协调框架
    • 分布式数据库
      1. Google Spanner:google可扩展的、全球分布式的数据库
      2. TiDB:开源分布式关系型数据库
      3. HBase:开源Nosq|数据库
      4. MongoDB:文档数据库
    • 分布式计算
      1. Hadoop:基于MapReduce分布式计算框架
      2. Spark:在Hadoop基础之上,使用内存来存储数据
      3. YARN:分布式资源调度
    • 故障模型
      • Byzantine failure:节点可以任意篡改发送给其他节点的数据
      • Authentication detectable byzantine failure (ADB)
      • Byzantine failure的特例;节点可以篡改数据,但不能伪造其他节点的数据Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
      • Omission failure:节点收到数据的时间无限晚,即收不到数据
      • Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
      • Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设
    • 拜占庭将军
      • image.png
    • 时间和事件顺序
  • 理论基础
    • CAP理论
    • ACID理论
    • BASE理论
    • 二阶段提交
    • MVCC
    • 共识协议

二、详细知识点介绍:

RAFT协议

  • 概述

    • Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。
  • 三种角色

    • Leader - 领导者:Leader 负责处理所有的客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志
    • Follower - 跟随者:接受并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志
    • Candidate - 备选者:Leader选举过程中的临时角色。向其他节点发送请求投票信息
  • 四种定义:

    • Log(日志):节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
    • Term(任期号):单调递增,每个Term内最多只有一个Leader
    • Committed:日志被复制到多数派节点,即可认为已经被提交
    • Applied:日志被应用到本地状态机:执行了log中命令,修改了内存状态

本堂课介绍了哪些知识点?

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

三、实践练习例子:

MapReduce

  • 设计一个简易的MapReduce系统,思考如何应对故障?

分布式KV

  • 设计一个简易的分布式键值系统,要求具备弹性的能力和达成线性一致

有什么实践举例帮助理解知识点?

四、课后个人总结:

本章有什么知识点不容易掌握?

什么地方容易与其他内容混淆?