CN104243554B - 一种集群***中的时序库主备机内存同步方法 - Google Patents
一种集群***中的时序库主备机内存同步方法 Download PDFInfo
- Publication number
- CN104243554B CN104243554B CN201410413346.4A CN201410413346A CN104243554B CN 104243554 B CN104243554 B CN 104243554B CN 201410413346 A CN201410413346 A CN 201410413346A CN 104243554 B CN104243554 B CN 104243554B
- Authority
- CN
- China
- Prior art keywords
- time data
- real time
- data block
- main frame
- internal memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开一种集群***中的时序库主备机内存同步方法,包括模型数据同步和实时数据同步,主机接收客户端模型数据报文,并通过向备机转发进行模型数据同步;主备机同时接收实时数据报文,生成实时数据块,并赋予相同的实时数据块同样的key,主机向备机发送key进行实时数据同步。此种同步方法适用于在集群***中主备机之间的内存同步,解决了当发生失败切换时主机内存数据丢失的问题。
Description
技术领域
本发明涉及一种集群***中的时序库主备机内存同步方法。
背景技术
时序数据库是广域测量***(WAMS)的基础,同时还可用于变电站监控、调度、直流、稳控等多个***中,满足其存储海量、高频数据的需求。在实际应用中,为满足服务的高可用性,时序数据库服务往往采取主备机集群的方式运行。当主机发生故障时(突然掉电、内存故障、服务进程异常退出),可通过集群***发现故障并进行失败转移,将服务切换到备机运行,主备机切换的过程存在较高的数据丢失风险,影响了整个***的高可用性。所述的数据丢失风险可分为可控风险和不可控风险:
可控风险:在发生切换(人工或自动)的这段时间内,服务不可用,此时客户端实时数据无法提交,需要暂时缓存在客户端,防止数据丢失。
不可控风险:由于机器掉电、进程异常退出等造成的数据丢失风险,这种情况下,即便集群将服务切换到备机运行,也可能丢失主机内存中尚未写入磁盘的文件。
对于可控风险,目前的主流时序库产品都能通过客户端缓存机制将实时数据缓存在本地,当服务再次可用时再发送到服务端;而对于不可控风险,目前大多数时序数据库产品都不能很好地处理,在主机掉电或时序库服务被意外异常终止时,不可避免地会导致部分数据的丢失,即使集群能在较短时间内进行失败切换,但此时主机内存中的数据已经无法恢复。
为解决上述问题,本发明致力于在备机维护与主机同样的内存镜像,使得当发生失败切换时,备机能够完全接管主机的服务和内存数据,使整个***真正做到“高可用”。
发明内容
本发明的目的,在于提供一种集群***中的时序库主备机内存同步方法,其适用于在集群***中主备机之间的内存同步,解决了当发生失败切换时主机内存数据丢失的问题。
为了达成上述目的,本发明的解决方案是:
一种集群***中的时序库主备机内存同步方法,包含如下步骤:
(1)客户端向主机发送TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;测点模型建立完成后,客户端同时向主、备机发送实时数据;
(2)主机收到实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制同步到磁盘;对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后将具有相同key的实时数据块从内存中清除;
(3)当主机故障发生集群失败切换时,备机同步进程将内存中实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步。
上述步骤(1)还包括如下内容:客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,实时数据块在主备机内存中的处理流程一致,key一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像。
上述步骤(2)还包括如下内容:当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树的少量结点缓存在内存中,大部分结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
上述步骤(3)还包括如下内容:备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
采用上述方案后,本发明具有以下特点:
(1)当发生掉电、服务异常终止等不可预料的情况时,保证整个***内存数据不会丢失;
(2)不仅仅对于时序库,对于其他任何需要进行数据处理和存储的应用或***软件,均可采用该方法的思路保证***数据一致性、完整性;
(3)模型数据立即同步,将对实时数据同步的影响降到最低;
(4)内存数据同步过程在两台服务器间进行,对应用透明,不增加应用复杂性。
附图说明
图1是本发明所应用的集群***架构图;
图2是本发明中主机数据处理的流程图;
图3是本发明中备机数据处理的流程图;
图4是本发明中主、备机的切换逻辑图。
具体实施方式
本发明提供一种集群***中的时序库主备机内存同步方法,包括模型数据同步和实时数据同步,具体包括如下步骤:
(1)客户端向主机发生TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;所述测点模型建立完成后,客户端同时向主、备机发送实时数据;
具体来说,客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,这是进行实时数据同步的前提,实时数据在主备机内存中的处理流程一致,实时数据缓冲区满时,形成的实时数据块,该实时数据块的key一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像,这是进行实时数据同步的基础。
(2)主机收到前述实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制sync(同步)到磁盘。对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后更新其实时数据块内存,将具有相同key的实时数据块从内存中清除;
当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树的少量结点缓存在内存中,大部分结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,保证数据的持久存储;再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
(3)当主机故障发生集群失败切换时,备机同步进程将内存中的实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中的实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步,防止了这部分实时数据块由于主机故障导致的丢失。
备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,其处理过程如步骤(2)所述,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
以下将以时序数据库存储毫秒级WAMS数据为例,结合附图对本发明的技术方案进行详细说明。
数据提交客户端首先向主机建立测点模型,模型建立完成后,同时向主、备机发送实时数据,具体步骤如下:
(1)如图1所示,***包括主机rtdb1、备机rtdb2以及客户端client。主机rtdb1运行时序数据库服务进程rtdb_server,备机rtdb2运行同步进程rtdb_sync。开始时,Client向rtdb1发送建点报文(建立后还可以发送修改、删除报文),rtdb1的服务进程rtdb_server接收到建点报文之后执行建点操作,成功后立即向备机发送测点同步报文;建点完成后,client向rtdb1和rtdb2同时发送实时数据,实时数据由若干记录组成,一条记录也称一条事件,由测点id、时间戳(time)、值(value)和质量码(flag)四个属性构成,同一个测点的事件按时间戳递增的顺序发送。
(2)如图2和图3所示,rtdb1的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的同步报文后,判断报文类型,如果是模型数据同步报文,则进行模型数据同步,如果是实时数据同步报文,则遍历待同步实时数据块队列,将已写入磁盘的数据块从内存删除。
(3)如图4所示,当rtdb1发生故障时,集群将执行失败切换,首先向rtdb2的rtdb_sync进程发送退出信号,rtdb_sync在收到信号后将待同步实时数据块队列中的数据块写入磁盘,然后退出;此时rtdb_server进程启动,将rtdb_sync写入磁盘中的数据加载到内存并进行压缩存储,处理完成后继续对客户端提供服务,整个过程对客户端透明,客户端并不知道服务端发生了失败切换,由于在rtdb1发生故障时所丢失的内存数据在rtdb2上有备份,整个切换过程也不会导致数据丢失。当rtdb1故障恢复后,作为备机运行rtdb_sync进程,与rtdb2的rtdb_server进程进行同步。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
Claims (4)
1.一种集群***中的时序库主备机内存同步方法,其特征在于包含如下步骤:
(1)客户端向主机发送TCP报文建立测点模型,主机执行成功后向备机转发模型数据报文;测点模型建立完成后,客户端同时向主、备机发送实时数据;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,实时数据块在主备机内存中的处理流程一致,key一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像;
(2)主机收到实时数据后,依次进行缓冲、压缩及写入文件操作,以实时数据块为操作单位,每个实时数据块具有唯一标示的key;主机将压缩后的实时数据块批量写入红黑树存储结构,并对写入的实时数据块个数进行计数,满足给定的写入次数则强制同步到磁盘;对于已经成功写入磁盘的实时数据块,主机以TCP报文形式将该实时数据块的key发送至备机,备机同步进程收到报文后将具有相同key的实时数据块从内存中清除;
(3)当主机故障发生集群失败切换时,备机同步进程将内存中实时数据块回写到磁盘后退出,并启动服务进程,服务进程将磁盘中实时数据块加载到内存并继续处理;发生故障的主机恢复后,启动同步进程,作为备机与主机进行实时数据块内存同步。
2.如权利要求1所述的一种集群***中的时序库主备机内存同步方法,其特征在于所述步骤(1)还包括如下内容:客户端向主机发送模型数据增删改报文,主机执行相应的操作,执行成功后向备机转发该报文,备机收到报文后执行相应的操作,并向主机返回操作结果;客户端同时向主备机发送实时数据,保证主备机接收到同样的实时数据,实时数据块在主备机内存中的处理流程一致,key一致,保证在任意时刻,备机具有与主机相同的实时数据内存镜像。
3.如权利要求1所述的一种集群***中的时序库主备机内存同步方法,其特征在于所述步骤(2)还包括如下内容:当实时数据缓冲区满时,形成一个实时数据块,对该实时数据块进行压缩,压缩完成后写入相应的红黑树结构,一个已压缩的实时数据块即一个红黑树结点,该红黑树有32Mb结点缓存在内存中,其余结点存储在磁盘上;当满足给定的写入次数时,主机执行同步操作,首先将内存中的结点写入到磁盘,再将已写入磁盘的实时数据块key发送给备机同步进程,同步进程遍历待同步实时数据块队列,删除已经被主机写入磁盘的实时数据块。
4.如权利要求1所述的一种集群***中的时序库主备机内存同步方法,其特征在于所述步骤(3)还包括如下内容:备机同步进程收到退出信号,将待同步实时数据队列中的实时数据块写入临时文件后退出;服务进程启动,首先从临时文件读取并处理尚未成功写入磁盘的实时数据块,处理完后即对客户端提供实时数据块存储服务,备机升为主机;原主机故障恢复后,启动同步进程,作为备机与主机进行模型数据、实时数据块内存同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410413346.4A CN104243554B (zh) | 2014-08-20 | 2014-08-20 | 一种集群***中的时序库主备机内存同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410413346.4A CN104243554B (zh) | 2014-08-20 | 2014-08-20 | 一种集群***中的时序库主备机内存同步方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104243554A CN104243554A (zh) | 2014-12-24 |
CN104243554B true CN104243554B (zh) | 2017-10-20 |
Family
ID=52230883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410413346.4A Active CN104243554B (zh) | 2014-08-20 | 2014-08-20 | 一种集群***中的时序库主备机内存同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104243554B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105160013A (zh) * | 2015-09-24 | 2015-12-16 | 珠海许继芝电网自动化有限公司 | 一种数据采集***的通信报文保存方法 |
CN106294795A (zh) * | 2016-08-15 | 2017-01-04 | 合肥华凌股份有限公司 | 一种数据库切换方法及*** |
CN113434476B (zh) * | 2021-08-26 | 2022-03-01 | 阿里云计算有限公司 | 数据同步方法、装置、设备、***、存储介质及程序产品 |
CN114157528A (zh) * | 2021-11-28 | 2022-03-08 | 浙江中控技术股份有限公司 | 冗余通信方法、***、电子装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102254036A (zh) * | 2011-08-09 | 2011-11-23 | 广东电网公司电力科学研究院 | 时间序列数据库测试方法及测试*** |
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件***访问控制方法及集群节点 |
CN102629906A (zh) * | 2012-03-30 | 2012-08-08 | 浪潮电子信息产业股份有限公司 | 一种将集群管理节点做双机实现提高集群业务可用性的设计办法 |
CN102779138A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 实时数据的硬盘存取方法 |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的***及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008018969A1 (en) * | 2006-08-04 | 2008-02-14 | Parallel Computers Technology, Inc. | Apparatus and method of optimizing database clustering with zero transaction loss |
-
2014
- 2014-08-20 CN CN201410413346.4A patent/CN104243554B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102339283A (zh) * | 2010-07-20 | 2012-02-01 | 中兴通讯股份有限公司 | 集群文件***访问控制方法及集群节点 |
CN102779138A (zh) * | 2011-05-13 | 2012-11-14 | 上海振华重工(集团)股份有限公司 | 实时数据的硬盘存取方法 |
CN102254036A (zh) * | 2011-08-09 | 2011-11-23 | 广东电网公司电力科学研究院 | 时间序列数据库测试方法及测试*** |
CN102629906A (zh) * | 2012-03-30 | 2012-08-08 | 浪潮电子信息产业股份有限公司 | 一种将集群管理节点做双机实现提高集群业务可用性的设计办法 |
CN103647834A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种用于处理多阶段分布式任务调度的***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104243554A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104243554B (zh) | 一种集群***中的时序库主备机内存同步方法 | |
CN108600353A (zh) | 一种区块链节点的并行块同步方法 | |
CN101519078B (zh) | 综合监控***多区域数据同步方法 | |
CN108804523A (zh) | 数据同步方法、***及计算机可读存储介质 | |
CN101316184B (zh) | 容灾切换方法、***、装置 | |
CN105701159B (zh) | 一种数据同步装置和方法 | |
CN103984309B (zh) | 一种具有容灾功能的卷烟生产***及其容灾演练方法 | |
CN107038075B (zh) | 消息队列***以及实现消息通信的方法 | |
CN105721315A (zh) | 一种集中式mac地址学习的控制方法 | |
CN104021200B (zh) | 一种数据库的数据同步方法和装置 | |
CN108845867A (zh) | 一种分布式事务管理方法、装置、***及存储介质 | |
CN102880529A (zh) | 内存数据备份方法及内存数据备份*** | |
CN110119329B (zh) | 数据复制容灾方法及容灾*** | |
CN106484565A (zh) | 多数据中心间的数据同步方法及相关设备 | |
CN101739313A (zh) | 一种连续数据保护和恢复方法 | |
CN103618788A (zh) | 一种支持b/s结构***高可用的方法 | |
CN104750738B (zh) | 一种更新数据信息的方法、数据节点、管理节点及*** | |
CN103905220B (zh) | 数据同步处理方法及*** | |
CN107678883A (zh) | 一种基于存储***的集群恢复方法及设备 | |
CN103209214A (zh) | 一种基于NoSQL的消息中间件的实现方法 | |
CN106302625B (zh) | 数据更新方法、装置及相关*** | |
CN109657000B (zh) | 一种轨道交通综合监控***的实时数据同步方法及装置 | |
CN108306989B (zh) | 一种用于铁路调度集中***的主备机数据同步方法 | |
CN101621535A (zh) | 一种实时监控***网络通讯方法和装置 | |
CN116185697B (zh) | 容器集群管理方法、装置、***、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |