批里批里 (゜-゜)つ🍺 干杯~|

七つ一旋桜

园龄:4年2个月粉丝:6关注:3

Day10 分布式 | 青训营笔记

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

分布式

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

优势:

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

难点:

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

以往的架构中,服务的状态只有两种,一种是对,一种是错

在分布式的架构中,服务的状态是三种,对、错和未决

常见的分布式系统

  • 分布式存储
    1. 谷歌GFS
    2. Ceph
    3. hdfs
    4. zookeeper
  • 分布式数据库
    1. 谷歌Spanner
    2. TiDB
    3. HBase
    4. MongoDB
  • 分布式计算
    1. Hadoop
    2. Spark
    3. 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

image.png

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 中国大陆许可协议进行许可。

posted @   七つ一旋桜  阅读(9)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起