关键词:
共识算法
历史稳定性计算值
单机瓶颈
强同步副本
并行复制
摘要:
分布式系统通常使用共识算法来提高系统的可用性与容错能力,但是传统的通用共识算法并未考虑集群不同节点的差异和上层应用的具体特性,因此本文对Raft共识算法进行优化研究。
Raft共识算法是一种易于理解和实现的共识算法,它将复杂的共识问题分解成相对独立的领导者选举、日志复制和安全性三个模块,清晰得提供了分布式系统容错所需的所有主要功能。但是,Raft算法领导者选举仅考虑节点日志的同步情况,难以选出集群中最适宜的节点作为领导者。此外,由于采用随机选举超时机制,不可避免地会存在多候选者瓜分选票导致集群长时间无领导者而不可用的问题。并且Raft算法仅能通过领导者读写日志,导致单机瓶颈问题的同时副本仅用作数据备份,副本资源利用率低。最后,Raft算法作为通用共识协议未考虑上层应用的具体特性,严格要求日志复制串行化,限制了上层应用的并发能力。
针对上述问题,本文主要从领导者选举和日志复制两个模块对Raft算法进行优化改进。主要研究内容如下:
(1)本文针对领导者选举中选票瓜分和不能选出较优节点作为领导者的问题,提出根据节点的历史响应情况计算历史稳定性计算值,在此之上提出基于多维节点信息的领导者选举机制。该方法基于当前节点的历史表现以及节点所在机器的处理能力等参数设置选举超时时间,能够有效避免选举阶段多候选者瓜分选票,并使得当选的领导者节点为集群中稳定性最高且性能优异的节点,以此增强系统的鲁棒性。
(2)本文为减轻领导者负载和提高副本资源利用率,提出强同步副本的概念及选取策略。本方法可以将读取操作转移到强同步副本上进行,在不与领导者通信的条件下直接在强同步副本上读取结果,从而减轻领导者负载。
(3)针对Raft算法严格要求串行化日志复制,限制系统并发能力这一问题,本文针对分布式键值系统这一应用领域,充分考虑操作间依赖关系,在此基础上提出日志并行复制的解决方案,能够有效提高系统并发能力。
综上所述,本文所提算法的领导者选举更为高效,能够利用副本进行一致性读取,且支持无依赖关系的日志项并行复制。