前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式系统的共识(consensus)算法比较

分布式系统的共识(consensus)算法比较

作者头像
物流IT圈
发布2020-02-26 10:53:48
1.4K0
发布2020-02-26 10:53:48
举报
文章被收录于专栏:物流IT圈物流IT圈

这是一篇比较分布式系统中服务器之间获得状态最终一致性也就是取得共识consensus几个流行算法,包括Paxos、Egalitarian Paxos、Hydra、Fast Paxos、Ios、VRR(Viewstamped Replication Revisited)、 Multi-Paxos、Raft等。 什么是共识consensus?当多个主机通过异步通讯方式组成网络集群时,这种异步网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,取得共识。 为什么认为异步网络默认是不可靠的?这是根据FLP原理。Impossibility of Distributed Consensus with One Faulty Process一文提出:在一个异步系统中我们不可能确切知道任何一台主机是否死机了,因为我们无法分清楚主机或网络的性能减慢与主机死机的区别,也就是说我们无法可靠地侦测到失败错误。但是,我们还必须确保安全可靠。 在实际中,我们首先必须接受系统可能不可用,然后试图减轻这种不可用,而不是完全回避去除,减轻的手段有定时器和补偿。Paxos等算法因此而诞生。Paxos算法是最初最简单的分布式共识算法,它是通过节点之间来回两次实现状态复制(两段复制),但是Paxos这种来回两次的协调过程(甚至更长)拖延了时间,增加了系统的延迟。 在实际过程中,Paxos这种理想化的协议实际遭遇很多挑战,也就是说,实际中有很多问题呼唤一种分布式协调机制来处理下面这些问题: 1.处理磁盘故障和损坏 2.处理有限的存储容量 3.有效处理只读请求 4.动态成员资格和重新配置 5.支持事务 6.验证实施的安全 这就需要一种领导人或协调人角色来具体处理这些问题,Paxos是一种无领导人Leaderless算法,而Raft算法是一种强领导力Leadership的算法。总之,之所以需要协调领导人是为了确保主机之间状态复制过程的可靠性。 一个强势领导人Leadership能够在问题发生时在主机之间进行复杂的强协调,显然Leaderless则是无领导人或协调人介入处理。但是强领导在保证可靠性的同时也会聚集单点风险,而且选举领导人的过程也是费时费力的,因此,并不是领导力越强越好。需要根据自己的业务领域特点在Leadership和Leaderless之间选择合适自己的算法。 从Leadership到Leaderless以此从强到弱的排序是: 1.Strong Leadership强领导:Raft 2.Leader driven领导人驱动:VRR和 Mutil-Paxos 3.Leader with Delegation有代表团的领导人:Ios 前面三个重视单个领导人的算法MultiPaxos,Raft 和 VRR的问题是:吞吐量将受到单个节点的限制。而Ios允许一个领导人动态地安全地委托其职责给系统中其他节点(代表团)。 4.Leader only when needed只有在需要时才有领导人:Hydra和Fast Paxos 5.Leaderless无领导人:Egalitarian Paxos和普通的Paxos 上述算法中,最小延迟的算法是VRR,最易于理解的是Raft,而对于广域网地区之间复制,冲突最少conflicts rare的是 Egalitarian Paxos; conflicts common是 Fast Paxos. 上述算法需要结合实际以及CAP理论与FLP综合判断选择。 当前,日益广泛使用的微服务架构会很自然地横向扩展到分布式系统,虽然微服务本身是无态的,但是它会操作有态数据,这些有态数据要么放在数据库中,要么放在缓存中,那么缓存或数据库进行横向扩展组成分布式系统时就需要使用上面这些算法,当然一些NoSQL数据库内部已经实现了这些算法,那么了解这些算法也能对我们进行NoSQL选型有参考作用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 驼马精英 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这是一篇比较分布式系统中服务器之间获得状态最终一致性也就是取得共识consensus几个流行算法,包括Paxos、Egalitarian Paxos、Hydra、Fast Paxos、Ios、VRR(Viewstamped Replication Revisited)、 Multi-Paxos、Raft等。 什么是共识consensus?当多个主机通过异步通讯方式组成网络集群时,这种异步网络默认是不可靠的,那么在这些不可靠主机之间复制状态需要采取一种机制,以保证每个主机的状态最终达成相同一致性状态,取得共识。 为什么认为异步网络默认是不可靠的?这是根据FLP原理。Impossibility of Distributed Consensus with One Faulty Process一文提出:在一个异步系统中我们不可能确切知道任何一台主机是否死机了,因为我们无法分清楚主机或网络的性能减慢与主机死机的区别,也就是说我们无法可靠地侦测到失败错误。但是,我们还必须确保安全可靠。 在实际中,我们首先必须接受系统可能不可用,然后试图减轻这种不可用,而不是完全回避去除,减轻的手段有定时器和补偿。Paxos等算法因此而诞生。Paxos算法是最初最简单的分布式共识算法,它是通过节点之间来回两次实现状态复制(两段复制),但是Paxos这种来回两次的协调过程(甚至更长)拖延了时间,增加了系统的延迟。 在实际过程中,Paxos这种理想化的协议实际遭遇很多挑战,也就是说,实际中有很多问题呼唤一种分布式协调机制来处理下面这些问题: 1.处理磁盘故障和损坏 2.处理有限的存储容量 3.有效处理只读请求 4.动态成员资格和重新配置 5.支持事务 6.验证实施的安全 这就需要一种领导人或协调人角色来具体处理这些问题,Paxos是一种无领导人Leaderless算法,而Raft算法是一种强领导力Leadership的算法。总之,之所以需要协调领导人是为了确保主机之间状态复制过程的可靠性。 一个强势领导人Leadership能够在问题发生时在主机之间进行复杂的强协调,显然Leaderless则是无领导人或协调人介入处理。但是强领导在保证可靠性的同时也会聚集单点风险,而且选举领导人的过程也是费时费力的,因此,并不是领导力越强越好。需要根据自己的业务领域特点在Leadership和Leaderless之间选择合适自己的算法。 从Leadership到Leaderless以此从强到弱的排序是: 1.Strong Leadership强领导:Raft 2.Leader driven领导人驱动:VRR和 Mutil-Paxos 3.Leader with Delegation有代表团的领导人:Ios 前面三个重视单个领导人的算法MultiPaxos,Raft 和 VRR的问题是:吞吐量将受到单个节点的限制。而Ios允许一个领导人动态地安全地委托其职责给系统中其他节点(代表团)。 4.Leader only when needed只有在需要时才有领导人:Hydra和Fast Paxos 5.Leaderless无领导人:Egalitarian Paxos和普通的Paxos 上述算法中,最小延迟的算法是VRR,最易于理解的是Raft,而对于广域网地区之间复制,冲突最少conflicts rare的是 Egalitarian Paxos; conflicts common是 Fast Paxos. 上述算法需要结合实际以及CAP理论与FLP综合判断选择。 当前,日益广泛使用的微服务架构会很自然地横向扩展到分布式系统,虽然微服务本身是无态的,但是它会操作有态数据,这些有态数据要么放在数据库中,要么放在缓存中,那么缓存或数据库进行横向扩展组成分布式系统时就需要使用上面这些算法,当然一些NoSQL数据库内部已经实现了这些算法,那么了解这些算法也能对我们进行NoSQL选型有参考作用。
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档