分区日志队列同步管理方法及设备的制作方法

文档序号:6506756阅读:131来源:国知局
分区日志队列同步管理方法及设备的制作方法
【专利摘要】本发明实施例提供一种分区日志队列同步管理方法及设备。该方法包括主节点接收客户端发送的日志记录写入请求消息,主节点根据主日志分区区间的写入标志位,确定主日志分区区间为可写主日志分区区间,并将客户端触发的日志记录写入可写主日志分区区间对应的主日志队列;主节点向备节点发送日志记录同步请求消息,以使备节点根据可写主日志分区区间确定备节点对应的可写备日志分区区间,并将日志记录写入可写备日志分区区间对应的备日志队列。本实施例提供的分区日志队列同步管理方法及设备,在日志分区区间发生变化时,可以保证主备节点数据一致性。
【专利说明】分区日志队列同步管理方法及设备

【技术领域】
[0001]本发明实施例涉及通信技术,尤其涉及一种分区日志队列同步管理方法及设备。

【背景技术】
[0002]分布式数据库系统由若干个节点集合而成。每个节点负责分布式数据库中的部分数据,从而使分布式数据库系统能够处理海量业务数据,有效解决了集中式数据库可扩充性差的问题。
[0003]当分布式数据库系统采用日志记录进行数据同步时,当日志记录写入的方式为异步,即主节点将日志记录写入主日志队列,备节点将日志记录写入对应的备日志队列后,备节点就返回日志记录写入成功,主节点将主日志队列中的日志记录写入内存后,就向客户端返回写成功。主节点定期向备节点发送写入请求,备节点将备日志队列中的日志记录写入内存。这种异步提交的方法相对于同步提交在很大程度上能提供系统的吞吐量。
[0004]然而,当日志分区区间发生切分或合并变化,并产生新日志分区区间时,如果备日志队列中的日志记录没有写入内存,就将备日志队列删除重建新主备日志队列,会导致主节点和备节点的数据不一致;如果等备日志队列中的日记记录写入内存后,再删除该备日志队列创建新主备日志队列的话,会导致在这一段时间中对于新日志分区区间不可用;既要保证新日志分区区间可用,又要保证主备节点之间的数据一致,可以保留旧日志分区区间对应的日志队列并同时为新日志分区区间创建新的日志队列。但在这种情况下,当有新的日志记录写入时,不管是在主节点上还是备节点上都有可能将部分记录写入新日志分区区间,部分记录写入旧日志分区区间,从而导致主节点和备节点日志记录的不对应,使日志记录进行异步提交的时候产生混乱。


【发明内容】

