1、第 14 卷 第 4 期2023 年 2 月黑龙江科学HEILONGJIANG SCIENCEVol.14Feb.2023ML_Raft 算法在 mysql 分布式集群中的研究程书玲(浙江工贸职业技术学院,浙江 温州 325000)摘要:为解决传统的 Raft 算法存在的数据库同步时间过长、单领导者影响集群性能和稳定性等问题,基于 mysql 分布式集群,分析了数据一致性问题,提出新的改进算法设计 ML_Raft 算法,建立了计算集群与数据同步集群,每个集群功能不同,提高了集群响应能力,降低了每个集群节点的服务压力,提高了集群性能。结合 mysql 集群的应用环境特点,将计算节点和同步节点分开
2、,提出了多个领导者节点,以保证集群的可靠性,加快了响应速度,提高了用户感知。关键词:日志同步;集群架构;性能瓶颈;数据一致中图分类号:TP393.09文献标志码:A文章编号:1674 8646(2023)04 0078 02Research of ML_Raft Algorithm in Mysql Distributed ClusterCheng Shuling(Zhejiang Industry Trade Vocational College,Wenzhou 325000,China)Abstract:In order to solve the problems of long time
3、 of database synchronization,single leader influence clusterperformance and stability,the study analyzes data consistency based on mysql distributed cluster;proposes newimproved algorithm design,i.e.ML_Raft algorithm;establishes calculation cluster and data synchrony cluster,withdifferent functions
4、in each cluster,to improve cluster response capacity;reduce the service stress of each group node;and improve cluster performance.Through combining with the application environment characteristics of mysql cluster,the study divides calculation and synchrony nodes,and proposes many leader nodes to gu
5、arantee the reliability ofcluster,accelerate response speed,and improve usersperception.Key words:Log synchronization;Cluster architecture;Performance bottleneck;Data consistency收稿日期:2022 12 02基金项目:2022 年浙江工贸职业技术学院院级课题“ML_Raft算法在 mysql 分布式集群中的研究”(纵 20220005)作者简介:程书玲(1988 ),女,助教。数据库服务于核心交易业务和实时交互应用,承
6、载着核心数据,因此企业对数据库数据的一致性和高可用性有着强烈的需求。mysql 分布式数据库集群可扩展性好,易于集成现有系统,经济性能优越,受到了广泛青睐。本项目搭建了 mysql 分布式集群,通过对raft 算法的深入研究,在保证数据一致性的前提下解决了高并发访问下单集群故障、性能瓶颈等问题。1研究现状和发展趋势随着数据量的猛增,网络服务不断优化,用户越来越倾向于高质量、高性能、高可用性、高稳定性的应用服务。目前,数据已不再是单一的结构化数据,非结构化数据庞大且复杂,传统的分布式系统在解决数据库一致性方面还有待加强。人们对数据越来越重视,因此令数据在不同服务器集群上保持一致性显得尤为重要。常
7、用的数据库算法包括 Paxos 共识算法、Multi Paxos 算法、Raft 算法、ZAB 协议等,这些算法的共性是同一个集群的节点负责业务请求,又负责领导选举,而传统的集群设计模式不仅会降低集群的可用性,还会导致集群负载均衡过大。其中比较流行的算法是 Paxos,能够解决数据库一致性和单领导者等问题,但是理解起来比较困难,实用性弱,无法应用于具体的系统中。Raft 算法实现比 Paxos 简单,实用性强,可解决分布式数据库集群的事务一致性问题。目前,越来越多的开源软件倾向于选择 Raft 算法,如 Etcd、Consul、Elasticell等,但 Raft 算法中单集群领导问题的解决方
8、案很少,没有Paxos 算法多。例如,Cockroach 提出的 Multi Raft算法,数据库备份副本之间的事务一致性算法采用Raft 算法,但是并没有解决单集群单领导者问题,数据库集群的每个节点既要处理计算任务,又要完成数据的一致性任务,在高并发访问下,集群中服务节点的负载量会显著增大,处理能力明显降低,不可避免地出现系统崩溃,降低了集群的可用性、实用性及稳定性,且处87理请求与日志同步是同一个集群策略,在处理高并发请求时日志同步时间会影响整个系统的可用性。综合各类算法的优势,在分析 Raft 算法的基础上,结合 mysql 集群特点,提出了 ML Raft 算法,将集群中的计算节点和同
9、步节点分开,解决了日志同步时间过长的问题,提出了多个领导者节点,一个领导者从集群退出之后,另外一个领导者节点马上启动,以保证集群的可靠性和稳定性。图 1Raft 算法在 mysql 分布式集群中的应用Fig.1Application of Raft algorithm in mysl distributed cluster2开发内容为解决传统 Raft 算法出现的数据库同步时间过长、单领导者影响集群性能和稳定性等问题,基于mysql 分布式集群,分析了数据一致性问题,提出新的改进算法设计 ML_Raft 算法1 2。建立了计算集群与数据同步集群,每个集群功能不同,提高了集群响应能力,降低了每个
10、集群节点的服务压力,提高了集群性能。结合 mysql 集群的应用环境特点,将计算节点和同步节点分开,以保证集群的可靠性。具体如下:图 2基于 ML_ Raft 算法的 MySQL 分布式集群设计图Fig.2Design drawing of MySQL distributed clusterbased on ML_Raft algorithm设计出一种日志同步集群模型,将数据库集群存储节点与记录日志节点分离。日志集群中的节点负责对日志进行一致性检查,MySQL 集群的计算集群负责客户端请求,采用负载均衡的设计,每次将用户请求按照某一策略转发到某个计算节点上,保证每个节点的负载压力都在正常范围内
11、,从而提高计算集群的可靠性。日志集群负责数据事务一致性,每个节点都是领导者节点,可同步日志数据,降低了日志节点的负载压力,提高客户感知。ML_Raft 算法重点解决日志同步时间过长的问题,将日志集群中的每个节点都视为领导者节点,省去了选举领导者对集群的资源消耗和时间消耗,解决了单个领导者节点崩溃导致集群无法使用的问题,从而提高集群的可靠性和性能。重新设计了日志检查算法,日志检查策略采用每天增量数据对比和一星期全量数据对比的综合方式,在很大程度上降低了日志检查对系统性能的影响,减少日志一致性检查时间,提高响应时间。通过对集群业务并发测试,使用 LoadRunner、Jmeter 软件及人工测试的
12、方式,对集群响应时间、恢复时间、可靠性等方面进行测试,验证ML_Raft 算法的功能是否完善。与传统的 Raft 算法相比,在集群吞吐量、负载、响应时间等方面具有性能优势。技术关键是优化了传统的 Raft 算法,提高了数据一致性算法的性能3,日志集群中的每个节点都具备处理请求的能力,降低日志节点的负载压力。采用集群分离设计,领导者集群负责领导者选举和集群计算服务,日志集群负责日志同步。将计算节点与日志节点进行分离,实现集群日志同步,将数据一致性的任务均衡到日志集群的每个节点上,提高响应速度。3主要技术指标ML_Raft 算法综合了传统的 Raft 算法,在实现mysql 分布式集群数据一致性的
13、基础上解决了单点故障和性能瓶颈问题。具体技术指标如下:性能指标。基于 ML_Raft 设计的 mysql 分布式数据库集群解决了系统高峰期响应慢、系统崩溃的问题,吞吐量随着客户请求数量的增多而显著增加。采用loadrunner 软件进行压力测试,模拟了 2 万多个虚拟用户,实现了上万级别的并发访问,响应时间在 500 ms左右,显著降低用户等待时间,提高了客户感知。可靠性指标。测试表明,基于 ML_Raft 算法的mysql 集群可保证原有数据信息不丢失,恢复故障后,仍可正常向外提供服务,具有较高的可靠性4。(下转第 83 页)97图 4分区地表水资源计算结果Fig.4Calculation
14、results of surface water resources in zones针对区域 19802021 年的水资源产生条件,导入已知水文数据进行模拟,得到各个分区平均地表水资源总量为 7.12 亿 m3。区域整体水资源比周围更加丰富,因为区域上方处于两河交汇处,流域下游河水进入到湖泊中,整个区域水网非常密集。从历年平均自然降水情况可知,该区域仅占据市区面积的 6%,但是水资源总量占比达到 12%。从地下水储量方面分析,该区域主要存在浅层地下水,受到气象条件影响,没有其他的规律性特点。结合该区域 19802021 年地下水储量统计可知,地下水储量为 2.69 亿 m3,利用氡同位素示踪
15、法计算出重复水量达到 0.21 亿 m3。因此,该区域水资源总量为 7.57 亿 m3。2.4SWAT 模型与地面分类法对比应用地面分类法能够对不同下垫面的产汇流进行计算,确定水资源总量。对没有实测资料的区域进行水文简化,使用 SWAT 模型的误差系数在 1%左右,而地面分类法误差系数在 8%左右。从计算结果来看,SWAT 模型分析法优于地面分类法。3结束语选取的研究对象处于平原区域,对其实施水资源总量评价,并将其用于区域水资源综合分析中。使用RS 技术、下垫面数据、水文模型,能够更快分析出区域水资源情况,提升测量效率。利用无人机设备对数据进行复核,可保障调查结果的精确性,且 SWAT 模型比
16、地面分类法更为准确,可为其他区域水资源评价提供参考。参考文献:1 阳柳,钱心缘,王斌,等 基于 SWAT 模型的平原区地表水资源还原计算方法研究 J/OL 水力发电:1 8 2022 12 03https:/kns cnki net/kcms/detail/detail aspx?dbcode=CAPJ dbname=CAPJLAST filename=SLFD20221104001 uniplatform=NZKPT v=iq3y5Uu8v0azSCK6sAGfbQCKQNlJrbnkETbV31GhCod62xHHl4gYtiSEmQj4byB0 2 武力,刘慧莹,向超,等 基于 SWAT 的流域水环境控制单元划分及管控策略 J 人民长江,2022,53(10):14 21 3 齐文华,金艺华,尹振浩 图们江流域 SWAT 模型的构建及其参数敏感性分析 J/OL 水力发电:1 6 2022 12 03https:/kns cnki net/kcms/detail/detail aspx?dbcode=CAPJ dbname=CAPJLAST filename=SLFD2022101