一种数据同步方法及相关装置与流程

文档序号:15980550发布日期:2018-11-17 00:16阅读:151来源:国知局

本发明涉及分布式集群技术领域,更具体地说,涉及一种数据同步方法、集群主节点、集群从节点。

背景技术

分布式系统一般包含多个节点,这些节点组成一个集群,统一对外提供服务。集群管理软件在主节点上通过数据库存储集群的配置信息等内容,鉴于这些配置类型的数据较少,并且读写频率较低,因此只需要一种轻量级的数据库进行存储即可,进而能狗减少管理软件对主节点的系统资源占用。

目前,由于sqlite数据库占用空间小、简单易行的特点,通常采用sqlite作为集群管理软件的数据库。

但是由于分布式集群管理软件需要在其他节点备份主节点的数据库内容,以便主节点出现宕机,管理软件发生主备切换后,数据信息不丢失,实现灾备等功能。而sqlite作为一个单文件数据库,没有提供在多节点见进行数据同步的功能。

因此,如何在使用sqlite数据库时实现主节点与从节点之间的数据同步,是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于提供一种数据同步方法、集群主节点、集群从节点,以解决如何在使用sqlite数据库时实现主节点与从节点之间的数据同步的问题。

为实现上述目的,本发明实施例提供了如下技术方案:

一种数据同步方法,应用于集群主节点,包括:

利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录;

将所述消息记录发送至消息队列;

利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述集群从节点的数据库信息。

其中,所述sql语句对应的数据持久化与包括所述sql语句的消息记录生成在一个数据库事务中。

其中,所述将所述消息记录发送至消息队列,包括:

利用消息发布模块接收与所述消息记录对应的变更通知后,将所述消息记录发送至所述消息队列;其中,所述变更通知为生成所述消息记录时,向所述消息发布模块发送的通知。

其中,还包括:

间隔第一预设时间扫描消息列表;其中,所述消息列表为,生成包括每个sql语句的消息记录时,保存对应的消息记录的列表;

在所述消息列表中确定未发送到所述消息队列的消息记录,作为待发送记录;

将所述待发送记录发送至所述消息队列。

其中,所述利用所述消息队列将所述消息记录发送至集群从节点之后,还包括:

利用所述消息队列将所述消息记录发送至集群从节点之后第二预设时间内,判断是否接收到所述集群从节点发送的确认信息;

若是,则将所述消息记录在所述消息队列中删除;

若否,则重新利用所述消息队列将所述消息记录发送至所述集群从节点。

为解决上述技术问题,本申请还提供了一种数据同步方法,应用于集群从节点,包括:

接收由集群主节点的消息队列发送的消息记录;其中,所述消息记录为,所述集群主节点利用sql语句更新数据库信息时,生成的包括所述sql语句的消息记录;

利用所述消息记录中的sql语句同步更新数据库信息。

其中,所述消息记录包括:

sql语句、与所述sql语句对应的标识信息。

其中,所述利用所述消息记录中的sql语句同步更新数据库信息,包括:

利用所述消息记录中的sql语句对应的标识信息确定所述消息记录中的sql语句是否为已被处理过的sql语句;

若是,则将所述消息记录丢弃,向所述集群主节点返回确认信息;

若否,则利用所述消息记录中的sql语句同步更新数据库信息,并向所述集群主节点返回确认信息。

为解决上述技术问题,本申请还提供了一种集群主节点系统,包括:

消息记录生成模块,用于利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录;

第一发送模块,用于将所述消息记录发送至消息队列;

第二发送模块,用于利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述从节点的数据库信息。

为解决上述技术问题,本申请还提供了一种集群从节点系统,包括:

接收模块,用于接收由集群主节点的消息队列发送的消息记录;其中,所述消息记录为,所述集群主节点利用sql语句更新数据库信息时,生成的包括所述sql语句的消息记录;

更新模块,用于利用所述消息记录中的sql语句同步更新数据库信息。