[0005]本发明实施例提供一种分区日志队列同步管理方法及设备,以保证在分布式系统在区间发生变化时,日志分区区间的可用性和主备节点数据的一致性。
[0006]第一方面,本发明实施例提供一种分区日志队列同步管理方法,包括:
[0007]主节点接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录;
[0008]所述主节点根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;
[0009]所述主节点向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0010]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0011]结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
[0012]所述主节点接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0013]所述主节点根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位。
[0014]结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述主节点根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位,包括:
[0015]所述主节点确定路由条目中的路由日志分区区间归属所述主节点;
[0016]所述主节点确定所述路由日志分区区间与本地可写日志分区区间是否存在交集;
[0017]若是,则所述主节点将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列;
[0018]若否,则将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
[0019]结合第一方面,第一方面的第一种、第二种任一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述主节点根据主日志分区区间的写入标志位判断所述主日志分区区间可写之前,还包括:
[0020]所述主节点接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化;
[0021]所述主节点根据所述日志分区区间变化信息确定所述主日志分区区间;
[0022]其中,所述主日志分区区间为切分或合并后新的主日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为切分或合并前原始主日志分区区间时,所述主日志分区区间的写入标志位为不可写。
[0023]结合第一方面,第一方面的第一种至第三种任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述主节点向备节点发送日志记录同步请求消息之后,还包括:
[0024]所述主节点接收所述备节点发送的日志记录同步响应消息,确定所述备节点将所述日志记录写入备日志队列;
[0025]所述主节点将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存。
[0026]结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述主节点将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存之后,还包括:
[0027]所述主节点向所述备节点发送写入请求消息,以使所述备节点将备日志缓冲队列中的日志记录写入所述备节点对应的提交日志缓冲队列和内存。
[0028]结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述主节点向所述备节点发送写入请求消息之后,还包括:
[0029]所述主节点接收所述备节点发送的日志记录缺失消息;
[0030]所述主节点向所述备节点发送日志记录缺失响应消息。
[0031]结合第一方面,第一方面的第一种至第六种任一种可能的实现方式,在第一方面的第七种可能的实现方式中,所述方法还包括:
[0032]所述主节点确定所述主日志分区区间对应的主日志队列中的日志记录是否为空;
[0033]若否,则主节点删除满足预设条件的日志记录;
[0034]若是,则主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述主日志分区区间。
[0035]第二方面,本发明实施例提供一种分区日志队列同步管理方法,包括:
[0036]备节点接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的;
[0037]所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0038]所述备节点向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存;
[0039]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0040]结合第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:
[0041]所述备节点接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0042]所述备节点根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。
[0043]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述备节点根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理,包括:
[0044]所述备节点确定路由条目中的路由日志分区区间归属所述备节点;
[0045]所述备节点确定所述路由条目与本地路由条目不同;
[0046]所述备节点确定所述路由日志分区区间与本地备日志分区区间不同;
[0047]所述备节点增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
[0048]结合第二方面,第二方面的第一种、第二种任一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述备节点向所述主节点发送日志同步响应消息之后,还包括:
[0049]所述备节点接收所述主节点发送的写入请求消息;
[0050]所述备节点将所述备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存。
[0051]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述备节点将所述备日志队列中的日志记录写入提交日志缓冲队列和内存之前,还包括:
[0052]所述备节点向所述主节点发送日志记录缺失消息;
[0053]所述备节点接收所述主节点发送的日志记录缺失响应消息。
[0054]结合第二方面,第二方面的第一种至第四种任一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述方法还包括:
[0055]所述备节点确定所述备日志分区区间对应的备日志队列中的日志记录是否为空;
[0056]若否,则备节点删除满足预设条件的日志记录;
[0057]若是,则备节点确定所述备日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述备日志分区区间。
[0058]第三方面,本发明实施例提供一种主节点,包括:
[0059]第一接收模块,用于接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录;
[0060]第一写入模块,用于根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;
[0061]第一发送模块,用于向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0062]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0063]结合第三方面,在第三方面的第一种可能的实现方式中,还包括:
[0064]第二接收模块,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0065]标志位确定模块,用于根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位。
[0066]结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述标志位确定模块具体用于:
[0067]确定路由条目中的路由日志分区区间归属所述主节点;
[0068]确定所述路由日志分区区间与本地可写日志分区区间是否存在交集;
[0069]若是,则将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列;
[0070]若否,则将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
[0071]结合第三方面,第三方面的第一种、第二种任一种可能的实现方式,在第三方面的第三种可能的实现方式中,还包括:区间确定模块,用于在根据主日志分区区间的写入标志位判断所述主日志分区区间可写之前,
[0072]接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化;
[0073]根据所述日志分区区间变化信息确定所述主日志分区区间;
[0074]其中,所述主日志分区区间为切分或合并后新的主日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为切分或合并前原始主日志分区区间时,所述主日志分区区间的写入标志位为不可写。
[0075]结合第三方面,第三方面的第一种至第三种任一种可能的实现方式,在第三方面的第四种可能的实现方式中,还包括:第二写入模块,用于向备节点发送日志记录同步请求消息之后,
[0076]接收所述备节点发送的日志记录同步响应消息,确定所述备节点将所述日志记录写入备日志队列;
[0077]将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存。
[0078]结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,还包括:第二发送模块,用于将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存之后,向所述备节点发送写入请求消息,以使所述备节点将备日志缓冲队列中的日志记录写入所述备节点对应的提交日志缓冲队列和内存。
[0079]结合第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,还包括:处理模块,用于向所述备节点发送写入请求消息之后,
[0080]接收所述备节点发送的日志记录缺失消息;
[0081]向所述备节点发送日志记录缺失响应消息。
[0082]结合第三方面,第三方面的第一种至第六种任一种可能的实现方式,在第三方面的第七种可能的实现方式中,还包括:
[0083]删除模块,用于确定所述主日志分区区间对应的主日志队列中的日志记录是否为空;
[0084]若否,则主节点删除满足预设条件的日志记录;
[0085]若是,则主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述主日志分区区间。
[0086]第四方面,本发明实施例提供一种备节点,包括:
[0087]第一接收模块,用于接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的;
[0088]第一写入模块,用于根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0089]第一发送模块,用于向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存;
[0090]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0091]结合第四方面,在第四方面的第一种可能的实现方式中,还包括:
[0092]第二接收模块,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0093]管理模块,用于根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。
[0094]结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述管理模块具体用于:
[0095]确定路由条目中的路由日志分区区间归属所述备节点;
[0096]确定所述路由条目与本地路由条目不同;
[0097]确定所述路由日志分区区间与本地备日志分区区间不同;
[0098]增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
[0099]结合第四方面,第四方面的第一种、第二种任一种可能的实现方式,在第四方面的第三种可能的实现方式中,还包括:
[0100]第二写入模块,用于向所述主节点发送日志同步响应消息之后,
[0101]接收所述主节点发送的写入请求消息;
[0102]将所述备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存。
[0103]结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,还包括:
[0104]处理模块,用于将所述备日志队列中的日志记录写入提交日志缓冲队列和内存之
N /.刖,
[0105]向所述主节点发送日志记录缺失消息;
[0106]接收所述主节点发送的日志记录缺失响应消息。
[0107]结合第四方面,第四方面的第一种至第四种任一种可能的实现方式,在第四方面的第五种可能的实现方式中,还包括:删除模块,用于确定所述备日志分区区间对应的备日志队列中的日志记录是否为空;
[0108]若否,则备节点删除满足预设条件的日志记录;
[0109]若是,则备节点确定所述备日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述备日志分区区间。
[0110]本发明实施例提供的分区日志队列同步管理方法及设备,该主节点通过接收客户端发送的日志记录写入请求消息,所述主节点根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;所述主节点向备节点发送日志记录同步请求消息,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列,主备节点之间写入相同的日志分区区间,避免了主节点和备节点数据的不一致。

【专利附图】

