Day10 分布式 | 青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第 10 天
分布式
分布式是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源实现共同的目标。可以分为分布式计算,分布式存储,分布式数据库等。
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
难点:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器和硬件环境
- 安全性
以往的架构中,服务的状态只有两种,一种是对,一种是错
在分布式的架构中,服务的状态是三种,对、错和未决
常见的分布式系统
- 分布式存储
- 谷歌GFS
- Ceph
- hdfs
- zookeeper
- 分布式数据库
- 谷歌Spanner
- TiDB
- HBase
- MongoDB
- 分布式计算
- Hadoop
- Spark
- YARN
故障模型
处理难度由难到易
- Byzantine failure: 节点可以任意篡改发送给其他节点的数据
- Authentication detectable byzantine failure: 节点可以伪造数据但是不能伪造其他节点的数据
- Performance failure:节点未在特定的时间段收到数据,及时间太早或者太晚
- Omission failure:节点收到数据的时间无限晚,即无法接收到数据
- Crash failure:在omission failure的基础上,增加了节点停止响应的假设
- Fail-stop failure: 在Crash failure的基础上增加了错误可以被检测的假设
分布式理论
CAP
CAP指一致性、可用性和分区容错性,这三者无法同时达到
由CAP理论诞生了三类系统
- CA:放弃分区容错性,如传统数据库
- AP:放弃强一致性,保证高可用
- CP:放弃可用性,保证数据强一致性
ACID
事务时数据库系统中非常重要的概念,,它保证数据库中的一个逻辑单元要么全部执行,要么全部不执行
数据库事务具有四个特性
-
原子性(Atomicity):事务的操作要么全部成功,要么失败回滚
-
一致性(Consistency):数据库从一个一致性状态到另一个一致性状态,也就是事务的执行前后都要处于一致性状态
-
隔离性(Isolation):多个用户并发访问数据库时,数据库为每一个用户开启事务,不能被其他用户的事务干扰
-
持久性(Durability):一个事务一旦被提交,那么数据库中的数据改变就是永久的
BASE
BASE理论是针对AP系统的
-
基本可用(Basically Available):假设系统,出现了不可预知的故障,但还是能用
-
软状态(Soft state):允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性
-
最终一致性(Eventually consistent):数据最终一定能够达到一致的状态
共识协议
Quorum NWR
三要素
- N:分布式存储中,有多少备份数据
- W:一次成功的更新操作至少要有w份数据写入成功
- R:代表一次成功的读数据操作至少要有R分述句成功读取
为了保证强一致性,需要保证W+R>N
Quorum有个缺点,W+R>N的模式并不能完全保证强一致性,例如在异步读写副本时,恰好读到的副本并未被更新,就会导致一致性缺失
Raft
Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。 quorum一致性缺失是由于副本数据可以被覆盖导致的 raft协议节点之间的信息同步只以追加写的方式进行同步,解决了数据被覆盖的问题
raft协议有三个角色
-
Leader 一个系统通常是一主多从的,leader负责处理客户端请求,并向follower同步请求日志,当日志同步到大多数的节点,通知follower提交日志
-
Follower 不发送任何请求,接收并持久化leader的日志,在leader告知日志可以提交后,提交日志,如果leader出现故障,主动推荐自己成为candidate
-
Candidate leader选举过程中的临时角色,向其他节点发送请求投票信息,得票多者成为leader
-
Log(日志):节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
-
Term(任期号):单调递增,每个Term内最多只有一个Leader
-
Committed:日志被复制到多数派节点,即可认为已经被提交
-
Applied:日志被应用到本地状态机:执行了log中命令,修改了内存状态
本文作者:七つ一旋桜
本文链接:https://www.cnblogs.com/poifa/p/17716918.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步