鹰龙数据中心
RSS订阅 | 匿名投稿
您的位置:网站首页 > 高可靠系 > 正文

基于Raft深度优化腾讯云金融级消息队列CMQ高可靠算法详解

作者:小联 来源: 日期:2019-1-11 8:10:51 人气: 标签:中间件高可靠性

  分布式系统是指一组的计算机,通过网络协同工作的系统,客户端看来就如同单台机器在工作。随着互联网时代数据规模的爆发式增长,传统的单机系统在性能和可用性上已经无法胜任,分布式系统具有扩展性强、可用性高、廉价高效等优点得以广泛应用。

  但与单机系统相比,分布式系统在实现上要复杂很多。CAP理论是分布式系统的理论基石,它提出以下 3 个要素:

  lPartition-tolenrance(分区可性):单机故障或网络分区,系统仍然可以强一致性和可用性。

  一个分布式系统最多只能满足其中 2 个要素。对于分布式系统而言,P显然是必不可少的,那么只能在AP和CP之间权衡。AP系统强一致性,这在某些业务场景下(如金融类)是不可接受的,CP系统可以满足这类需求,问题的关键在于会多少可用性。传统的主备强同步模式虽然可以一致性,但一旦机器故障或网络分区系统将变得不可用。paxos和raft等一致性算法的提出,弥补了这一缺陷。它们在CP的前提下,只要求大多数节点可以正常互联,系统便可以一直处于可用状态,可用性上显著提高。paxos的理论性偏强,开发者需要自己处理很多细节,这也是它有很多变种的原因,相对而言raft更易理解和工程化,一经提出便广受欢迎。

  lKafka:主要应用在日志、大数据等方向,少量丢失数据业务可以,但不适合要求数据高可靠性的系统。

  lRocketMQ:未采用一致性算法,如果配置成异步模式可能丢失数据,同步模式下节点故障或网络分区都会影响可用性。

  鉴于以上分析,我们设计开发了基于Raft的强一致高可靠消息中间件CMQ。接下来会介绍raft算法原理细节、如何应用在CMQ中在消息可靠不丢失,以及实现过程中在性能方面所作的优化。

  节点之间通过RPC通信来完成选举和日志同步,发送方在发送RPC时会携带自身的Term,接收方在处理RPC时有以下两条通用规则:

  Raft算法属于强Leader模式,只有Leader可以处理客户端的请求,Leader通过心跳维持自身地位,除非Leader故障或网络异常,否则Leader保持不变。选举阶段的目的就是为了从集群中选出合适的Leader节点。

  在选举时可能会出现两个节点的选举定时器同时到期并发起选举,各到一半选票导致选举失败,选举失败意味着系统没有Leader,不可服务。如果选举定时器是定值,很可能两者再次同时到期。为了降低冲突的概率,选举超时值采用随机值的方式。此外,选举超时值如果过大会导致Leader故障会很久才会再次选举。选举超时值通常取300ms~600ms之间的随机值。

  选举阶段完成后,Leader节点开始接收客户端请求,将请求封装成Entry追加到raft日志文件末尾,之后同步Entry到其他Follower节点。当大多数节点写入成功后,该Entry被标记为committed,raft算法了committed的Entry一定不会再被修改。

  在日志同步的过程中,可能会出现节点之间日志不一致的问题。例如Follower写日志过慢、Leader切换导致旧Leader上未提交的脏数据等场景下都会发生。在Raft算法中,日志冲突时以Leader的日志为准,Follower删除不匹配部分。

  如下图所示,Follower节点与Leader节点的日志都存在不一致问题,其中(a)、(b)节点日志不全,(c)、(d)、(e)、(f)有冲突日志。Leader首先从index=11(最后一条Entry index +1)开始发送AppendEntry RPC,Follower均返回不匹配,Leader收到后不断回退。(a)、(b)在找到第一条匹配的日志后正常同步,(c)、(d)、(e)、(f)在这个过程中会逐步删除不一致的日志,最终所有节点的日志都与Leader一致。成为Leader节点后不会修改和删除已存在的日志,只会追加新的日志。

  Raft算法中充分考虑了工程化中集群管理问题,支持动态的添加节点到集群,剔除故障节点等。下面详细描述添加和删除节点流程。

  注:在步骤 2 过程中,Leader仍在不断接收客户请成Entry,所以只要D与A日志相差不大即认为D已追上。

  3)A B C在应用该日志后集群信息变为ABC,A不再发送AppendEntry给D,D从集群中移除。

  4)此时D的集群信息依旧为ABCD,在选举超时到期后,发起方逸华 子女选举,为了防止D的干扰,引入额外机制:所有节点在正常接收Leader的AppendEntry时,其他节点发来的选举请求。

  本文由海南柴油发电机组 www.hnjqc.cn整理发布

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址:
下一篇:没有资料