这是我参与「第五届青训营 」笔记创作活动的第 9 天 。
一、知识点介绍
本堂课重点讲了分布式概述、系统模型、理论基础、分布式事务及共识协议。
二、详细知识点
1.什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同目标,可以分为分布式计算、分布式存储、分布式数据库
- 优势
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
- 挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
2.常见的分布式系统
- 分布式存储
- Google File System (GDS):google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
- 分布式数据库
- Google Spanner:google可拓展的、全球分布的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDB:文档数据库
- 分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度
3.故障模型
4.共识和一致性
- 一致性
- 时间和时间顺序
- CAP理论
- C(Consistence)一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性)
- A (Availability)可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据
- P (Network partitioning)分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障
- CAP理论往往运用于数据库领域,同样可以适用于分布式存储方向
- CA:放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
- AP:放弃一致性(强一致性),追求分区容错性和可用性,例如一些注重用户体验的系统
- CP:放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统
- ACID理论
- BASE理论
5.分布式事务
二阶段提交
三阶段提交
MVCC
- 锁
- MVCC
6.共识协议
1)Quorum NWR模型
- 思考:引起的并发更新问题
- 读者如果读到副本1和副本2,得出v=3的结论,如果读到副本2和副本3,得出v=2的结论
- 问题根源:允许数据被覆盖
2)RAFT协议
RAFT协议是i一种分布式一致性算法(共识算法),即使出现部分节点故障、网络延时等情况,也不影响个节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,Raft也使用了Quorum机制。
3)Raft协议运行
-
Leader选举过程:
- 初始全部为Follower
- Current Term + 1
- 选举自己
- 向其他参与者发起RequestVote请求,retry直到:
- 收到多数派请求,成为Leader,并发送心跳
- 收到其他Leader的请求,转为Follwer,更新自己的Term
- 收到部分,但为达到多数派,选举超时,随机timeout开始下一轮
-
Log Replication过程:
-
新Leader产生,Leader和Follower不同步,Leader强制覆盖Followers的不同步的日志
- Leader收到写请求w
- 将w写入本地log
- 向其他Follower发起AppendEntries RPC
- 等待多数派回复
- 更新本地状态机,返回给客户端
- 下一个心跳通知Follower上一个Log已经被Commited了
- Follower也根据命令应用本地状态机
- Follower有问题,Leader一致retry
-
两个规则
- 在一个任期内每个参与者最多投一票(持久化)
- 要成为Leader,必须拿到多数投票
-
Leader出现问题:
-
切主:
-
Stale读:
-
问题:老leader未失去身份,新leader已经选出,产生“双主”,该如何解决?