网站 空间 购买企业年报系统官网
news/
2025/9/30 23:25:52/
文章来源:
网站 空间 购买,企业年报系统官网,成都网站建设电话咨询,如何再腾讯云服务器做网站前言
etcd是线性一致性读#xff0c;而zk却是顺序一致性读#xff0c;再加上各种共识、强弱一致的名词#xff0c;看到欸度时候总会混淆#xff0c;这里会给出一些例子来帮助理解。
什么是一致性#xff1f;
在谈到一致性这个词时#xff0c;你会想到CAP理论的consist…前言
etcd是线性一致性读而zk却是顺序一致性读再加上各种共识、强弱一致的名词看到欸度时候总会混淆这里会给出一些例子来帮助理解。
什么是一致性
在谈到一致性这个词时你会想到CAP理论的consistency,或者ACID钟的consistency,或者cache一致性协议的coherence还是Raft/Paxos钟的consensus? 一致性这个词在不同的领域具有不同的含义毕竟这个中文词在英文词对应了不同的术语consistencycoherenceconsensus三个单词统一翻译为一致性。因此在谈一致性之前有必要对这几个概念做一个区分否则很容易让人迷惑。
coherence
Coherence只出现在Cache Coherence一词中称为缓存一致性研究多核场景即怎么保证多个核上的CPU缓存数据是一致的。一般是单机维度的不算分布式领域
consensus
consensus准确的翻译是共识即多个提议者达成共识的过程例如PaxosRaft就是共识算法Paxos是一种共识理论分布式系统是他的场景一致性是他的目标。 一些常见的误解:使用了Raft或者Paxos的系统都是线性一致的(Linearizability即强一致)其实不然共识算法只能提供基础要实现线性一致还需要在算法之上做出更多的努力。因为分布式系统引入了多个节点节点规模越大、宕机、网络时延、网络分区就会成为常态任何一个问题都可能导致节点之间的数据不一致因此Paxos和Raft准确来讲是用来解决一致性问题的共识算法用于分布式场景而非缓存一致性这种单机场景。所以很多文章也就简称Paxos是分布式系统中的一致性算法。 一致性(Consistency)的含义比共识(Consensus)要宽泛一致性指的是多个副本对外呈现的状态。包括顺序一致性、线性一致性、最终一致性等。而共识特指达成一致的过程但注意共识并不意味着实现了一致性一些情况它是做不到的
Paxos与Raft
Paxos其实是一类协议Paxos中包含Basic Paxso、Multi-Paxos、Cheap Paxos和其他的变种。Raft就是Multi-Paxos的一个变种Raft通过简化 Multi-Paxos的模型实现了一种更容易让人理解和工程实现的共识算法Paxos是第一个被证明完备的共识算法能够让分布式网络中的节点出现错误时仍然保持一致当然前提是没有恶意节点也就是拜占庭将军问题。在传统的分布式系统领域是不需要担心这种问题的。因为不论是分布式数据库、消息队列、分布式存储你的机器都不会故意发送错误信息最常见的问题反而是节点失去响应所以它们在这种前提下Paxos是足够用的
复制状态机
Consensus共识在实现机制上属于复制状态机(Replicated State Machine)的范畴复制状态机是一种很有效的容错技术基于复制日志来实现每个Server存储着一份包含序列的日志文件状态机会按顺序执行这些命令。因为日志中的命令和顺序都相同因此所有节点会得到相同的数据。因此保证系统一致性就简化为保证操作日志的一致这种复制日志的方式被大量运用如果GSF、HDFS、ZooKeeper和etcd都是这种机制。
区块链
共识算法还有一个很重要的领域就是比较火的区块链比如工作量证明(POW)、权益证明(POS)和委托权益证明(DPOS)、置信度证明(POB)等等都是共识算法。大家熟知的zk、etcd这种之所以叫传统分布式就是相对于区块链这种新型分布式系统而言的都是多节点共同工作只是区块链有几点特殊:
1.区块链需要解决的是拜占庭将军问题Paxos之类的一致性算法无法对抗欺诈节点2.区块链中不存在中央空置房没有一个节点可以控制或协调账本数据的生成3.区块链中的共识算法如果达不到一致性则任何人都可以硬分叉另建一个社区、一条链4.分布式系统的性能理论上可以无限提升但是区块链是以相对的低效率来换取公正主流的公有链每秒只能处理几笔到几十笔交易
consistency
介绍完了Coherence和Consensus共识我们来看consistency一致性也就是我们平时说的最多的CAP、BASE、ACID之类。 最简单的客户端C1将系统中的一个值K由V1更新为V2,客户端C2/C3/C4需要立即读取到K的最新值。
一致性要求的是一致并不是正确如果所有节点给出一个错误的答案那也叫一致性对于不同的场景用户角度对于一致性的要求是不一样的例如:
1.银行系统:你在柜台存了一笔钱同时你的朋友转账给你一笔钱你的女朋友同时又在淘宝消费了一笔钱你可能会感觉很乱但你相信最后你的余额一定是对的银行可以慢一点但不会把钱搞错。2.电商系统:你在淘宝看到一个库存为5的衣服然后你快速下单但是被提示库存不足无法购买你会觉得自己动作太慢被人抢走了不太关心库存为啥显示53.论坛小站:你注册一个论坛需要手机验证码点完发送之后一直没有响应过了一天你才收到了这条短信不过小站而已不注册也就罢了。
上面是夸张了的用户情况在实际业务中一致性也是分等级的如强一致行和弱一致性怎么使用要看具体和系统的容忍度。 强一致性和弱一致性只是一种统称按照从强到弱可以划分为:
1.线性一致性Linearizability consitency,也叫原子性2.顺序一致性Sequential consistency3.因果一致性Causal consistency4.最终一致性Eventual consistency
强一致性包括线性一致性和顺序一致性其他的如最终一致性都是弱一致性。 关于强和弱的定义可以参考剑桥大学的slide
Strong consistency
- ensures that only consistent state can be seen.
* All replicas return the same value when queried for the attribute of an object. This may be achieved at a cost - high latency.Weak consistency
- for when fast access requriement domainates
* update some replica, e.g. the closest or some designated replica
* the update replica sends up date messages to all other replicas.
* different replicas can return different values for the queried attribute of the value should be returned ,or not known, with a timestamp
* in the long term all updates must propagte to all replicas ....强一致性集群中对任何一个节点发起请求都会得到相同的回复但将产生相对高的延迟。而弱一致性具有更低的响应延迟但可能会回复过期的数据最终一致性即是经过一段时间后会达到一致的弱一致性
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923352.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!