一.RDS 5.7三节点企业版的核心优势
上篇我们介绍了RDS 5.7三节点企业版数据一致性解决方案,这个章节我先对RDS 5.7三节点企业版的核心优势做下简单汇总。
1.数据强一致能力
RDS 5.7三节点企业版在AliSQL的基础上集成了X-Paxos。借助X-Paxos的分布式一致性算法,RDS 5.7三节点企业版从功能层面可以彻底解决数据质量问题,让RDS 5.7三节点企业版从AliSQL时代的数据一致性问题中彻底走了出来,从借助生态解决一致性问题,升级到产品内部一体化方式来彻底解决。
2.RDS 5.7三节点企业版的性能优化
我们都知道强一致一定带来性能的下降,我们来看在RDS 5.7三节点企业版上我们做了哪些优化,来提升吞吐和性能。
1).一体化的日志设计
RDS 5.7三节点企业版的Consensus日志是合并了原有的binlog和relay_log, 但是保留了原有的MySQL binlog的事务日志格式。一体化日志带来的好处首先是减少一份日志的写入;其次扫描日志可以做到顺序IO,这个点尤其对Paxos算法下日志的检索和获取效率是一个提升。
2).异步事务提交
首先X-Paxos完全基于多线程实现,可以在单个分区Paxos中完全的使用多线程的能力,所有的任务都有通用的worker来运行,消除了CPU的瓶颈。在这个基础上,我们在服务层对事务流程进行拆分(处理请求→等待同步→事务提交),不同阶段由线程池的不同线程完成。借助X-Paxos的多线程模式以及服务层的异步化改造,系统吞吐有很大的提升。尤其在跨域或者跨国场景下,巨大的网络延迟使得线程池成为一种瓶颈:实际运行中会发现线程池绝大部分线程在等待日志跨单元同步回包,服务端就没有足够的线程去处理客户请求。
3).Batching &Pipelining
X-Paxos针对高延迟网络做了大量的协议优化尝试和测试,并结合学术界现有的理论成果通过合理的Batching和Pipelining,设计并实现了一整套自适应的针对高延迟高吞吐和低延迟高吞吐网络的通信模式,极大的提升了X-Paxos的性能。Pipeling的引入,需要解决日志的乱序问题,特别是在异地场景下,window加大,加大了乱序的概率。X-Paxos实现了一个高效的乱序处理模块,可以对底层日志实现屏蔽乱序问题,实现高效的乱序日志存储。
如上几个点的优化,保证了RDS 5.7三节点企业版在同城多机房部署或者跨域多单元部署时,写入性能和单节点模式(非强一致)无大幅度劣化。如上功能的提供以及性能优化让RDS 5.7三节点企业版真正能解决一致性问题,同时通过近两年在集团的推广使用也验证了RDS 5.7三节点企业版的可靠性和完备性。
3.多种角色及动态变更
除了一致性的解决外,RDS 5.7三节点企业版还借助了X-Paxos强大的生态功能,增加了RDS 5.7三节点企业版的灵活性,体现在如下几个点上:
1).友好的管控操作:支持在线添加&删除节点,支持在线转让leader;
2).策略化多数派和权重化选主:可以让业务根据自己的部署特点自行配置;
3).节点角色定制化:经典的multi-paxos实现中,一般每个节点都包含了Proposer/Accepter/Learner三种功能,每一个节点都是全功能节点。RDS 5.7三节点企业版支持三种功能的独立配置,将Paxos算法中节点的三个功能进行了剥离和重组,形成了多种不同角色的节点。