一种集群系统中的时序库主备机内存同步方法

文档序号:7811956阅读:303来源:国知局
一种集群系统中的时序库主备机内存同步方法
【专利摘要】本发明公开一种集群系统中的时序库主备机内存同步方法,包括模型数据同步和实时数据同步,主机接收客户端模型数据报文,并通过向备机转发进行模型数据同步;主备机同时接收实时数据报文,生成实时数据块,并赋予相同的实时数据块同样的key,主机向备机发送key进行实时数据同步。此种同步方法适用于在集群系统中主备机之间的内存同步,解决了当发生失败切换时主机内存数据丢失的问题。
【专利说明】一种集群系统中的时序库主备机内存同步方法

【技术领域】
[0001]本发明涉及一种集群系统中的时序库主备机内存同步方法。

【背景技术】
[0002]时序数据库是广域测量系统(WAMS)的基础,同时还可用于变电站监控、调度、直流、稳控等多个系统中,满足其存储海量、高频数据的需求。在实际应用中,为满足服务的高可用性,时序数据库服务往往采取主备机集群的方式运行。当主机发生故障时(突然掉电、内存故障、服务进程异常退出),可通过集群系统发现故障并进行失败转移,将服务切换到备机运行,主备机切换的过程存在较高的数据丢失风险,影响了整个系统的高可用性。所述的数据丢失风险可分为可控风险和不可控风险:
[0003]可控风险:在发生切换(人工或自动)的这段时间内,服务不可用,此时客户端实时数据无法提交,需要暂时缓存在客户端,防止数据丢失。
[0004]不可控风险:由于机器掉电、进程异常退出等造成的数据丢失风险,这种情况下,即便集群将服务切换到备机运行,也可能丢失主机内存中尚未写入磁盘的文件。
[0005]对于可控风险,目前的主流时序库产品都能通过客户端缓存机制将实时数据缓存在本地,当服务再次可用时再发送到服务端;而对于不可控风险,目前大多数时序数据库产品都不能很好地处理,在主机掉电或时序库服务被意外异常终止时,不可避免地会导致部分数据的丢失,即使集群能在较短时间内进行失败切换,但此时主机内存中的数据已经无法恢复。
[0006]为解决上述问题,本发明致力于在备机维护与主机同样的内存镜像,使得当发生失败切换时,备机能够完全接管主机的服务和内存数据,使整个系统真正做到“高可用”。


【发明内容】

[0007]本发明的目的,在于提供一种集群系统中的时序库主备机内存同步方法,其适用于在集群系统中主备机之间的内存同步,解决了当发生失败切换时主机内存数据丢失的问题。
[0008]为了达成上述目的,本发明的解决方案是:
[0009]一种集群系统中的时序库主备机内存同步方法,包含如下步骤:
[0010](I)客户端向主机发送TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;测点模型建立完成后,客户端同时向主、备机发送实时数据;
[0011](2)主机收到实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key ;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制同步到磁盘;对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后将具有相同key的实时数据块从内存中清除;
[0012](3)当主机故障发生集群失败切换时,备机同步进程将内存中实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步。
[0013]上述步骤(I)还包括如下内容:客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,实时数据块在主备机内存中的处理流程一致,key 一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像。
[0014]上述步骤(2)还包括如下内容:当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树的少量结点缓存在内存中,大部分结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
[0015]上述步骤(3)还包括如下内容:备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
[0016]采用上述方案后,本发明具有以下特点:
[0017](I)当发生掉电、服务异常终止等不可预料的情况时,保证整个系统内存数据不会丢失;
[0018](2)不仅仅对于时序库,对于其他任何需要进行数据处理和存储的应用或系统软件,均可采用该方法的思路保证系统数据一致性、完整性;
[0019](3)模型数据立即同步,将对实时数据同步的影响降到最低;
[0020](4)内存数据同步过程在两台服务器间进行,对应用透明,不增加应用复杂性。

【专利附图】

【附图说明】
[0021]图1是本发明所应用的集群系统架构图;
[0022]图2是本发明中主机数据处理的流程图;
[0023]图3是本发明中备机数据处理的流程图;
[0024]图4是本发明中主、备机的切换逻辑图。

