分布式数据一致性理解

栏目: 后端 · 发布时间: 6年前

内容简介:1、关联数据之间的逻辑关系是否正确 (数据约束一致). 理解为垂直方向的冗余

点击蓝色“ 乔志勇笔记 ”关注我哟

加个“ 星标 ”,第一时间获取推送的文章哦!

一、基本概念:

1、关联数据之间的逻辑关系是否正确 (数据约束一致). 理解为垂直方向的冗余

2、由于数据的复制,不同数据节点中的数据内容是否完整并且相同(数据副本一致) ,理解为水平方向的冗余

二、一致性模型

一致性模型主要可以分为两类:

能够保证所有进程对数据的读写顺序都保持一致的一致性模型称为 强一致性模型

而不能保证的一致性模型称为 弱一致性模型

(1)强一致性模型

1、线性一致性(Linearizable Consistency)

cap中的一致性指的就是线性一致性,目前而言线性一致性是无法实现的,做的最好就是Google的Spanner

2、顺序一致性(Sequential Consistency)

(2)弱一致性模型

1、因果一致性(Causal Consistency)

2、最终一致性(Eventual Consistency)

base 理论中的E就是最终一致

3、以客户端为中心的一致性(Client-centric Consistency)

以客户端为中心的一致性包含了四种子模型:

  1. 单调读一致性(Monotonic-read Consistency):如果一个进程读取数据项 x 的值,那么该进程对于 x 后续的所有读操作要么读取到第一次读取的值要么读取到更新的值。即保证客户端不会读取到旧值。

  2. 单调写一致性(Monotonic-write Consistency):一个进程对数据项 x 的写操作必须在该进程对 x 执行任何后续写操作之前完成。即保证客户端的写操作是串行的。

  3. 读写一致性(Read-your-writes Consistency):一个进程对数据项 x 执行一次写操作的结果总是会被该进程对 x 执行的后续读操作看见。即保证客户端能读到自己最新写入的值。

  4. 写读一致性(Writes-follow-reads Consistency):同一个进程对数据项 x 执行的读操作之后的写操作,保证发生在与 x 读取值相同或比之更新的值上。即保证客户端对一个数据项的写操作是基于该客户端最新读取的值。

三、共识算法(水平问题)

一致性问题是结果,共识是为达到这个结果所要经过的过程,或者说一种手段。

  1. 拜占庭错误。表示通过伪造信息进行恶意响应产生的错误。

  2. 非拜占庭错误。没有进行响应产生的错误

解决「 拜占庭错误 」的称作Byzantine Fault Tolerance(BFT)类算法,解决「 非拜占庭错误 」的称作Crash Fault Tolerance(CFT)类算法

(1)BFT类型算法

BFT类型算法又有2个分支。「 基于确定性的 」和「 基于概率的 」。

先聊聊「基于确定性的」,此类算法表示一旦对某个结果达成共识就不可逆转,即共识是最终结果。它的代表作是PBFT(Practical Byzantine Fault Tolerance)算法

再聊聊「基于概率的」,此类算法的共识结果则是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,成为事实上的最终结果。它的代表作是PoW(Proof of Work)算法

(2)CFT类算法

CFT类算法解决的是分布式系统中存在故障,但不存在恶意节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题

「Paxos」算法

Raft算法

Zookeeper里的「ZAB」(ZooKeeper Atomic Broadcast)算法也是CFT类算法,是以Fast Paxos算法为基础实现的

四、分布式事务(垂直问题)

分布式系统的事务,不得不提到被广为流传的两个理论:「 CAP 」、「 BASE 」。

(1)「CAP」为基础解决方案

1、两阶段提交(2PC)[5]

2、三阶段提交(3PC)[6]

3、TCC

注意幂等性

(2) 「BASE」理论为基础的解决方案

1、异步消息——本地消息表

2、异步消息——不支持事务的MQ

3、异步消息——支持事务的MQ

目前唯一支持事务的MQ框架是RockerMQ

4、Saga

必须要额外确保 执行了「回滚」之后再接收到「正向请求」,等于“请求无效”的效果

5、Gossip协议

参考文章: 分布式系统:一致性模型

最终一致性的实现方式

分布式系统关注点——「共识」的兄弟「事务」

分布式系统关注点——通过“共识”达成数据一致性

近期文章:

5种分布式锁实现的对比?

Java并发编程学习体系

java8 Stream 史上最全总结

Java 网络编程"初探"

redis 知识点总结

java 核心技术学习总结 (一)

spring中"投机取巧"地限制 用户同时登陆

如果你喜欢本文

请长按二维码,关注 乔志勇笔记

分布式数据一致性理解


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Applications (Hacking Exposed)

Web Applications (Hacking Exposed)

Joel Scambray、Mike Shema / McGraw-Hill Osborne Media / 2002-06-19 / USD 49.99

Get in-depth coverage of Web application platforms and their vulnerabilities, presented the same popular format as the international bestseller, Hacking Exposed. Covering hacking scenarios across diff......一起来看看 《Web Applications (Hacking Exposed)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换