通过以上方案可知,本申请提供的一种数据同步方法,应用于集群主节点,包括:利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录;将所述消息记录发送至消息队列;利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述集群从节点的数据库信息。

由此可见,本申请提供的一种数据同步方法,可以在利用sql语句更新数据信息时,将sql语句生成消息记录,并将消息记录利用消息队列发送到从节点,是从节点按照该sql语句同步更新自己的数据库,从而使主节点的数据更新与从节点的数据更新可以达到内容同步。此外,由于使用消息队列来传递消息记录,可以屏蔽地层通信协议的复杂性,更方便有效的实现主节点与从节点数据的同步。

本申请还提供了一种应用于集群从节点的数据同步方法、集群主节点系统、集群从节点系统,同样可以实现上述技术效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种应用于集群主节点的数据同步方法流程图;

图2为本发明实施例公开的一种具体的应用于集群主节点的数据同步方法流程图;

图3为本发明实施例公开的一种集群主节点系统结构示意图;

图4为本发明实施例公开的一种具体的集群主节点系统结构示意图;

图5为本发明实施例公开的一种集群主节点结构示意图;

图6为本发明实施例公开的一种应用于集群从节点的数据同步方法流程图;

图7为本发明实施例公开的一种集群从节点系统结构示意图;

图8为本发明实施例公开的一种集群从节点结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种数据同步方法、集群主节点、集群从节点,以解决如何在使用sqlite数据库时实现主节点与从节点之间的数据同步的问题。

参见图1,本发明实施例提供的一种数据同步方法,应用于集群主节点,具体包括:

s101,利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录。

具体地,集群主节点在使用sqlite数据库管理集群的配置信息等内容时,会利用sql语句更新数据库信息,例如,增加、修改、删除某一个数据表中的某一项配置信息数据。

在本方案中,在集群主节点利用sql语句更新数据库信息的同时,生成一条消息记录,该消息记录用来记录此次更新操作的sql语句。

在一个优选实施方式中,将利用sql语句更新数据库的数据持久化和生成对应的消息记录的操作,生成在一个数据库事务中。

需要说明的是,数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、xml、二进制流等。也就是说,数据持久化就是完成sql语句的更新操作。

数据库事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。因此,本方案中,将数据持久化与生成消息记录的操作放在一个数据库事务中,可以使这两个操作同时完成成功,或者同时完成失败。确保在数据库更新操作完成时,对应的消息记录也一并完成了,方便了对消息记录的管理,同时也保证了消息记录的生成。

在上述数据库事务完成后,即可向上层(例如用户界面)返回操作成功的提示,而此时,可以将消息记录的状态修改为未发送状态,未发送是指该消息记录还没有发送到消息队列。

s102,将所述消息记录发送至消息队列。

具体地,将包括sql语句的消息记录发送到消息队列(messagequeue)。消息队列是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(消息记录)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。

在本方案中,将消息记录添加到消息队列,以利用消息队列向从节点传输消息记录,从而可以屏蔽地层通信协议的复杂性,更好的专注于同步功能的实现。

s103,利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述集群从节点的数据库信息。

具体地,利用消息队列,将消息记录发送到集群从节点。集群从节点在收到消息记录后,会确定其中的sql语句,并利用sql语句对从节点的数据库信息进行更新,是从节点的数据与主节点的数据实现同步更新。

由此可见,本申请实施例提供的一种数据同步方法,可以在利用sql语句更新数据信息时,将sql语句生成消息记录,并将消息记录利用消息队列发送到从节点,是从节点按照该sql语句同步更新自己的数据库,从而使主节点的数据更新与从节点的数据更新可以达到内容同步。此外,由于使用消息队列来传递消息记录,可以屏蔽地层通信协议的复杂性,更方便有效的实现主节点与从节点数据的同步。

下面对本申请实施例提供的一种具体的数据同步方法进行介绍,下文描述的一种具体的数据同步方法,与上述实施例可以相互参照。本申请实施例对上述实施例中s102做了进一步的限定和说明。

