[ 分布式理论| 青训营笔记 ]

124 阅读3分钟

[ 分布式理论| 青训营笔记 ]

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

零、前言:

记个笔记顺便(恰青豆还是有很多不完善也有可能对的地方还请大佬们指正

一、本堂课重点内容:

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

二、详细知识点介绍:

8.1 分布式概述

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

优势:去中心化,低成本,弹性,资源共享,可靠性高

8.2 系统模型

  • 故障模型(由难处理到易)

    四个维度:正确性,时间,状态,原因

2023-02-02-10-58-29-image.png

在分布式中,接收数据晚不如接收不到数据

  • 拜占庭将军问题 拜占庭将军问题-CSDN博客

    总结:在工程实践中tcp三次握手能最优的解决数据连接的问题,当有3m + 1 个将军,其中 m 个叛徒时,增加 m 轮协商,能达成一致

  • 数据一致性

    发生在同时读写时

    最终一致性 -- 改动期间不一致,最终一致

    线性一致性 -- 更新后及时将消息同步到其他客户端,但是这样会增加延迟,可用性受损

  • 时间和事件顺序

    a -> b -> c == a -> c

    a 不指向 c && c 不指向 a == a 和 c是并行的

    逻辑时钟

    lamport 时钟 (有点不好理解的话 Lamport 逻辑时钟-CSDN博客)

8.3 基础理论

CAP 理论(数据库)

无法同时完全满足 cap

2023-02-02-11-46-18-image.png

ACID 理论

1、A (Atomicity) 原子性 (操作)

事务里的所有操作要么全部做完,要么都不失败,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

2、C (Consistency) 一致性 (状态)

数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

3、I (Isolation) 独立性 所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。 4、D (Durability) 持久性 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。 BASE 理论 基本可用,软状态,最终一致性

8.4 分布式事物

  • 两阶段提交

  • MVCC

    悲观锁 -- 认为任何操作都会出错,操作数据时直接把数据锁住

    乐观锁 -- 认为任何操作都不会出错,只在更新时判断是否修改数据,有冲突放弃操作

    MVCC 是多版本控制,为每个修改每个版本,实现 tick line

    时间戳实现1:spanner 论文里 通过true time API 与卫星实现时间强同步

    时间戳实现2:时间戳预言机(TSO),采用中心化授权方式

8.5 共识协议

  • Quorum NWR 模型

    N:在分布式存储系统中,有多少份备份数据。    

W:代表一次成功的更新操作要求至少有w份数据写入成功 。    

R:代表一次成功的读数据操作要求至少有R份数据成功读取。

为了保证强一致:W + R > N

2023-02-02-12-39-09-image.png

  • RAFT 协议raft协议

     raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。

    定义三种角色:leader,follower,candidate

2023-02-02-17-11-19-image.png

Paxos 协议

与 raft协议区别:允许并发修改日志,可以随机选主不必选最新

劣势:没有一个节点有完整数据

优点:新能高

  • 分布式实践

    MapReduce 统计文本的单词出现个数

2023-02-02-17-18-53-image.png