我是靠谱客的博主 自信树叶,最近开发中收集的这篇文章主要介绍数据的一致性及一致性算法数据的一致性及一致性算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据的一致性及一致性算法

CAP原则

CAP原则:一个提供数据服务的存储系统最多只能满足下述3个条件中的2个

一致性

系统在执行过某项操作后仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读取到最新值。

可用性

每一个操作总是能够在一定时间内返回结果(操作成功或失败)

分区容忍性

是否可以对数据进行分区

数据的一致性

定义

一些分布式系统通过复制数据来提高系统的可靠性和容错性,并且将数据的不同的副本存放在不同的机器,在数据有多分副本的情况下,如果网络、服务器或者软件出现故障,会导致部分副本写入成功,部分副本写入失败。这就造成各个副本之间的数据不一致,数据内容冲突。

强一致性

要求无论更新操作实在哪一个副本执行,之后所有的读操作都要能获得最新的数据。

弱一致性

用户读到某一操作对系统特定数据的更新需要一段时间,我们称这段时间为“不一致性窗口”。

最终一致性

是弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新。
从客户端来看,有可能暂时获取的不是最新的数据,但是最终还是能访问到最新的
从服务端来看,数据存储并复制到分布到整个系统超过半数的节点,以保证数据最终一致。

Paxos算法

简介

Paxos算法解决的问题是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。

Paxos算法是一种基于消息传递的分布式一致性算法。

无主集群模式(无leader)

每个节点都会发送指令,投票

每个节点都可以提议,事务编号混乱,浪费时间

节点投票站阵营,无法决定事务是否执行,造成活锁

有主集群模式(有leader)

只有一个主节点发送提议

根据事务id和节点id大来选举

当节点为2n+1个时,集群就可以正常运行

zookeeper就是基于此理论实现的

Raft算法

简介

Raft算法适用于管理日志一致性的协议,Raft 将一致性算法分为了:领导选取,日志复制和安全3个部分

领导选取

leader

负责Client交互和log复制,同一时刻系统中最多存在1个。

follower

被动响应请求RPC,从不主动发起请求RPC(通信远程调用)。

candidate

一种临时的角色,只存在于leader的选举阶段,某个节点想要变成leader,那么就发起投票请求,同时自己变成candidate,候选者在随机给定的周期时间内走完成为领导者

日志复制

主要用于保证节点的一致性,这阶段所做的操作也是为了保证一致性与高可用性。

安全

当Leader收到大多数(n/2+1)Follower的ACK信息后将该日志设置为已提交并追加到本地磁盘中
通知客户端并在下个heartbeat中Leader将通知所有的Follower将该日志存储在自己的本地磁盘中。

最后

以上就是自信树叶为你收集整理的数据的一致性及一致性算法数据的一致性及一致性算法的全部内容,希望文章能够帮你解决数据的一致性及一致性算法数据的一致性及一致性算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部