一种基于改进RAFT的数据更新方法及系统技术方案

技术编号:34822522 阅读:20 留言:0更新日期:2022-09-03 20:33
本申请公开了一种基于改进RAFT的数据更新方法及系统,所述方法应用于由客户端、主节点和子节点构成的系统中,消息模块将来自所述客户端发送的至少一个数据更新请求存入原始消息队列;消息模块将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列;共识模块将待更新请求发送至系统中的各个子节点,当第一确认消息的数量超过预设阈值时,将第二确认消息发送至各个子节点;共识模块将待更新请求写入日志;DNS更新模块从日志中获取所述待更新请求,并发送待更新请求至DNS服务模块;DNS服务模块获取待更新请求对应的更新处理结果,并将更新处理结果反馈至待更新请求对应的客户端。反馈至待更新请求对应的客户端。反馈至待更新请求对应的客户端。

【技术实现步骤摘要】
一种基于改进RAFT的数据更新方法及系统


[0001]本专利技术涉及信息
,特别涉及一种基于改进RAFT的数据更新方法及系统。

技术介绍

[0002]DNS是互联网主要使用的标识解析方案,通过基于全球部署的分布式系统为上层互联网应用提供基础服务。从功能上看,DNS系统包含权威DNS和递归DNS,其中权威DNS负责DNS名字空间域名数据的发布,递归DNS负责代理互联网用户的DNS请求,通过向权威DNS系统发起递归解析得到解析结果后返回给用户。
[0003]在实际部署中,为提高服务的可用性和服务性能,权威DNS在物理上一般采用树状结构的多级部署组网方式。类似于DNS域名空间的树状结构,系统的一级节点为一级主节点,是该权威DNS系统的数据源,其下的每一级节点为其上级节点的辅服务器节点,为其下级节点的主服务器节点。每级节点通过DNS的IXFR(增量更新)和AXFR(全量更新)协议实现数据更新下发。
[0004]在这种模式下,存在两个问题:一、对一级主节点的单主依赖问题。虽然DNS通过分布式部署,在解析层面消除了单点故障隐患。但是在数据传输层面,采用传统的分层组网方式时,权威DNS系统中的一级主节点是系统唯一的数据下发源,一旦该主节点出现故障,将导致整个系统无法下发数据。二、数据更新高并发时性能问题。一方面分层组网时,数据更新传递到叶子节点需要通过多层传递,另一方面,传统的DNS数据增量更新方式(IXFR)下一次数据更新需要4次RTT,效率不高。根据有关实际运行数据,传统组网方式下,当服务器部署存在跨大洲、跨运营商情况时,数据更新到叶子节点将至少达到秒级。当数据更新高并发时(如域名抢注),将造成大量数据等待更新,延时可能达到分钟级甚至小时级。对于顶级域名的注册管理机构的权威DNS系统,解决以上两个问题,对于提升域名服务能力有重要意义。

技术实现思路