参见图2,本申请实施例提供的一种具体的数据同步方法,具体包括:

s201,利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录。

具体的,s201与上述实施例中s101的内容基本相同,具体可以参考上述实施例s101的内容,此处不再赘述。

s202,利用消息发布模块接收与所述消息记录对应的变更通知后,将所述消息记录发送至所述消息队列;其中,所述变更通知为生成所述消息记录时,向所述消息发布模块发送的通知。

当生成了上述消息记录时,就会向消息发布模块发送变更通知,这个变更通知与消息记录对应,此时消息发布模块会根据接收到的变更通知发送对应的消息记录至消息队列。

在本实施方式中由于是在消息记录生成时就会发送变更通知,通知消息发布模块进行消息发布,因此,可以在消息记录生成时就立即完成发送操作。

s203,利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述集群从节点的数据库信息。

作为一种优选的实施方式,在利用消息队列将消息记录发送至集群从节点之后,还包括:

利用所述消息队列将所述消息记录发送至集群从节点之后第二预设时间内,判断是否接收到所述集群从节点发送的确认信息;

若是,则将所述消息记录在所述消息队列中删除;

若否,则重新利用所述消息队列将所述消息记录发送至所述集群从节点。

需要说明的是,为了确保消息记录的成功发送,集群从节点在接收到消息记录时,会向集群主节点返回确认信息。主节点在接收到确认信息时,则可以确定集群从节点已成功接收到消息记录,因此,为了节省资源,可以将该消息记录从消息队列中删除。而如果在预设时间内没有收到由从节点发送的确认信息,则说明此条消息记录发送失败,因此需要重新发送,即利用消息队列将该条消息记录从新发送到集群从节点。

s204,间隔第一预设时间扫描消息列表;其中,所述消息列表为,生成包括每个sql语句的消息记录时,保存对应的消息记录的列表。

在s203中,向消息队列发送消息记录是通过接收变更通知进行的,为了进一步确保消息记录没有漏发,即避免通知发送方发送失败、接收方接收失败等情况造成消息记录生成后没有发送到消息队列的情况,在本步骤中,预设一个定时扫描线程,间隔预设时间扫描消息列表,将消息列表中没有发送道消息队列的消息记录发送到消息队列。其中,消息记录在生成时即会被添加到消息列表中。

需要说明的是,由于本方案中发送消息记录到消息列表的操作主要是以接收到变更通知进行,而不是靠定时扫描线程来完成,定时扫描线程只是在此基础上进一步确保没有消息记录漏发的情况发生,因此,扫描间隔的第一预设时间可以相对设置较长,避免资源浪费,具体的时长可以根据实际情况设定,此处不做具体限定。

s205,在所述消息列表中确定未发送到所述消息队列的消息记录,作为待发送记录。

s206,将所述待发送记录发送至所述消息队列。

下面对本申请实施例提供的一种集群主节点系统进行介绍,下文描述的一种集群主节点系统,与上述方法实施例可以相互参照。

参见图3,本申请实施例提供的一种集群主节点系统,具体包括:

消息记录生成模块301,用于利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录。

作为优选的,所述sql语句对应的数据持久化与包括所述sql语句的消息记录生成在一个数据库事务中。

第一发送模块302,用于将所述消息记录发送至消息队列。

第二发送模块303,用于利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述从节点的数据库信息。

本实施例的集群主节点系统用于实现前述的应用于集群主节点的数据同步方法,因此集群主节点系统中的具体实施方式可见前文中的数据同步方法的实施例部分,例如,消息记录生成模块301,第一发送模块302,第二发送模块303,分别用于实现上述数据同步方法中步骤s101,s102,s103所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

下面对本申请实施例提供的一种具体的集群主节点系统进行介绍,下文描述的一种具体的集群主节点系统与上文描述的任意实施例可以相互参照。

参见图4,本申请实施例提供的一种具体的集群主节点系统,具体包括:

消息记录生成模块301,用于利用sql语句更新数据库信息时,生成包括所述sql语句的消息记录。