【具体实施方式】
[0025]本发明提供一种集群系统中的时序库主备机内存同步方法,包括模型数据同步和实时数据同步,具体包括如下步骤:
[0026](I)客户端向主机发生TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;所述测点模型建立完成后,客户端同时向主、备机发送实时数据;
[0027]具体来说,客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,这是进行实时数据同步的前提,实时数据在主备机内存中的处理流程一致,实时数据缓冲区满时,形成的实时数据块,该实时数据块的key —致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像,这是进行实时数据同步的基础。
[0028](2)主机收到前述实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key ;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制sync (同步)到磁盘。对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后更新其实时数据块内存,将具有相同key的实时数据块从内存中清除;
[0029]当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树的少量结点缓存在内存中,大部分结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,保证数据的持久存储;再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
[0030](3)当主机故障发生集群失败切换时,备机同步进程将内存中的实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中的实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步,防止了这部分实时数据块由于主机故障导致的丢失。
[0031]备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,其处理过程如步骤(2)所述,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
[0032]以下将以时序数据库存储毫秒级WAMS数据为例,结合附图对本发明的技术方案进行详细说明。
[0033]数据提交客户端首先向主机建立测点模型,模型建立完成后,同时向主、备机发送实时数据,具体步骤如下:
[0034](I)如图1所示,系统包括主机rtdbl、备机rtdb2以及客户端client。主机rtdbl运行时序数据库服务进程rtdb_server,备机rtdb2运行同步进程rtdb_sync。开始时,Client向rtdbl发送建点报文(建立后还可以发送修改、删除报文),rtdbl的服务进程rtdb_server接收到建点报文之后执行建点操作,成功后立即向备机发送测点同步报文;建点完成后,client向rtdbl和rtdb2同时发送实时数据,实时数据由若干记录组成,一条记录也称一条事件,由测点id、时间戳(time)、值(value)和质量码(flag)四个属性构成,同一个测点的事件按时间戳递增的顺序发送。
[0035](2)如图2和图3所示,rtdbl的rtdb_server进程包括实时数据处理线程和模型数据处理线程;rtdb2的rtdb_sync进程包括主线程和同步线程。rtdb_server模型数据处理线程接收到测点信息的增删改报文,执行相应操作,执行成功后立即向rtdb_sync同步线程发送报文进行同步;rtdb_server实时数据处理线程接收到实时数据后,将其中的事件存入对应测点的缓冲区(每个测点id对应一个缓冲区),当缓冲区满时,将其中所有事件作为一个数据块存入待压缩存储队列,该数据块以其测点id、第一条事件和最后一条事件的时间戳作为key,由后台压缩存储模块进行压缩,并写入最终存储结构一红黑树,当满足给定写入次数时,强制将红黑树内存中的部分sync到磁盘,并将成功sync到磁盘的数据块key发送到rtdb_sync同步线程;rtdb_sync主线程接收客户端发送的实时数据,将其中的事件存入对应测点的缓冲区,当缓冲区满时,将其中所有事件作为一个数据块存入待同步实时数据块队列,该数据块以其测点id、第一条事件和最后一条事件的时间戳作为key (相同数据块具有与主机中相同的key)。rtdb_sync同步线程收到rtdb_server的同步报文后,判断报文类型,如果是模型数据同步报文,则进行模型数据同步,如果是实时数据同步报文,则遍历待同步实时数据块队列,将已写入磁盘的数据块从内存删除。
[0036](3)如图4所示,当rtdbl发生故障时,集群将执行失败切换,首先向rtdb2的rtdb_sync进程发送退出信号,rtdb_sync在收到信号后将待同步实时数据块队列中的数据块写入磁盘,然后退出;此时rtdb_server进程启动,将rtdb_sync写入磁盘中的数据加载到内存并进行压缩存储,处理完成后继续对客户端提供服务,整个过程对客户端透明,客户端并不知道服务端发生了失败切换,由于在rtdbl发生故障时所丢失的内存数据在rtdb2上有备份,整个切换过程也不会导致数据丢失。当rtdbl故障恢复后,作为备机运行rtdb_sync进程,与rtdb2的rtdb_server进程进行同步。
[0037]以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
【权利要求】
1.一种集群系统中的时序库主备机内存同步方法,其特征在于包含如下步骤: (1)客户端向主机发送TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;测点模型建立完成后,客户端同时向主、备机发送实时数据; (2)主机收到实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key ;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制同步到磁盘;对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后将具有相同key的实时数据块从内存中清除; (3)当主机故障发生集群失败切换时,备机同步进程将内存中实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步。
2.如权利要求1所述的一种集群系统中的时序库主备机内存同步方法,其特征在于所述步骤(I)还包括如下内容:客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,实时数据块在主备机内存中的处理流程一致,key 一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像。
3.如权利要求1所述的一种集群系统中的时序库主备机内存同步方法,其特征在于所述步骤(2)还包括如下内容:当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树有32Mb结点缓存在内存中,其余结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
4.如权利要求1所述的一种集群系统中的时序库主备机内存同步方法,其特征在于所述步骤(3)还包括如下内容:备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
【文档编号】H04L29/08GK104243554SQ201410413346
【公开日】2014年12月24日 申请日期:2014年8月20日 优先权日:2014年8月20日
【发明者】张俊, 王玮 申请人:南京南瑞继保工程技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1