[0005]本申请提供了一种基于改进RAFT的权威DNS组网方法及系统,旨在解决权威DNS传统组网方式下,一级主节点单点故障风险和高并发时数据下发性能受限两个问题,提升权威DNS的可用性和服务性能。
[0006]第一方面,本申请提供了一种基于改进RAFT的数据更新方法,应用于由客户端、主节点和子节点构成的系统中,所述主节点配置有消息模块、共识模块、DNS更新模块和DNS服务模块;所述方法包括:
[0007]所述消息模块将来自所述客户端发送的至少一个数据更新请求存入原始消息队列;
[0008]所述消息模块将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列;其中,所述滑动窗口队列中,所有所述待更新请求按照其时间戳对应的序列号进行排列;
[0009]所述共识模块根据所述序列号依次将所述滑动窗口队列中的所述待更新请求发送至系统中的各个所述子节点,以获取各个所述子节点反馈的与所述待更新请求对应的第一确认消息;
[0010]当所述待更新请求对应的所述第一确认消息的数量超过预设阈值时,所述共识模块生成所述待更新请求对应的第二确认消息,并将所述第二确认消息发送至各个所述子节点;
[0011]所述共识模块根据所述序列号,将生成所述第二确认消息的所述待更新请求按所述序列号的顺序依次写入日志;所述日志中,所述待更新请求按所述序列号的大小排列;
[0012]所述DNS更新模块从所述日志中获取所述序列号最小的所述待更新请求,并发送所述待更新请求至所述DNS服务模块;
[0013]所述DNS服务模块获取所述待更新请求对应的更新处理结果,并将所述更新处理结果反馈至所述待更新请求对应的所述客户端。
[0014]在一种实现方式中,所述消息模块获取所述数据更新请求的步骤包括:
[0015]所述消息模块接收客户端发送的所述数据更新请求,和/或,所述消息模块接收子节点发送的来自客户端的所述数据更新请求。
[0016]在一种实现方式中,所述消息模块将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列,包括:
[0017]所述消息模块从所述原始消息队列中获取多条所述数据更新请求,将多条所述数据更新请求按照不同的DNS区分别进行合并,生成多个集合;单个集合中的数据更新请求的DNS区相同;
[0018]将每个所述集合分别生成一条所述待更新请求。
[0019]在一种实现方式中,所述共识模块根据所述序列号依次将所述滑动窗口队列中的所述待更新请求发送至系统中的各个所述子节点的步骤包括:
[0020]所述共识模块将所述滑动窗口队列中位于滑动窗口内的所述待更新请求依次发送至系统中的各个所述子节点中的接收窗口;所述滑动窗口用于容纳预设数量的所述待更新请求,所述预设数量对应于子节点中所述接收窗口接收所述待更新请求的最大个数。
[0021]在一种实现方式中,所述预设数量的确定方法包括:
[0022]所述共识模块获取系统内所有所述子节点发送的接收窗口信息;所述接收窗口信息为对应所述子节点接收所述待更新请求的最大个数;
[0023]所述共识模块根据所述接收窗口信息,将所有所述接收窗口信息按照数值的大小递增排序,得到数值队列;
[0024]所述共识模块将所述数值队列的中位数确定为所述预设数量。
[0025]在一种实现方式中,所述根据所述序列号,将生成第二确认消息的待更新请求所述按序列号的顺序依次写入日志的步骤包括:
[0026]将所述滑动窗口队列中与所述第二确认消息对应的所述待更新请求设置为确认状态;
[0027]遍历所述滑动窗口队列,判断序列号在所述待更新请求之前的所有待更新请求是否均为确认状态;
[0028]若是,将设置为确认状态的所述待更新请求写入所述日志;
[0029]将写入所述日志的所述待更新请求移除所述滑动窗口。
[0030]在一种实现方式中,将写入所述日志的所述待更新请求移除滑动窗口之后,所述方法还包括:
[0031]判断所述滑动窗口内的待更新请求的数量是否小于预设数量;
[0032]若是,将位于所述滑动窗口外且靠近所述滑动窗口的第一数量的所述待更新请求加入所述滑动窗口;所述第一数量为预设数量与滑动窗口内的待更新请求的数量的差值。
[0033]第二方面,本申请提供了一种基于改进RAFT的数据更新系统,包括:消息模块、共识模块、DNS更新模块和DNS服务模块;
[0034]所述消息模块被配置为:将来自客户端发送的至少一个数据更新请求存入原始消息队列,其中,将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列;
[0035]所述共识模块被配置为:根据所述序列号依次将所述滑动窗口队列中的所述待更新请求发送至系统中的各个所述子节点,以获取各个所述子节点反馈的与所述待更新请求对应的第一确认消息,当所述待更新请求对应的所述第一确认消息的数量超过预设阈值时,所述共识模块生成所述待更新请求对应的第二确认消息,并将所述第本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于改进RAFT的数据更新方法,应用于由客户端、主节点和子节点构成的系统中,所述主节点配置有消息模块、共识模块、DNS更新模块和DNS服务模块;其特征在于,所述方法包括:所述消息模块将来自所述客户端发送的至少一个数据更新请求存入原始消息队列;所述消息模块将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列;其中,所述滑动窗口队列中,所有所述待更新请求按照其时间戳对应的序列号进行排列;所述共识模块根据所述序列号依次将所述滑动窗口队列中的所述待更新请求发送至系统中的各个所述子节点,以获取各个所述子节点反馈的与所述待更新请求对应的第一确认消息;当所述待更新请求对应的所述第一确认消息的数量超过预设阈值时,所述共识模块生成所述待更新请求对应的第二确认消息,并将所述第二确认消息发送至各个所述子节点;所述共识模块根据所述序列号,将生成所述第二确认消息的所述待更新请求按所述序列号的顺序依次写入日志;所述日志中,所述待更新请求按所述序列号的大小排列;所述DNS更新模块从所述日志中获取所述序列号最小的所述待更新请求,并发送所述待更新请求至所述DNS服务模块;所述DNS服务模块获取所述待更新请求对应的更新处理结果,并将所述更新处理结果反馈至所述待更新请求对应的所述客户端。2.根据权利要求1所述的一种基于改进RAFT的数据更新方法,其特征在于,所述消息模块获取所述数据更新请求的步骤包括:所述消息模块接收客户端发送的所述数据更新请求,和/或,所述消息模块接收子节点发送的来自客户端的所述数据更新请求。3.根据权利要求1所述的一种基于改进RAFT的数据更新方法,其特征在于,所述消息模块将所述原始消息队列中的至少一个所述数据更新请求合并,得到待更新请求并存入滑动窗口队列,包括:所述消息模块从所述原始消息队列中获取多条所述数据更新请求,将多条所述数据更新请求按照不同的DNS区分别进行合并,生成多个集合;单个集合中的数据更新请求的DNS区相同;将每个所述集合分别生成一条所述待更新请求。4.根据权利要求1所述的一种基于改进RAFT的数据更新方法,其特征在于,所述共识模块根据所述序列号依次将所述滑动窗口队列中的所述待更新请求发送至系统中的各个所述子节点的步骤包括:所述共识模块将所述滑动窗口队列中位于滑动窗口内的所述待更新请求依次发送至系统中的各个所述子节点中的接收窗口;所述滑动窗口用于容纳预设数量的所述待更新请求,所述预设数量对应于子节点中所述接收窗口接收所述待更新...

【专利技术属性】
技术研发人员:左鹏贺智谋张海阔杨卫平左拔山
申请(专利权)人:中国互联网络信息中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1