服务节点切换方法、装置、设备及计算机可读存储介质转让专利

申请号 : CN201910883949.3

文献号 : CN110677280B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田永江杨维强贾俊刚黄平杰林耘毅周伟朱鹏黄炫淇胡剑宇周定邦王龙符涣涣王汉福莫淡先刘宇明郑丹张多子徐鑫陈凯夫李永平郑庆芳黄睿

申请人 : 招商银行股份有限公司

摘要 :

本发明公开了一种服务节点切换方法、装置、设备和计算机可读存储介质。该方法包括:在第一服务节点接收到操作请求时,第一服务节点获取操作请求对应的页面标识;并按操作请求处理页面标识对应的操作页面,并将处理后的操作页面同步到缓冲服务节点;在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;在第二服务节点接收到操作请求时,第二服务节点获取操作请求中的页面标识和操作时间;若操作时间在切换时间之前,第二服务节点查询缓冲服务节点,获取页面标识对应的操作页面,并按操作请求处理操作页面。本发明缩短了主备服务节点切换时操作请求执行的等待时间。

权利要求 :

1.一种服务节点切换方法,其特征在于,所述服务节点切换方法包括如下步骤:在第一服务节点接收到操作请求时,第一服务节点获取所述操作请求对应的页面标识;

第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点;

在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;

在第二服务节点接收到操作请求时,第二服务节点获取所述操作请求中的页面标识和操作时间;

若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面;

其中,所述第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点的步骤,包括:第一服务节点创建原子操作,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并在第一服务节点的第一数据缓冲池中生成Redo日志;

在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标识 ;

第一服务节点将包含所述日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点。

2.如权利要求1所述的服务节点切换方法,其特征在于,所述第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点的步骤,包括:第一服务节点查询第一服务节点的第一数据缓冲池,并判断所述第一数据缓冲池中是否包含所述页面标识对应的操作页面;

若所述第一数据缓冲池中不包含所述页面标识对应的操作页面,第一服务节点从第一服务节点的第一磁盘中获取所述页面标识对应的操作页面;

第一服务节点将所述操作页面写入所述第一数据缓冲池,并按所述操作请求处理所述操作页面。

3.如权利要求1所述的服务节点切换方法,其特征在于,所述在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标记的步骤之后,包括:第一服务节点将包含所述日志标识的Redo日志发送至第二服务节点;

第二服务节点接收所述Redo日志,第二服务节点按照所述Redo日志的日志标识构建Redo日志链,并生成所述页面标识对应的操作页面;

第二服务节点将生成的所述操作页面存储在第二服务节点的第二数据缓冲池中,并持久化到第二服务节点的第二磁盘中。

4.如权利要求1至3任意一项所述的服务节点切换方法,其特征在于,所述若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面的步骤,包括:若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面;

若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面。

5.如权利要求4所述的服务节点切换方法,其特征在于,所述若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面的步骤,包括:若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点判断第二服务节点的Redo日志链中是否包含所述页面标识对应的操作页面;

若所述Redo日志链中包含所述页面标识对应的操作页面,第二服务节点将缓冲服务节点中的操作页面与所述Redo日志链中的操作页面进行比对,确定最新的操作页面;

若缓冲服务节点中的操作页面是最新的操作页面,第二服务节点按所述操作请求处理所述最新的操作页面,将Redo日志链中的操作页面标记为脏页面并删除;

若所述Redo日志链中的操作页面是最新的操作页面,第二服务节点则进行页面重做得到最新的操作页面,并按所述操作请求处理所述最新的操作页面。

6.如权利要求4所述的服务节点切换方法,其特征在于,所述若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面的步骤之后,包括:若缓冲服务节点中不包含所述页面标识对应的操作页面,第二服务节点查询Redo日志链,获取所述Redo日志链中所述页面标识对应的操作页面;

第二服务节点按所述操作请求处理所述操作页面。

7.一种服务节点切换装置,其特征在于,所述服务节点切换装置包括:第一接收模块,用于在第一服务节点接收到操作请求时,第一服务节点获取所述操作请求对应的页面标识;

处理缓冲模块,用于第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点;

切换记录模块,用于在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;

第二接收模块,用于在第二服务节点接收到操作请求时,第二服务节点获取所述操作请求中的页面标识和操作时间;

查询处理模块,用于若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面;

其中,所述处理缓冲模块,包括:

创建单元,用于第一服务节点创建原子操作,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并在第一服务节点的第一数据缓冲池中生成Redo日志;

标记添加单元,用于在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标识 ;

缓冲单元,用于第一服务节点将包含所述日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点。

8.一种服务节点切换设备,其特征在于,所述服务节点切换设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的服务节点切换程序,所述服务节点切换程序被所述处理器执行时实现如权利要求1至6中任一项所述的服务节点切换方法的步骤。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有服务节点切换程序,所述服务节点切换程序被处理器执行时实现如权利要求1至6中任一项所述的服务节点切换方法的步骤。

说明书 :

服务节点切换方法、装置、设备及计算机可读存储介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及服务节点切换方法、装置、设备及计算机可读存储介质。

背景技术

[0002] 随着计算机技术的飞速发展,网络服务越来越常见,网络服务依赖于数据库、软件程序和硬件结构。
[0003] 在网络服务的过程中服务节点会受到不同因素的影响,出现服务节点宕机的情况,为了使得网络服务不受影响,通常设置一个主服务节点和一个备服务节点,主服务节点出现故障时,备服务节点需要基于物理日志的复制,回滚掉主机未提交的事务,然后备服务器才可以来提供相应的网络服务,也就是说主服务节点刚切换到备服务节点时,需要一定的时间进行恢复,备服务器才可以提供正常的网络服务,使得主备服务节点切换时服务处理存在一定滞后性。

发明内容

[0004] 本发明的主要目的在于提出一种服务节点切换方法、装置、设备及计算机可读存储介质,旨在解决当前主备服务节点进行切换时,不可以进行及时事务处理的技术问题。
[0005] 为实现上述目的,本发明提供一种服务节点切换方法,所述服务节点切换方法包括如下步骤:
[0006] 在第一服务节点接收到操作请求时,第一服务节点获取所述操作请求对应的页面标识;
[0007] 第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点;
[0008] 在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;
[0009] 在第二服务节点接收到操作请求时,第二服务节点获取所述操作请求中的页面标识和操作时间;
[0010] 若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面。
[0011] 可选地,所述第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点的步骤,包括:
[0012] 第一服务节点查询第一服务节点的第一数据缓冲池,并判断所述第一数据缓冲池中是否包含所述页面标识对应的操作页面;
[0013] 若所述第一数据缓冲池中不包含所述页面标识对应的操作页面,第一服务节点从第一服务节点的第一磁盘中获取所述页面标识对应的操作页面;
[0014] 第一服务节点将所述操作页面写入所述第一数据缓冲池,并按所述操作请求处理所述操作页面。
[0015] 可选地,所述第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点的步骤,包括:
[0016] 第一服务节点创建原子操作,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并在第一服务节点的第一数据缓冲池中生成Redo日志;
[0017] 在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标记;
[0018] 第一服务节点将包含所述日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点。
[0019] 可选地,所述在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标记的步骤之后,包括:
[0020] 第一服务节点将包含所述日志标识的Redo日志发送至第二服务节点;
[0021] 第二服务节点接收所述Redo日志,第二服务节点按照所述Redo日志的日志标识构建Redo日志链,并生成所述页面标识对应的操作页面;
[0022] 第二服务节点将生成的所述操作页面存储在第二服务节点的第二数据缓冲池中,并持久化到第二服务节点的第二磁盘中。
[0023] 可选地,所述若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面的步骤,包括:
[0024] 若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面;
[0025] 若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面。
[0026] 可选地,所述若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面的步骤,包括:
[0027] 若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点判断第二服务节点的Redo日志链中是否包含所述页面标识对应的操作页面;
[0028] 若所述Redo日志链中包含所述页面标识对应的操作页面,第二服务节点将缓冲服务节点中的操作页面与所述Redo日志链中的操作页面进行比对,确定最新的操作页面;
[0029] 若缓冲服务节点中的操作页面是最新的操作页面,第二服务节点按所述操作请求处理所述最新的操作页面,将Redo日志链中的操作页面标记为脏页面并删除;
[0030] 若所述Redo日志链中的操作页面是最新的操作页面,第二服务节点则进行页面重做得到最新的操作页面,并按所述操作请求处理所述最新的操作页面。
[0031] 可选地,所述若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面的步骤之后,包括:
[0032] 若缓冲服务节点中不包含所述页面标识对应的操作页面,第二服务节点查询Redo日志链,获取所述Redo日志链中所述页面标识对应的操作页面;
[0033] 第二服务节点按所述操作请求处理所述操作页面。
[0034] 此外,为实现上述目的,本发明还提供一种服务节点切换设备,所述服务节点切换设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的服务节点切换程序,所述服务节点切换程序被所述处理器执行时实现如上所述的服务节点切换方法的步骤。
[0035] 此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有服务节点切换程序,所述服务节点切换程序被处理器执行时实现如上所述的服务节点切换方法的步骤。
[0036] 本发明提供一种服务节点切换方法、装置、设备及计算机可读存储介质。本发明实施例中,在第一服务节点接收到操作请求时,第一服务节点获取操作请求对应的页面标识;第一服务节点按操作请求处理页面标识对应的操作页面,并将处理后的操作页面同步到缓冲服务节点;在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;在第二服务节点接收到操作请求时,第二服务节点获取操作请求中的页面标识和操作时间;若操作时间在切换时间之前,第二服务节点查询缓冲服务节点,获取页面标识对应的操作页面,并按操作请求处理操作页面。本发明实施例中第一服务节点正常操作时,将操作页面发送至缓冲服务节点,第一服务节点故障时,第二服务节点从缓冲服务节点中拿取操作页面,并对操作页面执行操作请求,第二服务节点不需要停下进行数据恢复,使得第二服务节点可以快速地处理操作请求,减少了第一服务节点和第二服务节点的时间浪费。

附图说明

[0037] 图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
[0038] 图2为本发明服务节点切换方法第一实施例的流程示意图;
[0039] 图3为本发明服务节点切换方法第一实施例中缓冲服务节点的示意图;
[0040] 图4为本发明服务节点切换方法第一实施例的具体场景示意图;
[0041] 图5为本发明服务节点切换方法第二实施例的流程示意图;
[0042] 图6为本发明服务节点切换方法第三实施例的流程示意图;
[0043] 图7为本发明服务节点切换装置一实施例的功能模块示意图。
[0044] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0045] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0046] 如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
[0047] 本发明实施例服务节点切换设备可以是PC机或服务器。
[0048] 如图1所示,该服务节点切换设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线 1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏 (Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0049] 本领域技术人员可以理解,图1中示出的服务节点切换设备结构并不构成对服务节点切换设备的限定,服务节点切换可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0050] 如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及服务节点切换对应的计算机程序(又叫服务节点切换程序)。
[0051] 在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的服务节点切换程序,处理器上运行的服务节点切换程序被执行时所实现的方法可参照本发明服务节点切换方法各个实施例。
[0052] 基于上述硬件结构,提出本发明服务节点切换方法实施例。
[0053] 参照图2,图2为本发明服务节点切换方法第一实施例的流程示意图,所述方法包括:
[0054] 步骤S10,在第一服务节点接收到操作请求时,第一服务节点获取所述操作请求对应的页面标识。
[0055] 本实施例中的服务节点切换方法应用于服务节点切换设备,服务节点切换设备是服务节点切换平台的硬件载体,本实施例中的服务节点切换平台可以作为一个中间平台对接第一服务节点(又叫主服务节点,或者Active节点) 和第二服务节点(又叫备服务节点,或者Standby节点),此外,服务节点切换平台还可以设置在第一服务节点和/或第二服务节点上。
[0056] 本实施例中预先设置有缓冲服务节点,缓冲服务节点(又叫,AOP(Atomic Operation Page,原子操作页)Server节点),AOP Server节点可以作为一个中间平台对接第一服务节点和第二服务节点。
[0057] 可以理解的是,服务节点切换设备和缓冲服务节点实现的功能并不相同,服务节点切换设备运行时实现本实施例中服务节点切换方法的步骤,缓冲服务节点用于缓存页面操作信息。
[0058] 本实施例中,以服务节点切换设备设置在第一服务节点和第二服务节点上,AOP Server节点作为一个中间平台对接第一服务节点和第二服务节点为例进行说明,服务节点切换设备对第一服务节点和第二服务节点进行检测,执行本申请服务节点切换方法,具体地:第一服务节点接收操作请求,操作请求的类型不作具体限定,即,操作请求可以是页面编辑请求或者页面访问请求等等,操作请求的触发形式不作具体限定,即,操作请求可以是终端自动触发的,例如,终端中设置每天凌晨访问xxx页面获取用户访问数据,则每天凌晨终端触发操作请求,终端将操作请求发送至第一服务节点;操作请求还可以是用户主动触发的。
[0059] 在第一服务节点接收到操作请求时,第一服务节点获取操作请求对应的页面标识,其中,页面标识是指唯一识别页面的标识信息,例如页面ID。
[0060] 步骤S20,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点。
[0061] 具体地,包括:
[0062] 步骤a1,第一服务节点查询第一服务节点的第一数据缓冲池,并判断所述第一数据缓冲池中是否包含所述页面标识对应的操作页面;
[0063] 步骤a2,若所述第一数据缓冲池中不包含所述页面标识对应的操作页面,第一服务节点从第一服务节点的第一磁盘中获取所述页面标识对应的操作页面;
[0064] 步骤a3,第一服务节点将所述操作页面写入所述第一数据缓冲池,并按所述操作请求处理所述操作页面。
[0065] 即,第一服务节点查询第一服务节点的第一数据缓冲池,第一服务节点到第一数据缓冲池中通过页面标识查找操作页面,如果没有找到,第一服务节点则从第一服务节点对应的第一磁盘上读取页面标识对应的操作页面,第一服务节点将从第一磁盘上读取到的操作页面保存第一数据缓冲池中,第一服务节点检测到操作页面进入第一数据缓冲池后,第一服务节点根据操作请求处理操作页面,完成对操作页面的修改,同时在第一数据缓冲池的Redo日志缓冲区中根据处理步骤生成Redo日志。
[0066] 本实施例中,预先建立Active节点、Standby节点和AOP Server节点的连接,在操作页面处理完成之后,第一服务节点将处理后的操作页面同步到缓冲服务节点,同时第一服务节点将操作页面发送到Standby节点。
[0067] 第一服务节点将操作页面同步到缓冲服务节点的具体实现方式为: Active节点根据配置信息连接AOP Server节点,Active节点与AOP Server交换信息,Active节点获得AOP Server上AOP池的内存地址,该内存地址与 Active节点本地的第一数据缓冲地址建立映射(需要保证AOP池的内存要大于Active节点上数据缓冲池的大小),Active节点将修改后的操作页面通过 RDMA(Remote Direct Memory Access远程直接内存数据存取,RDMA是为了解决网络传输中服务器端数据处理的延迟而产生的。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能。它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和 CPU周期用于改进应用系统性能)的方式同步到AOP Server节点的AOP页面池中。
[0068] 结合图3,缓冲服务节点中AOP数据页面缓冲服务的内存(4100)大小和Active数据库的数据缓冲(4002)的大小相同由于RDMA每个内存注册区域的大小限制,注册多个RDMA Memory Region,AOP有一块内存区域专门存放所有页面的ID,每一个ID唯一标示一个页面,即,第一服务节点将操作之后的操作页面,和操作页面的页面标识通过RDMA的方式同步到缓冲服务节点。
[0069] 在操作页面处理完成之后,第一服务节点通过RDMA的方式将操作页面和操作页面的标识同步到缓冲服务节点,RDMA的方式可以减少操作页面的传输时间,加快效率。
[0070] 本实施例中,第一服务节点根据RDMA的方式无需服务节点CPU直接参与的特点,第一服务节点通过RDMA直接将操作页面同步到缓冲服务节点中,使得第二服务节点可以继续访问这些页面,使得第二服务节点无需等待 Redo,Undo操作全部完成就可读写事务,使得RTO(Recovery Time Objective 复原时间目标)接近零,具体地:
[0071] 步骤S30,在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间。
[0072] 服务节点切换设备在检测到第一服务节点故障时,即,第一服务节点受到硬件、软件或者其他因素影响,不可以正常提供服务时,第一服务节点发送报警信息,服务节点切换设备接收第一服务节点发送的报警信息,服务节点切换设备在检测到第一服务节点故障,服务节点切换设备将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间。
[0073] 即,服务节点切换设备在第二服务节点状态切换时,服务节点切换设备记录时间戳的快照(Timestamp Snapshot简称TS),使得第二服务器节点可以采用MVCC(Multi Version concurrency control,多版本并发控制算法,一种读写不阻塞的并发控制算法,该算法的原理是,当操作页面的某个元组发生修改的时候,其历史版本并不会被马上删除,而是保存下来,通过事务快照来判断元组的可见性)处理时间戳的快照,第二服务节点根据MVCC做可见性判断,这样主备服务节点之间不需要传递其他的事务快照信息,具体地:
[0074] 步骤S40,在第二服务节点接收到操作请求时,第二服务节点获取所述操作请求中的页面标识和操作时间。
[0075] 在第二服务节点状态切换之后,第二服务节点处于上线状态,第二服务节点承继第一服务节点的处理事务,即,第二服务节点接收操作请求,第二服务节点获取操作请求中的页面标识和操作时间。
[0076] 第二服务节点状态比较操作时间和切换时间的先后顺序,若操作时间在所述切换时间之后,即,该操作请求是第一服务节点和第二服务节点切换之后用户新触发的,第二服务节点直接处理,即,第二服务节点获取操作请求对应的页面标识,第二服务节点从自身的第二磁盘或者第二数据缓冲池获取页面标识对应的操作页面,并对该操作页面执行该操作请求;若操作时间在所述切换时间之前,即,该操作请求是第一服务节点和第二服务节点切换之前,第一服务节点没有处理完成的,第一服务节点没有处理完成就出现的故障,此时,第二服务节点执行下述步骤:
[0077] 步骤S50,若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面。
[0078] 若操作时间在切换时间之前,该操作请求为第一服务节点没有执行完成的,第二服务节点查询缓冲服务节点,第二服务节点获取页面标识对应的操作页面,并按操作请求处理所述操作页面。
[0079] 结合图4,第二服务节点查询缓冲服务节点,若缓冲服务节点中包含页面标识对应的操作页面,缓冲服务节点通过RDMAwrite将页面发送给Standby 节点;使得第二服务节点按操作请求处理操作页面。
[0080] 本发明实施例中第一服务节点正常操作时,将操作页面发送至缓冲服务节点,第一服务节点故障时,第二服务节点从缓冲服务节点中拿取操作页面,并对操作页面执行操作请求,第二服务节点不需要停下进行数据恢复,使得第二服务节点可以快速地处理操作请求,减少了第一服务节点和第二服务节点的时间浪费。
[0081] 可以理解的是:当Active节点出现故障以后,假设仲裁逻辑已经做出判断,Standby节点接管Active节点的服务。记录下Standby升级为Active时的时间戳快照TS1,此Active节点记为Active’。此时的恢复线程继续工作直到Redo重放工作结束,重放过程中会忽略那些页面的TS大于Redo日志中的 TS的页面。原来在恢复过程中Active’节点是无法处理事务的,所以这个过程系统还不可用。引入AOP池以后,重放过程中数据库可以正常访问,产生在线的Redo日志,检查点机制也可以正常工作。当页面上的TS小于TS1时直接从AOP Server的AOP池通过RDMA协议中取相应的页面,覆盖到当前的数据缓冲的对应位置的页面上面,事务正常执行,对外提供服务不中断。
[0082] 进一步地,参考图5,基于本发明服务节点切换方法第一实施例,提出本发明服务节点切换方法第二实施例。
[0083] 本实施例是第一实施例中步骤S30的细化,本实施例于上述实施例的区别在于:
[0084] 步骤S31,第一服务节点创建原子操作,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并在第一服务节点的第一数据缓冲池中生成Redo日志。
[0085] 本实施例中,第一服务节点创建原子操作(atomic operation指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch),第一服务节点按操作请求处理页面标识对应的操作页面,第一服务节点生成操作相关的Redo日志,第一服务节点将生成的Redo 日志保证至第一数据缓冲池中Redo日志缓冲区。
[0086] 步骤S32,在所述原子操作结束时,第一服务节点为所述Redo日志添加日志标记。
[0087] 第一服务节点在原子操作结束时,第一服务节点为Redo日志添加日志标记,具体地:第一服务节点为每一个操作页面也维护一个日志标识(PageLSN)。每当一个更新操作发生在某页上时,该操作将其日志记录的LSN存储在该页的Page LSN域中。在恢复的撤销阶段,LSN值小于或等于Page LSN值的日志记录将不在该页上执行,因为它的动作已经在该页上了。
[0088] 本实施例中,第一服务节点为每个日志记录包含同一事务的前一日志记录的LSN放在Page LSN中,使得一个事务可以由后向前提取,而不必读整个日志。
[0089] 步骤S33,第一服务节点将包含所述日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点。
[0090] 第一服务节点将包含日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点,本实施例中,第一服务节点创建原子操作执行操作请求,可以防止操过请求被打断,第一服务节点在原子操作结束之后,第一服务节点生成日志标识,并发送至缓冲服务节点,保证了缓冲服务节点中操作页面的连续性。
[0091] 进一步地,参考图6,在本发明服务节点切换方法上述实施例的基础上,提出本发明服务节点切换方法第三实施例。
[0092] 本实施是第一实施例中步骤S50的细化,本实施例与第一实施例的区别在于:
[0093] 步骤S51,若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面;
[0094] 若操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含页面标识对应的操作页面。
[0095] 步骤S52,若缓冲服务节点中不包含所述页面标识对应的操作页面,第二服务节点查询Redo日志链,获取所述Redo日志链中所述页面标识对应的操作页面,第二服务节点按所述操作请求处理所述操作页面。
[0096] 若缓冲服务节点中不包含页面标识对应的操作页面,第二服务节点查询 Redo日志链,获取Redo日志链中页面标识对应的操作页面,第二服务节点按操作请求处理操作页面。
[0097] 本实施例中,第一服务节点将操作页面发送至第二服务节点,以在第二服务节点备份第一服务节点发送的操作页面,具体地,包括:
[0098] 步骤b1,第一服务节点将包含所述日志标识的Redo日志发送至第二服务节点;
[0099] 步骤b2,第二服务节点接收所述Redo日志,第二服务节点按照所述Redo 日志的日志标识构建Redo日志链,并生成所述页面标识对应的操作页面;
[0100] 步骤b3,第二服务节点将生成的所述操作页面存储在第二服务节点的第二数据缓冲池中,并持久化到第二服务节点的第二磁盘中。
[0101] 即,第一服务节点处理完成操作页面之后,第一服务节点将包含日志标识的Redo日志通过远程直接内存数据存取的方式发送给缓冲服务节点的同时,第一服务节点通过TCP(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议)协议,第一服务节点将包含日志标识的Redo日志发送至第二服务节点。
[0102] 第二服务节点接收第一服务节点发送的Redo日志,第二服务节点获取 Redo日志的日志标识,其中,日志标识中包含操作时间,第二服务节点按照各个Redo日志的操作时间构建Redo日志链,并生成页面标识对应的操作页面;第二服务节点将生成的所述操作页面存储在第二服务节点的第二数据缓冲池中,并持久化到第二服务节点的第二磁盘中。
[0103] 可以理解的是,第一服务节点将包含日志标识的Redo日志发送至第二服务节点,使得第二服务节点可以根据Redo日志进行操作页面还原,具体地,包括:分析阶段:决定哪些事务要撤销,哪些页在崩溃时是脏的,以及重做阶段应从哪个LSN开始;Redo阶段:从分析阶段决定的位置开始,执行重做,将操作页面恢复到发生崩溃前的状态,此外,进行处理的过程中会产生一些特殊的Redo-only的日志,称为补偿日志记录CLR(Compensation Log Record,补偿日志记录),CLR中还有额外的称为Undo,此时,第二服务节点还需要进行undo阶段:这一阶段回滚在发生崩溃时那些不完全的事务。
[0104] 本实施例中,第一服务节点发送操作页面信息至缓冲服务节点的同时也发送至第二服务节点,使得在第二服务节点切换之后,第二服务节点可以利用备份的操作页面执行操作请求,本实施例中,第一服务节点进行重复的操作数据发送,可以有效地降低了服务节点切换的风险。
[0105] 步骤S53,若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面。
[0106] 具体地,包括:
[0107] 步骤c1,若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点判断第二服务节点的Redo日志链中是否包含所述页面标识对应的操作页面;
[0108] 步骤c2,若所述Redo日志链中包含所述页面标识对应的操作页面,第二服务节点将缓冲服务节点中的操作页面与所述Redo日志链中的操作页面进行比对,确定最新的操作页面;
[0109] 步骤c3,若缓冲服务节点中的操作页面是最新的操作页面,第二服务节点按所述操作请求处理所述最新的操作页面,将Redo日志链中的操作页面标记为脏页面并删除;
[0110] 步骤c4,若所述Redo日志链中的操作页面是最新的操作页面,第二服务节点则进行页面重做得到最新的操作页面,并按所述操作请求处理所述最新的操作页面。
[0111] 即,若缓冲服务节点中包含页面标识对应的操作页面,第二服务节点判断第二服务节点的Redo日志链中是否包含页面标识对应的操作页面;若Redo 日志链中包含页面标识对应的操作页面,第二服务节点将缓冲服务节点中的操作页面与Redo日志链中的操作页面进行比对,确定最新的操作页面;具体地,第二服务节点将缓冲服务节点中操作页面的页面修改时间与Redo日志链中操作页面的页面修改时间进行比对,若缓冲服务节点中的操作页面是最新的操作页面,第二服务节点按所述操作请求处理最新的操作页面,将Redo日志链中的操作页面标记为脏页面(脏页面是指在数据缓冲区的页面,如果从磁盘读上来以后经过事务的修改,发生了变化,这样的页面被称为脏页面) 并删除;若Redo日志链中的操作页面是最新的操作页面,第二服务节点则进行页面重做得到最新的操作页面,并按操作请求处理所述最新的操作页面。
[0112] 本实施例中,第二服务节点在缓冲服务节点获取到操作页面,第二服务节点查询第一服务节点发送的操作页面,并确定最新的操作页面,以对最新的操作页面进行处理,避免了缓冲服务节点中的页面不是最新操作页面的情况。
[0113] 参照图7,本发明还提供一种服务节点切换装置,所述服务节点切换装置包括:
[0114] 第一接收模块10,用于在第一服务节点接收到操作请求时,第一服务节点获取所述操作请求对应的页面标识;
[0115] 处理缓冲模块20,用于第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并将处理后的所述操作页面同步到缓冲服务节点;
[0116] 切换记录模块30,用于在检测到第一服务节点故障时,将与第一服务节点通信连接的第二服务节点切换为上线状态,并记录第二服务节点状态切换的切换时间;
[0117] 第二接收模块40,用于在第二服务节点接收到操作请求时,第二服务节点获取所述操作请求中的页面标识和操作时间;
[0118] 查询处理模块50,用于若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,获取所述页面标识对应的操作页面,并按所述操作请求处理所述操作页面。
[0119] 在一实施例中,所述处理缓冲模块20,包括:
[0120] 判断单元,用于第一服务节点查询第一服务节点的第一数据缓冲池,并判断所述第一数据缓冲池中是否包含所述页面标识对应的操作页面;
[0121] 获取单元,用于若所述第一数据缓冲池中不包含所述页面标识对应的操作页面,第一服务节点从第一服务节点的第一磁盘中获取所述页面标识对应的操作页面;
[0122] 写入单元,用于第一服务节点将所述操作页面写入所述第一数据缓冲池,并按所述操作请求处理所述操作页面。
[0123] 在一实施例中,所述处理缓冲模块20,包括:
[0124] 创建单元,用于第一服务节点创建原子操作,第一服务节点按所述操作请求处理所述页面标识对应的操作页面,并在第一服务节点的第一数据缓冲池中生成Redo日志;
[0125] 标记添加单元,用于在所述原子操作结束时,第一服务节点为所述Redo 日志添加日志标记;
[0126] 缓冲单元,用于第一服务节点将包含所述日志标识的Redo日志通过远程直接内存数据存取方式发送至缓冲服务节点。
[0127] 在一实施例中,所述的服务节点切换装置,包括:
[0128] 日志发送模块,用于第一服务节点将包含所述日志标识的Redo日志发送至第二服务节点;
[0129] 缓存模块,用于第二服务节点接收所述Redo日志,第二服务节点按照所述Redo日志的日志标识构建Redo日志链,并生成所述页面标识对应的操作页面;
[0130] 生成模块,用于第二服务节点将生成的所述操作页面存储在第二服务节点的第二数据缓冲池中,并持久化到第二服务节点的第二磁盘中。
[0131] 在一实施例中,查询处理模块50,包括:
[0132] 第一判定子模块,用于若所述操作时间在所述切换时间之前,第二服务节点查询缓冲服务节点,判断缓冲服务节点中是否包含所述页面标识对应的操作页面;
[0133] 获取处理子模块,用于若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点通过远程直接内存数据存取方式从缓冲服务节点获取所述操作页面,并按所述操作请求处理所述操作页面。
[0134] 在一实施例中,所述获取处理子模块,包括:
[0135] 判断单元,用于若缓冲服务节点中包含所述页面标识对应的操作页面,第二服务节点判断第二服务节点的Redo日志链中是否包含所述页面标识对应的操作页面;
[0136] 比对单元,用于若所述Redo日志链中包含所述页面标识对应的操作页面,第二服务节点将缓冲服务节点中的操作页面与所述Redo日志链中的操作页面进行比对,确定最新的操作页面;
[0137] 处理单元,用于若缓冲服务节点中的操作页面是最新的操作页面,第二服务节点按所述操作请求处理所述最新的操作页面,将Redo日志链中的操作页面标记为脏页面并删除;
[0138] 处理单元,还用于若所述Redo日志链中的操作页面是最新的操作页面,第二服务节点则进行页面重做得到最新的操作页面,并按所述操作请求处理所述最新的操作页面。
[0139] 在一实施例中,所述查询处理模块50,包括:
[0140] 查询获取单元,用于若缓冲服务节点中不包含所述页面标识对应的操作页面,第二服务节点查询Redo日志链,获取所述Redo日志链中所述页面标识对应的操作页面;
[0141] 处理单元,用于第二服务节点按所述操作请求处理所述操作页面。
[0142] 上述各程序模块所执行的方法可参照本发明服务节点切换方法各个实施例,此处不再赘述。
[0143] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0144] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0145] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0146] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。