【附图说明】
[0111]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0112]图1为本发明分区日志队列同步管理方法实施例一的流程示意图;
[0113]图2为本发明实施例分布式数据库集群结构示意图;
[0114]图3为本发明实施例主日志分区区间切分示意图;
[0115]图4为主日志分区对应的主日志队列的存储格式示意图;
[0116]图5为本发明实施例同步数据格式示意图;
[0117]图6为本发明实施例日志队列更新流程实施例一的示意图;
[0118]图7为本发明分区日志队列同步管理方法实施例二的流程示意图;
[0119]图8为备日志分区对应的备日志队列的存储格式;
[0120]图9为本发明实施例日志队列更新流程实施例二的示意图;
[0121]图10为本发明实施例主节点与备节点同步流程实施例一的示意图;
[0122]图11为本发明实施例主节点与备节点同步流程实施例二的示意图;
[0123]图12为本发明实施例日志分区区间与日志队列的对应关系示意图;
[0124]图13为本发明实施例主节点删除日志分区区间的流程示意图;
[0125]图14为本发明实施例备节点删除日志分区区间的流程示意图;
[0126]图15为本发明主节点实施例一的结构示意图;
[0127]图16为本发明主节点实施例二的结构示意图;
[0128]图17为本发明备节点实施例一的结构示意图;
[0129]图18为本发明备节点实施例二的结构示意图。

【具体实施方式】
[0130]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0131]图1为本发明分区日志队列同步管理方法实施例一的流程示意图,本实施例的执行主体为主节点,该主节点可以通过软件和/或硬件实现。如图1所示,本实施例的方法可以包括:
[0132]步骤101、主节点接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录;
[0133]步骤102、所述主节点根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;
[0134]步骤103、所述主节点向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间。
[0135]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间
[0136]所述主日志分区区间为变化后新的日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为变化前旧的日志分区区间时,所述主日志分区区间的写入标志位为不可写。
[0137]本实施例提供的分区日志队列管理方法,可以应用到分布式数据库集群中。其中,图2为本发明实施例分布式数据库集群结构示意图。如图2所示,分布式数据库集群是由一个管理(manager)节点和若干个簇(cluster)节点构成。其中,簇节点是主节点(master)和备节点(slave)的统称。每个主节点包括两个及以上的备节点。管理节点通过定期检查簇节点发送的心跳来维护簇节点的状态和向簇节点推送最新的路由表等。本领域技术人员可以理解,在具体实现过程中,属于簇节点的节点,其即可以作为主节点、也可以作为备节点,对应地,属于簇节点的节点,均存在主日志分区区间和/或备日志分区区间,每一个分区区间对应一个日志队列,其中日志队列用来存储分区区间的数据行。本实施例为了便于说明,对归属于簇节点的节点的主备进行了限制。
[0138]本实施例提供的分区日志队列管理方法,主要用于主节点对应的主日志分区区间发生变化时,分区日志队列的管理方法。当新主节点加入时,将导致主日志分区区间的变化,本实施例所涉及的新主节点加入,包括对原主日志分区区间的合并与切分。其中,主日志分区区间发生变化的具体实现过程为:
[0139]所述主节点接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化;
[0140]所述主节点根据所述日志分区区间变化信息确定所述主日志分区区间。
[0141]在具体实现过程中,以主日志分区区间的切分为例,进行详细说明,其中,主节点包括新主节点和旧主节点。当新主节点加入时,该新主节点直接向管理节点发送加入请求,管理节点遍历路由表,进行日志分区的负载统计,然后管理节点根据各日志分区的负载,对现有的主日志分区区间进行切分,具体如图3所示,管理节点然后向旧主节点发送日志分区区间变化信息,该日志分区区间变化信息包括主日志分区区间的切分信息。旧主节点根据切分信息,创建新的日志队列,将旧的日志分区队列置为不可写。然后新主节点在本节点创建对应的日志队列,并从对应的旧主节点上请求属于该新主节点对应的主日志分区区间的数据。在数据传送的过程中,如果有新的属于新节点日志分区区间的日记记录写入则新日志记录会写入旧主节点新的日志队列,并同步给新节点写于新节点对应的日志队列。待所有数据都接收完成后,旧主节点和新主节点依次更新路由表。其中新主节点以负责这段主日志分区区间的主节点身份加入。
[0142]图3为本发明实施例主日志分区区间切分示意图。如图3所示,分布式数据库有六个主节点,该六个主节点对应的主日志分区区间分别为[0,100]、[101,200]、[201,300]、[301,400]、[401,500]和[501,900]。当有新主节点加入时,管理节点根据各日志分区的负载,将主日志分区区间[501,900]切分为[501,750]和[751,900]两个主日志分区区间,并将主日志分区区间[751,900]分给新节点。旧主节点收到管理节点的通知后,在本地将[501,900]置为不可写,并创建两个新的日志队列[501,750]和[751,900]置为可写;新主节点则在本地创建新的备日志队列[751,900]。在主节点向备节点传送数据的过程中,如果有新的数据属于[751,900]写入,则旧主节点会将数据写入对应的可写区间[751,900],并同步给新主节点,新主节点将数据写入备日志队列[751,900]。待数据传送完成后,旧主节点将区间[751,900]置为不可写,并触发该段区间的提交请求。新主节点将备区间[751,900]的记录都写入内存后,旧主节点和新主节点依次更新路由表,并根据路由表更新各自的主日志分区区间和备日志分区区间。
[0143]在步骤101中,主节点接收客户端发送的日志记录写入请求消息,日志记录写入请求包括客户端触发的日志记录。其中,日志记录包括数据库操作过程中的插入、更新和删除等过程。
[0144]在步骤102中,主节点根据主节点对应的主日志分区区间的写入标志位,判断客户端触发的日志记录可以写入主日志分区区间对应的主日志队列。在具体实现过程中,当主日志分区区间为变化后新的日志分区区间时,写入标志位为可写,当主日志分区区间为变化前旧的日志分区区间时,主日志分区区间的写入标志位为不可写。可选地,写入标志位O代表可写,写入标志位I代表不可写。
[0145]在本实施例中,主日志分区区间和日志队列具有对应关系。图4为主日志分区对应的主日志队列的存储格式示意图。一段主日志分区区间对应一个日志队列,0/1代表写标志,O代表可写,I代表不可写。
[0146]本领域技术人员可以理解,步骤101和步骤102中,主节点即可以为新主节点,也可以为旧主节点。主节点根据判断结果将客户端触发的日志记录写入主日志分区区间对应的日志队列。本领域技术人员可以理解,新旧主节点仅为人为划分,对于主节点本机而言,并没有区别。
[0147]在步骤103中,主节点将日志记录写入主日志队列之后,向备节点发送日志记录同步请求消息,日志记录同步请求消息中包括客户端触发的日志记录以及可写主日志分区区间,其中,主节点发送给备节点的同步数据格式如图5所示(图5为本发明实施例同步数据格式示意图),然后,备节点根据可写主日志分区区间确定备节点对应的可写备日志分区区间,并将日志记录写入可写备日志分区区间对应的备日志队列。本领域技术人员可以理解,可写主日志分区区间与可写备日志分区区间对应的可写日志分区区间相同。
[0148]本实施例提供的分区日志队列管理方法,主节点通过接收客户端发送的日志记录写入请求消息,所述主节点根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;所述主节点向备节点发送日志记录同步请求消息,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列,主备节点之间写入相同的日志分区区间,避免了主节点和备节点数据的不一致。
[0149]在图1实施例的基础上,当管理节点通过心跳检查发现主节点的路由表不是最新的,会将最新的路由表推送到该主节点上。主节点则接收管理节点发送的路由表更新请求消息,所述路由表更新请求消息包括路由表,主节点根据路由表中的路由条目确定主节点对应的主日志分区区间的写入标志位。
[0150]本领域技术人员可以理解,当主日志分区区间发生变化时,必然导致路由表中的路由条目发生变化。其中,路由条目包括主节点的主日志分区区间与备节点的日志分区区间。主节点根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位可如图6所示。图6为本发明实施例日志队列更新流程实施例一的示意图。
[0151]步骤601、主节点获取路由表中的路由条目;
[0152]主节点通过遍历的方式获取路由表中的每一个路由条目。
[0153]步骤602、所述主节点确定路由条目中的路由日志分区区间是否归属所述主节点,若是,执行步骤603,若否,执行步骤601 ;
[0154]本领域技术人员可以理解,路由条目中包括节点标识和对应的路由日志分区区间,主节点根据节点标识确定该路由日志分区区间是否归属于该主节点,若是,执行步骤603,若否,执行步骤601。
[0155]步骤603、所述主节点确定所述路由日志分区区间与本地可写日志分区区间是否存在交集,若是,执行步骤604,若否,执行步骤605 ;
[0156]当路由日志分区区间与本地可写日志分区区间存在交集时,说明对主日志分区区间进行了切分或合并。
[0157]步骤604、所述主节点将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列;
[0158]步骤605、将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
[0159]本实施例通过根据更新的路由条目,对主节点对应的主日志分区区间的写入标志位进行了更新,避免了日志记录可能写入主日志分区区间或本地可写日志分区区间,导致了日志记录的不一致的问题,新的日志记录将写入路由日志分区区间对应的主日志分区区间。
[0160]图7为本发明分区日志队列同步管理方法实施例二的流程示意图,本实施例的执行主体为备节点,该备节点可以通过软件和/或硬件实现。如图7所示,本实施例的方法可以包括:
[0161]步骤701、备节点接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的。
[0162]本实施例提供的应用场景与图1所示实施例的应用场景类似,该备节点可以对主节点的数据进行备份。其中,可写日志分区区间为主节点根据写入标志位确定的可写主日志分区区间,由于备节点对主节点进行备份,可写主日志分区区间与可写备日志分区区间对应相同的可写日志分区区间,即可写主日志分区区间与可写备日志分区区间一致。
[0163]步骤702、所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0164]由于可写主日志分区区间与可写备日志分区区间对应相同的可写日志分区区间,因此,备节点根据可写主日志分区区间确定备节点对应的可写备日志分区区间,并将日志记录写入可写备日志分区区间对应的备日志队列。
[0165]在日志记录写入过程中,日志记录先写入主节点对应的日志队列,后写入备节点对应的日志队列,因此,备日志分区区间对应的日志队列存储格式,可以不包含写标识位,具体如图8所示。图8为备日志分区对应的备日志队列的存储格式。
[0166]步骤703、所述备节点向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存。
[0167]当备节点将日志记录写入备日志队列之后,向主节点发送日志同步响应消息,以使主节点将主日志队列中的日志记录写入主节点对应的提交日志缓冲队列和内存。
[0168]本发明实施例提供的分区日志队列同步管理方法,备节点通过接收主节点发送的日志记录同步请求消息,所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;所述备节点向所述主节点发送日志同步响应消息,主备节点之间写入相同的日志分区区间,避免了主节点和备节点数据的不一致。
[0169]在图7实施例的基础上,当管理节点通过心跳检查发现备节点的路由表不是最新的,会将最新的路由表推送到该备节点上。所述备节点接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;所述备节点根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。备节点根据所述路由表中的路由条目确定所述备节点对应的备日志分区区间如图9所示。
[0170]图9为本发明实施例日志队列更新流程实施例二的示意图,包括以下步骤:
[0171]步骤901、备节点获取路由表中的路由条目;
[0172]备节点通过遍历的方式获取路由条目。
[0173]步骤902、所述备节点确定路由条目中的路由日志分区区间是否归属所述备节点,若是,执行步骤903,若否,执行步骤901 ;
[0174]本领域技术人员可以理解,路由条目中包括节点标识和对应的路由日志分区区间,备节点根据节点标识确定该路由日志分区区间是否归属于备节点,若是,执行步骤903,若否,执行步骤901。
[0175]步骤903、所述备节点确定所述路由条目是否与本地路由条目不同,若是,执行步骤904,若否,执行步骤901 ;
[0176]备节点上存储的路由条目与管理节点推送的路由条目不同。
[0177]步骤904、所述备节点确定所述路由日志分区区间与本地备日志分区区间是否不同,若是,执行步骤905,若否,执行步骤901 ;
[0178]步骤905、所述备节点增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
[0179]本实施例通过根据更新的路由条目,增加了新的备日志分区区间,保证了备日志分区区间的正确性。
[0180]图10为本发明实施例主节点与备节点同步流程实施例一的示意图。本实施例在上述实施例的基础上,对主节点和备节点的同步流程进行详细说明。本实施例的同步过程为异步同步过程,图10所示为同步第一阶段流程示意图,如图10所示,包括以下步骤:
[0181]步骤1001、主节点接收客户端发送的日志记录写入请求消息;
[0182]步骤1002、主节点确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;
[0183]步骤1003、主节点向备节点发送日志记录同步请求消息;
[0184]步骤1004、备节点接收主节点发送的日志记录同步请求消息;
[0185]步骤1005、备节点将日志记录写入备日志分区区间对应的备日志队列;
[0186]步骤1006、备节点向主节点发送日志同步响应消息;
[0187]步骤1007、主节点确定是否接收备节点发送的日志记录同步响应消息;若否,执行步骤1008,若是,执行步骤1009。
[0188]本领域技术人员可以理解,如果在预设时间内,主节点没有接收到备节点发送的日志记录同步请求消息,主节点会把这条日志记录和没成功的那个备节点的信息发送到别的节点上进行备份,以供数据恢复时使用。
[0189]步骤1008、主节点向其它备节点发送日志记录同步请求消息;
[0190]步骤1009、主节点将主日志队列中的日志记录写入主节点对应的提交日志缓冲队列和内存。
[0191]在第一同步阶段中,主节点将主日志队列中的日志记录写入提交日志缓冲队列和内存中,备节点将日志记录写入备日志队列中,备节点还未将备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存中。在同步第二阶段流程中,备节点将被日志队列写入提交日志缓冲队列和内存中。具体如图11所示,图11为本发明实施例主节点与备节点同步流程实施例二的示意图,主要包括以下步骤:
[0192]步骤1101、主节点向备节点发送写入请求消息;
[0193]主节点定时向备节点发送写入请求消息。
[0194]步骤1102、备节点接收主节点发送的写入请求消息;
[0195]步骤1103、备节点判断日志记录是否有缺失,若否,执行步骤1108,若是,执行步骤 1104 ;
[0196]具体实现过程中,备节点根据日志记录的日志序列号,判断日志记录是否有缺失,当日志序列号不连续时,备节点确定日志记录有缺失,执行步骤1104。当日志序列号连续时,备节点确定日志记录没有缺失,执行步骤1108。本领域技术人员可以理解,当备节点确定日志记录不缺失时,主节点所执行的步骤到此结束。
[0197]步骤1104、备节点向主节点发送日志记录缺失消息;
[0198]本领域技术人员可以理解,日志记录缺失消息中可以携带缺失的日志序列号。
[0199]步骤1105、主节点接收备节点发送的日志记录缺失消息;
[0200]步骤1106、主节点向备节点发送日志记录缺失响应消息;
[0201]当备节点确定日志记录缺失时,主节点还会接收备节点发送的日志记录缺失消息,并向备节点发送日志记录缺失响应消息,该日志记录缺失响应消息中可以携带备节点缺失的日志记录。
[0202]步骤1107、备节点接收主节点发送的日志记录缺失响应消息,并将缺失日志记录写入备日志队列中;
[0203]步骤1108、备节点将备日志队列中的日志记录写入提交日志缓冲队列和内存。
[0204]当备节点接收到日志记录缺失响应消息之后,将缺失的日志记录和备日志队列中的日志记录写入提交日志缓存队列和内存。
[0205]本实施例提供的方法,通过同步第一阶段流程和同步第二阶段流程,完成了主节点和备节点的数据同步过程。特别地,图12为本发明实施例日志分区区间与日志队列的对应关系示意图。如图12所示,Rl?R3是日志分区区间的值,LI?L5...'LI,?L5,...和LI’’?L5’’分别为对应日志队列中的日志记录。L1、L1’及LI’’分别为日志队列的头,有新数据时,从相应日志队列的尾部写入。由于主日志分区区间与备日志分区区间对应相同的日志分区区间,因此,本实施例提供的日志分区区间与日志队列的对应关系既适合主日志分区区间,也适合备日志分区区间。
[0206]本领域技术人员可以理解,当备节点将旧区间的日志记录均写入提交日志缓冲队列和内存之后,需要删除旧的主日志分区区间和备日志分区区间。
[0207]图13为本发明实施例主节点删除日志分区区间的流程示意图。如图13所示,对于主节点,主节点删除旧的主日志分区区间。具体过程如下:
[0208]步骤1301、主节点确定所述主日志分区区间对应的主日志队列中的日志记录是否为空,若否,执行步骤1302,若是,执行步骤1303 ;
[0209]步骤1302、主节点删除满足预设条件的日志记录;
[0210]步骤1303、主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若否,执行步骤1304,若是,执行步骤1305 ;
[0211]步骤1304、主节点删除所述主日志分区区间;
[0212]步骤1305、主节点等待下一删除周期。
[0213]在具体实现过程中,当日志记录不为空时,不能删除所有的日志记录,仅删除满足预设条件的日志记录,其中,满足预设条件的日志记录具体为比上次写入提交日志缓冲队列和内存的日志序列号小的日志记录。当日志记录为空时,主节点确定日志分区区间是否存在与路由表的路由条目中,若不存在,删除该主日志分区区间,若存在,等待下次删除过程。
[0214]图14为本发明实施例备节点删除日志分区区间的流程示意图。如图14所示,对于备节点,备节点删除旧的备日志分区区间。具体过程如下:
[0215]步骤1401、备节点确定所述备日志分区区间对应的备日志队列中的日志记录是否为空,若否,执行步骤1402,若是,执行步骤1403 ;
[0216]步骤1402、备节点删除满足预设条件的日志记录;
[0217]步骤1403、备节点确定所述备日志分区区间是否存在与所述路由表的路由条目中,若否,执行步骤1404,若是,执行步骤1405 ;
[0218]步骤1404、备节点删除所述备日志分区区间;
[0219]步骤1405、备节点等待下一删除周期。
[0220]在具体实现过程中,当日志记录不为空时,不能删除所有的日志记录,仅删除满足预设条件的日志记录,其中,满足预设条件的日志记录具体为比上次写入提交日志缓冲队列和内存的日志序列号小的日志记录。当日志记录为空时,备节点确定日志分区区间是否存在与路由表的路由条目中,若不存在,删除该备日志分区区间,若存在,等待下次删除过程。
[0221]本实施提供的分区日志队列管理方法,当备节点将旧区间的日志记录均写入提交日志缓冲队列和内存之后,删除旧的主日志分区区间和备日志分区区间,保证了日志记录的完整性,并提高了系统资源利用率。
[0222]图15为本发明主节点实施例一的结构示意图。如图15所示,主节点150包括第一接收模块1501、第一写入模块1502和第一发送模块1503。
[0223]其中,第一接收模块1501,用于接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录;
[0224]第一写入模块1502,用于根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列;
[0225]第一发送模块1503,用于向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0226]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0227]本发明实施例提供的主节点,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0228]图16为本发明主节点实施例二的结构示意图。如图16所示,本发明实施例在图15实施例的基础上,还包括:
[0229]第二接收模块1504,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0230]标志位确定模块1505,用于根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位。
[0231]可选地,所述标志位确定模块1505具体用于:
[0232]确定路由条目中的路由日志分区区间归属所述主节点;
[0233]确定所述路由日志分区区间与本地可写日志分区区间是否存在交集;
[0234]若是,则将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列;
[0235]若否,则将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
[0236]可选地,还包括:区间确定模块1506,用于在根据主日志分区区间的写入标志位判断所述主日志分区区间可写之前,
[0237]接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化;
[0238]根据所述日志分区区间变化信息确定所述主日志分区区间;
[0239]其中,所述主日志分区区间为切分或合并后新的主日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为切分或合并前原始主日志分区区间时,所述主日志分区区间的写入标志位为不可写。
[0240]可选地,还包括:第二写入模块1507,用于向备节点发送日志记录同步请求消息之后,
[0241]接收所述备节点发送的日志记录同步响应消息,确定所述备节点将所述日志记录写入备日志队列;
[0242]将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存。
[0243]可选地,还包括:第二发送模块1508,用于将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存之后,向所述备节点发送写入请求消息,以使所述备节点将备日志缓冲队列中的日志记录写入所述备节点对应的提交日志缓冲队列和内存。
[0244]可选地,还包括:处理模块1509,用于向所述备节点发送写入请求消息之后,
[0245]接收所述备节点发送的日志记录缺失消息;
[0246]向所述备节点发送日志记录缺失响应消息。
[0247]可选地,还包括:删除模块1510,用于确定所述主日志分区区间对应的主日志队列中的日志记录是否为空;
[0248]若否,则主节点删除满足预设条件的日志记录;
[0249]若是,则主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述主日志分区区间。
[0250]本发明实施例提供的主节点,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0251]图17为本发明备节点实施例一的结构示意图。如图17所示,本发明实施例提供的备节点170包括:第一接收模块1701、第一写入模块1702和第一发送模块1703。
[0252]其中,第一接收模块1701,用于接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的;
[0253]第一写入模块1702,用于根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列;
[0254]第一发送模块1703,用于向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存;
[0255]其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
[0256]本发明实施例提供的备节点,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0257]图18为本发明备节点实施例二的结构示意图。如图18所示,本发明实施例在图17实施例的基础上,还包括:
[0258]第二接收模块1704,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表;
[0259]管理模块1705,用于根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。
[0260]可选地,所述管理模块1705具体用于:
[0261]确定路由条目中的路由日志分区区间归属所述备节点;
[0262]确定所述路由条目与本地路由条目不同;
[0263]确定所述路由日志分区区间与本地备日志分区区间不同;
[0264]增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
[0265]可选地,还包括:第二写入模块1706,用于向所述主节点发送日志同步响应消息之后,
[0266]接收所述主节点发送的写入请求消息;
[0267]将所述备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存。
[0268]可选地,还包括:处理模块1707,用于将所述备日志队列中的日志记录写入提交日志缓冲队列和内存之前,
[0269]向所述主节点发送日志记录缺失消息;
[0270]接收所述主节点发送的日志记录缺失响应消息。
[0271]可选地,还包括:删除模块1708,用于确定所述备日志分区区间对应的备日志队列中的日志记录是否为空;
[0272]若否,则备节点删除满足预设条件的日志记录;
[0273]若是,则备节点确定所述备日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述备日志分区区间。
[0274]本发明实施例提供的备节点,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0275]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0276]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种分区日志队列同步管理方法,其特征在于,包括: 主节点接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录; 所述主节点根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列; 所述主节点向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列; 其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述主节点接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表; 所述主节点根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的与入标志位。
3.根据权利要求2所述的方法,其特征在于,所述主节点根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位,包括: 所述主节点确定路由条目中的路由日志分区区间归属所述主节点; 所述主节点确定所述路由日志分区区间与本地可写日志分区区间是否存在交集; 若是,则所述主节点将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列; 若否,则将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述主节点根据主日志分区区间的写入标志位判断所述主日志分区区间可写之前,还包括: 所述主节点接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化; 所述主节点根据所述日志分区区间变化信息确定所述主日志分区区间; 其中,所述主日志分区区间为切分或合并后新的主日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为切分或合并前原始主日志分区区间时,所述主日志分区区间的写入标志位为不可写。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述主节点向备节点发送日志记录同步请求消息之后,还包括: 所述主节点接收所述备节点发送的日志记录同步响应消息,确定所述备节点将所述日志记录写入备日志队列; 所述主节点将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存。
6.根据权利要求5所述的方法,其特征在于,所述主节点将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存之后,还包括: 所述主节点向所述备节点发送写入请求消息,以使所述备节点将备日志缓冲队列中的日志记录写入所述备节点对应的提交日志缓冲队列和内存。
7.根据权利要求6所述的方法,其特征在于,所述主节点向所述备节点发送写入请求消息之后,还包括: 所述主节点接收所述备节点发送的日志记录缺失消息; 所述主节点向所述备节点发送日志记录缺失响应消息。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括: 所述主节点确定所述主日志分区区间对应的主日志队列中的日志记录是否为空; 若否,则主节点删除满足预设条件的日志记录; 若是,则主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述主日志分区区间。
9.一种分区日志队列同步管理方法,其特征在于,包括: 备节点接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的; 所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列; 所述备节点向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存; 其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括: 所述备节点接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表; 所述备节点根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。
11.根据权利要求10所述的方法,其特征在于,所述备节点根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理,包括: 所述备节点确定路由条目中的路由日志分区区间归属所述备节点; 所述备节点确定所述路由条目与本地路由条目不同; 所述备节点确定所述路由日志分区区间与本地备日志分区区间不同; 所述备节点增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
12.根据权利要求9至11任一项所述的方法,其特征在于,所述备节点向所述主节点发送日志同步响应消息之后,还包括: 所述备节点接收所述主节点发送的写入请求消息; 所述备节点将所述备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存。
13.根据权利要求12所述的方法,其特征在于,所述备节点将所述备日志队列中的日志记录写入提交日志缓冲队列和内存之前,还包括: 所述备节点向所述主节点发送日志记录缺失消息; 所述备节点接收所述主节点发送的日志记录缺失响应消息。
14.根据权利要求9至13任一项所述的方法,其特征在于,所述方法还包括: 所述备节点确定所述备日志分区区间对应的备日志队列中的日志记录是否为空; 若否,则备节点删除满足预设条件的日志记录; 若是,则备节点确定所述备日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述备日志分区区间。
15.一种主节点,其特征在于,包括: 第一接收模块,用于接收客户端发送的日志记录写入请求消息,所述日志记录写入请求消息包括所述客户端触发的日志记录; 第一写入模块,用于根据主日志分区区间的写入标志位,确定所述主日志分区区间为可写主日志分区区间,并将所述客户端触发的日志记录写入所述可写主日志分区区间对应的主日志队列; 第一发送模块,用于向备节点发送日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及所述可写主日志分区区间,以使所述备节点根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列; 其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
16.根据权利要求15所述的主节点,其特征在于,还包括: 第二接收模块,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表; 标志位确定模块,用于根据所述路由表中的路由条目确定所述主节点对应的主日志分区区间的写入标志位。
17.根据权利要求16所述的主节点,其特征在于,所述标志位确定模块具体用于: 确定路由条目中的路由日志分区区间归属所述主节点; 确定所述路由日志分区区间与本地可写日志分区区间是否存在交集; 若是,则将所述本地可写日志分区区间置为不可写,将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列; 若否,则将所述路由日志分区区间的写入标志位置为可写,将所述路由日志分区区间作为所述可写主日志分区区间并为所述可写主日志分区区间维护对应的主日志队列。
18.根据权利要求15至17任一项所述的主节点,其特征在于,还包括:区间确定模块,用于在根据主日志分区区间的写入标志位判断所述主日志分区区间可写之前, 接收管理节点发送的日志分区区间变化信息,所述日志分区区间变化信息包括主日志分区区间的切分与合并信息,所述主日志分区区间的切分与合并将引起路由表中的路由条目发生变化; 根据所述日志分区区间变化信息确定所述主日志分区区间; 其中,所述主日志分区区间为切分或合并后新的主日志分区区间时,所述主日志分区区间的写入标志位为可写,所述主日志分区区间为切分或合并前原始主日志分区区间时,所述主日志分区区间的写入标志位为不可写。
19.根据权利要求15至18任一项所述的主节点,其特征在于,还包括:第二写入模块,用于向备节点发送日志记录同步请求消息之后, 接收所述备节点发送的日志记录同步响应消息,确定所述备节点将所述日志记录写入备日志队列; 将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存。
20.根据权利要求19所述的主节点,其特征在于,还包括:第二发送模块,用于将所述主日志队列中的所述日志记录写入提交日志缓冲队列和内存之后,向所述备节点发送写入请求消息,以使所述备节点将备日志缓冲队列中的日志记录写入所述备节点对应的提交日志缓冲队列和内存。
21.根据权利要求20所述的主节点,其特征在于,还包括:处理模块,用于向所述备节点发送写入请求消息之后, 接收所述备节点发送的日志记录缺失消息; 向所述备节点发送日志记录缺失响应消息。
22.根据权利要求15至21任一项所述的主节点,其特征在于,还包括: 删除模块,用于确定所述主日志分区区间对应的主日志队列中的日志记录是否为空; 若否,则主节点删除满足预设条件的日志记录; 若是,则主节点确定所述主日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述主日志分区区间。
23.—种备节点,其特征在于,包括: 第一接收模块,用于接收主节点发送的日志记录同步请求消息,所述日志记录同步请求消息中包括所述客户端触发的日志记录以及可写主日志分区区间,所述可写日志分区区间为所述主节点根据写入标志位确定的; 第一写入模块,用于根据所述可写主日志分区区间确定所述备节点对应的可写备日志分区区间,并将所述日志记录写入所述可写备日志分区区间对应的备日志队列; 第一发送模块,用于向所述主节点发送日志同步响应消息,以使所述主节点将所述主日志队列中的所述日志记录写入主节点对应的提交日志缓冲队列和内存; 其中,所述可写主日志分区区间与所述可写备日志分区区间对应相同的可写日志分区区间。
24.根据权利要求23所述的备节点,其特征在于,还包括: 第二接收模块,用于接收管理节点发送的路由表更新请求信息,所述路由表更新请求消息包括路由表; 管理模块,用于根据所述路由表中的路由条目,对备日志分区区间及所述备日志分区区间对应的备日志队列进行管理。
25.根据权利要求24所述的备节点,其特征在于,所述管理模块具体用于: 确定路由条目中的路由日志分区区间归属所述备节点; 确定所述路由条目与本地路由条目不同; 确定所述路由日志分区区间与本地备日志分区区间不同; 增加所述路由日志分区区间,并将所述路由日志分区区间作为可写备日志分区区间,并为所述可写备日志分区区间创建对应的备日志队列。
26.根据权利要求23至25任一项所述的备节点,其特征在于,还包括: 第二写入模块,用于向所述主节点发送日志同步响应消息之后, 接收所述主节点发送的写入请求消息; 将所述备日志队列中的日志记录写入备节点对应的提交日志缓冲队列和内存。
27.根据权利要求26所述的备节点,其特征在于,还包括: 处理模块,用于将所述备日志队列中的日志记录写入提交日志缓冲队列和内存之前, 向所述主节点发送日志记录缺失消息; 接收所述主节点发送的日志记录缺失响应消息。
28.根据权利要求23至27任一项所述的备节点,其特征在于,还包括:删除模块,用于确定所述备日志分区区间对应的备日志队列中的日志记录是否为空; 若否,则备节点删除满足预设条件的日志记录; 若是,则备节点确定所述备日志分区区间是否存在与路由表的路由条目中,若不存在,则删除所述备日志分区区间。
【文档编号】G06F17/30GK104346373SQ201310329460
【公开日】2015年2月11日 申请日期:2013年7月31日 优先权日:2013年7月31日
【发明者】王铁英, 刘哲 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1