上图原子广播技术原理图(a)所示为 BirmanKenneth关千原子广播的论文架构,其中组播层包含组播(GroupBroadcast, GBCAST入原子广播(AtomicBroadcast, ABCAST)和先后广播( CausalBroadcast,CBCAST),实现多台服务器之间的 Broadcast协议。
核心的交互流程如上图(b)所示,每次有新的成员加入将进行视图(View)变换。例如,B加入 A形成新的视图(A、B),或者A离开旧视图(A、B、C)形成的新的视图(B、C),视图变换期间暂停客户端请求,从而提高视图变化效率。而当视图内部较多成员出现异常时,将基千多数派投票 ( Quorum) 机制形成新的稳定视图。例如,在系统总共有 N个成员的情况下,如果成员出现异常,那么只有出现异常的成员个数大千或等千( N+l)/2,才能形成新的视图。
视图变换成功进入 稳态后,客户端就能 以原子广播形式给 视图中的成员发送信息 ,并且保证完全顺序,如图 2-8(b) 所示。在视图(A、B、C)形成后,如果客户端 l先千客户端2发送消息给该视图,那么在保证该视图的成员 A、B、C都处理完客户端 l的消息后,再处理客户端2的消息。
原子广播技术可以在某种程度上解决两将军问题,或者非拜占庭故障下的多将军共识问题。把原子广播中的成员当作将军,若将军间通信出现异常,则将通过多数派投票淘汰异常的将军,形成新的共识,一旦形成新的共识,那么后续的消息通信将保证完全顺序。
产业界的VCS( VeritasClusterServer) 就是基于GAB来实现集群的共识,以及保证集群消息通信在成员间的原子性和顺序性的。
资料来源:《对象存储实战指南》
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。