作为优选的,所述sql语句对应的数据持久化与包括所述sql语句的消息记录生成在一个数据库事务中。

第一发送模块302,用于将所述消息记录发送至消息队列。

在本方案中,第一发送模块302具体用于利用消息发布模块接收与所述消息记录对应的变更通知后,将所述消息记录发送至所述消息队列;其中,所述变更通知为生成所述消息记录时,向所述消息发布模块发送的通知。

当生成了上述消息记录时,就会向第一发送模块302(消息发布模块)发送变更通知,这个变更通知与消息记录对应,此时第一发送模块302会根据接收到的变更通知发送对应的消息记录至消息队列。

在本实施方式中由于是在消息记录生成时就会发送变更通知,通知第一发送模块302进行消息发布,因此,可以在消息记录生成时就立即完成发送操作。

第二发送模块303,用于利用所述消息队列将所述消息记录发送至集群从节点;其中,所述集群从节点用于在所述消息记录中确定所述sql语句,并利用所述sql语句同步更新所述从节点的数据库信息。

在本方案中,还包括:

判断模块401,用于利用所述消息队列将所述消息记录发送至集群从节点之后第二预设时间内,判断是否接收到所述集群从节点发送的确认信息。

删除模块402,用于当接收到所述集群从节点发送的确认信息时,将所述消息记录在所述消息队列中删除。

重新发送模块403,用于当未接收到所述集群从节点发送的确认信息时,重新利用所述消息队列将所述消息记录发送至所述集群从节点。

需要说明的是,为了确保消息记录的成功发送,集群从节点在接收到消息记录时,会向集群主节点返回确认信息。主节点在接收到确认信息时,则可以确定集群从节点已成功接收到消息记录,因此,为了节省资源,删除模块402可以将该消息记录从消息队列中删除。而如果在预设时间内没有收到由从节点发送的确认信息,则说明此条消息记录发送失败,因此需要重新发送模块403重新发送,即利用消息队列将该条消息记录从新发送到集群从节点。

扫描模块404,用于间隔第一预设时间扫描消息列表;其中,所述消息列表为,生成包括每个sql语句的消息记录时,保存对应的消息记录的列表。

确定模块405,用于在所述消息列表中确定未发送到所述消息队列的消息记录,作为待发送记录。

第三发送模块406,用于将所述待发送记录发送至所述消息队列。

向消息队列发送消息记录是通过接收变更通知进行的,为了进一步确保消息记录没有漏发,即避免通知发送方发送失败、接收方接收失败等情况造成消息记录生成后没有发送到消息队列的情况,在本方案中,扫描模块404间隔预设时间扫描消息列表,确定模块405在消息列表中确定没有发送到所述消息队列的消息记录,作为待发送记录。第三发送模块406将消息列表中没有发送道消息队列的消息记录发送到消息队列。其中,消息记录在生成时即会被添加到消息列表中。

需要说明的是,由于本方案中发送消息记录到消息列表的操作主要是以接收到变更通知进行,而不是靠定时扫描线程来完成,定时扫描线程只是在此基础上进一步确保没有消息记录漏发的情况发生,因此,扫描间隔的第一预设时间可以相对设置较长,避免资源浪费,具体的时长可以根据实际情况设定,此处不做具体限定。

下面对本申请实施例提供的一种数据同步装置进行介绍,下文描述的一种数据同步装置与上述实施例可以相互参照。

参见图5,本申请实施例提供的一种数据同步装置,具体可以作为集群主节点,具体包括:

第一存储器501,用于存储计算机程序;

第一处理器502,用于执行所述计算机程序时可以实现上述应用于集群主节点的数据同步方法的步骤。

具体的,第一存储器501包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。第一处理器502为数据采集设备提供计算和控制能力,可以实现上述任一应用于集群主节点的数据同步方法实施例所提供的步骤。

在上述实施例的基础上,作为优选实施方式,所述集群主节点还包括:

第一输入接口503,用于获取外部导入的计算机程序、参数和指令,经处理器控制保存至存储器中。该第一输入接口503可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。具体的,在本实施例中,用户可以通过第一输入接口503手动选择第一预设时间、第二预设时间等。

第一显示单元504,用于显示处理器发送的数据。该第一显示单元504可以为pc机上的显示屏、液晶显示屏或者电子墨水显示屏等。具体的,在本实施例中,第一显示单元504可以显示集群主节点的消息队列、消息记录、发送情况等信息。

第一网络端口505,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。具体地,在本实施例中,该第一网络端口505与集群从节点建立连接,使消息队列可以利用网络端口与从节点的应用进行通信。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

下面对本申请提供的一种应用于集群从节点的数据同步方法进行介绍,下文描述的一种数据同步方法与上述实施例可以相互参照。

参见图6,本申请实施例提供的一种数据同步方法,具体包括:

s601,接收由集群主节点的消息队列发送的消息记录;其中,所述消息记录为,所述集群主节点利用sql语句更新数据库信息时,生成的包括所述sql语句的消息记录。

其中,消息记录包括sql语句、与所述sql语句对应的标识信息。标识信息可以为id号、主节点ip、时间等。

s602,利用所述消息记录中的sql语句同步更新数据库信息。

在一个优选实施方式中,利用所述消息记录中的sql语句对应的标识信息确定所述消息记录中的sql语句是否为已被处理过的sql语句;若是,则将所述消息记录丢弃,向所述集群主节点返回确认信息;若否,则利用所述消息记录中的sql语句同步更新数据库信息,并向所述集群主节点返回确认信息。

下面对本申请实施例提供的一种集群从节点系统进行介绍,下文描述的一种集群从节点系统与上述任意实施例可以相互参照。

参见图7,本申请实施例提供的一种集群从节点系统,具体包括:

接收模块701,用于接收由集群主节点的消息队列发送的消息记录;其中,所述消息记录为,所述集群主节点利用sql语句更新数据库信息时,生成的包括所述sql语句的消息记录。

更新模块702,用于利用所述消息记录中的sql语句同步更新数据库信息。

本实施例的集群从节点系统用于实现前述的应用于集群从节点的数据同步方法,因此集群从节点系统中的具体实施方式可见前文中的数据同步方法的实施例部分,例如,接收模块701,更新模块702,分别用于实现上述数据同步方法中步骤s601,s602,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

下面对本申请实施例提供的一种数据同步装置进行介绍,下文描述的一种数据同步装置与上述实施例可以相互参照。

参见图8,本申请实施例提供的一种数据同步装置,具体可以作为集群从节点,具体包括:

第二存储器801,用于存储计算机程序;

第二处理器802,用于执行所述计算机程序时可以实现上述应用于集群主节点的数据同步方法的步骤。

具体的,第一存储器802包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机可读指令,该内存储器为非易失性存储介质中的操作系统和计算机可读指令的运行提供环境。第一处理器802为数据采集设备提供计算和控制能力,可以实现上述任一应用于集群从节点的数据同步方法实施例所提供的步骤。

在上述实施例的基础上,作为优选实施方式,所述集群主节点还包括:

第二输入接口803,用于获取外部导入的计算机程序、参数和指令,经处理器控制保存至存储器中。该第二输入接口803可以与输入装置相连,接收用户手动输入的参数或指令。该输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是键盘、触控板或鼠标等。

第二显示单元804,用于显示处理器发送的数据。该第二显示单元804可以为pc机上的显示屏、液晶显示屏或者电子墨水显示屏等。

第二网络端口805,用于与外部各终端设备进行通信连接。该通信连接所采用的通信技术可以为有线通信技术或无线通信技术,如移动高清链接技术(mhl)、通用串行总线(usb)、高清多媒体接口(hdmi)、无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术等。具体地,在本实施例中,该第二网络端口805与集群主节点建立连接,使消息队列可以利用网络端口与从节点的应用进行通信。

本申请还提供了另一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时可以实现上述应用于集群从节点的数据同步方法实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1