分布式理论(二)| 青训营笔记

82 阅读2分钟

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

共识和一致性

最终一致性:数据改动期间会有不一致状态,最终达成一致
线性一致性:一个人读到新版本数据,同步给其他人,版本往上递增,不会回退(强一致,需要协商和同步,会增加系统延迟)

image.png

时间和事件顺序

数据库事务、raft中,lamport clock为分布式事务定义逻辑的时间戳,解决分布式数据库隔离性和一致性问题
并发的定义:a无法指向b,b也无法指向a
lamport clock:全局事件的排序,事件的时间是离散的值

image.png

理论基础

CAP

一个系统无法同时具备cap
consistence:严格一致性,读到新版本就同步给其他人
availability:服务可用,但是响应的不一定是最新数据
network partition:容错性,没有网络也可以提供服务
image.png CA:单机数据库
CP:钱和安全相关
AP:注重用户体验

ACID

CA系统
事务:数据库管理执行过程中的一个逻辑单元,所有操作全部执行或全部不执行
原子性:多个操作原子状态
一致性:事务执行前后状态一致,转钱和转钱后总额不变
隔离性、持久性 image.png

BASE

对于AP系统
image.png

分布式事务

给A发减少200,给B发增加200
二阶段提交: prepare和commit阶段,prepare阶段写入本地日志,如果失败,commit阶段回滚

image.png

image.png

两阶段提交

image.png 网络分区:commit失败,整个事务回滚,会导致用户看到数据摇摆的行为,例如A commit成功,B失败,则A的用户会看到更改后的数据,但是又会回滚
-> 解决办法:加锁,事务没完成,读取数据会被阻塞
日志保存:分布式文件系统、分布式快存储、分布式KV系统

三阶段提交

image.png 类似于TCP三次握手,对两阶段的优化
如果participant超时没有收到do commit,自动提交事务,避免事务重做的代价