| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 大话分布式理论之二——共识算法与一致性的区别 -> 正文阅读 |
|
[区块链]大话分布式理论之二——共识算法与一致性的区别 |
[系列目录] 文章目录在我们认知分布式理论时,有两个东西常常混在一起,在我的角度看来,他们应该是两个东西——共识算法与一致性协议。 很经典的一个错误认知就是wikipedia在2019年8月的一个对Paxos的定义中,将其描述为“一致性算法”,这一错误在同年12月被修正: 共识算法拜占庭将军问题要清晰的认知什么是共识算法,我们需要了解一个广为传播的问题——拜占庭将军问题。
共识统一:只要每位将军的消息能够正确的到达其他将军那里,产生多数/少数的情况下,必将产生一个统一的共识。
分布式理论中的将军们对于计算机分布式理论中,其实也存在着类似的场景,比如说区块链,比如在具体的应用中,我们部署服务的多个副本应用时需要产生一个主节点。
此时共识算法就发挥作用了,一套完善的共识算法,可以帮助我们在集群启动时选举一个leader,并且在这个leader宕机的时候,还能重新选举一个leader上来。 这里我们要强调一下,相较于拜占庭将军问题,企业级分布式应用不需要考虑上面的叛徒将军(叛徒节点)和叛徒信使(信道劫持)问题,因为分布式应用之间的通信一般都是隔离网络(内网),网络安全的事情可以交个安全部门去考虑。 共识算法-Paxos/Raft等Leslie Lamport是拜占庭将军问题的提出者,Paxos则是他提出的一种共识算法,可以应用在分布式系统中。
共识算法能解决一切共识问题吗?显然是不可以的。
此时只能通过 一些标准来决定谁留下,谁下去。
了解了什么是共识算法,我们再来聊一聊什么是分布式理论中的一致性。 分布式理论中的一致性一致性的概念来自CAP理论的定义,其中的C就是一致性:
今天我们只看一致性: 副本节点间的一致性(分布式一致性)一个分布式集群需要对外部提供强一致性,即集群内部某一台节点的数据发生了改变,必须要所有节点都同步到这个改变之后,外界才能访问集群获取数据。 我们简单了解了什么是强一致性,那么现在我们常说的最终一致性又是什么? 最终一致性:
而最终一致性的语义放到今天我们的实践环境中,往往代表的是不要求实时节点数据一致,但要求尽量短的时间窗口内达到数据一致。 最终一致性的方案往往由可靠的异步化完成。 案例-kafka中的一致性
只有所有in-sync的节点都提交了,消息才算提交了。这个数值如果我们配置为全部节点数,那么显然这将是一个强一致性的配置,而如果我们配置的不是全部节点数,那么他就是弱一致性的配置,因为一次数据变更操作完成后,并不能保证每个副本拿到的数据一致。 应用服务间的一致性(分布式事务一致性)应用服务中的最终一致性又有所不同,应用服务中的一致性往往谈的是分布式事务中的一致性,与数据库事务的ACID中的C是一样的。 以具体的业务举例,一个下单流程中,支付服务成功收款,那么库存系统必须减少相应的库存,这就是分布式事务中的一致性。 分布式事务的强一致性实现方案 在数据库领域,2PC的实现叫做XA事务。当然今天的分布式数据库基本上都是采取了其他的方案而非XA,这是后话。 案例2-应用系统中的最终一致性应用系统中的最终一致性同样依赖可靠的异步化来实现。 那么消息又如何保证可靠呢?怎么保证一定不丢失呢? 欢迎关注微信公众号 【JAVA技术分享官】,公众号首发,持续输出原创高质量JAVA开发者知识点 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:49:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |