本发明涉及集群的数据处理领域,具体而言,涉及一种数据同步方法、装置、电子设备和计算机可读存储介质。
背景技术:
域名系统(domainnamesystem,dns)一般存在主-从服务器,主服务器(master)从其主机上的文件中读取区域数据,而从服务器(slave)从该区域的权威名称服务器(通常为主服务器)上读取区域数据,也可从其他辅名称服务器上加载区域数据。在搭建权威dns中,域名数据同步是至关重要的,目前的方案一般是在master-slave的两者之间数据以区域文件(zone)的形式进行域名数据同步。
在目前的技术方案中,一种实现dns中域名数据同步的方式是使用bind来实现dns中master-slave之间的域名数据同步,slave通过对比master中的zone文件序列号,加载最新的数据到slave中;但是,每一个slave都会在master上生成全部的zone数据,只能实现域名数据的全量同步,需要耗费较多的时间。因此,本领域技术人员采用了一种bind mysql的数据同步方法,master、slave均从mysql数据库获取数据,并进行域名数据同步;然而,当slave需要使用厂商的云主机进行部署,且slave对mysql数据库中的数据进行修改时,master无法有效的实时管理mysql数据库中的数据,master和slave中的数据可能不一致,容易导致分布式系统的数据紊乱。因此,如何有效实现权威dns的数据同步是目前亟待解决的问题。
技术实现要素:
有鉴于此,本发明的目的在于提供一种数据同步方法、装置、电子设备和计算机可读存储介质。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种数据同步方法,应用于集群的主节点,所述集群还设置有数据库和至少一个从节点,所述主节点和所述数据库、所述从节点分别通信连接,所述主节点中存储有所述集群中所有节点的地址信息。所述方法包括:当所述主节点获取到域名数据同步请求时,从所述数据库中获取与所述域名数据同步请求对应的待同步域名数据;所述待同步域名数据为所述数据库中用于指示所述所有节点的域名配置的有效数据。根据所述待同步域名数据和所述地址信息,生成所述主节点中的至少一个区域文件;所述区域文件包括所述有效数据和所述有效数据对应的节点的地址信息。发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件;所述增量数据为所述主节点与所述从节点中的差异区域文件。
在可选的实施方式中,所述发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件,包括:将所述主节点中的每个所述区域文件拆分为至少一个区域文件块。将每个所述区域文件块的校验信息发送至所述地址信息对应的所有从节点;所述校验信息包括所述区域文件块的文件块标识和滚动校验信息,所述文件块标识用于确定所述区域文件块所属的区域文件。接收第一从节点依据所述校验信息发送的差异区域文件块标识;所述第一从节点为所述所有从节点中的任一从节点,所述差异区域文件块标识为所述第一从节点依据所述滚动校验信息,校验所述第一从节点中的区域文件得到的。根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据。将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
在可选的实施方式中,所述根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据,包括:根据所述差异区域文件块标识对应的差异区域文件,生成与所述第一从节点的版本信息一致的增量数据。
在可选的实施方式中,所述主节点中的每个区域文件都具有序列号,所述根据所述差异区域文件块标识对应的差异区域文件,生成与所述第一从节点的版本信息一致的增量数据,包括:将所述差异区域文件块标识与所述序列号匹配,从所述主节点中的所有所述区域文件中确定所述差异区域文件;根据所述差异区域文件和所述版本信息,生成所述增量数据。
在可选的实施方式中,所述第一从节点部署在云端,所述云端上包括多个从节点。所述将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件,包括:发送所述增量数据至所述云端,以使所述云端确定所述多个从节点中的第一从节点,所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
第二方面,本发明提供一种数据同步装置,应用于集群的主节点,所述集群还设置有数据库和至少一个从节点,所述主节点和所述数据库、所述从节点分别通信连接,所述主节点中存储有所述集群中所有节点的地址信息。所述装置包括:通信模块和处理模块。所述通信模块用于当所述主节点获取到域名数据同步请求时,从所述数据库中获取与所述域名数据同步请求对应的待同步域名数据;所述待同步域名数据为所述数据库中用于指示所述所有节点的域名配置的有效数据。所述处理模块用于根据所述待同步域名数据和所述地址信息,生成所述主节点中的至少一个区域文件;所述区域文件包括所述有效数据和所述有效数据对应的节点的地址信息。所述通信模块还用于发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件;所述增量数据为所述主节点与所述从节点中的差异区域文件。
在可选的实施方式中,所述处理模块还用于将所述主节点中的每个所述区域文件拆分为至少一个区域文件块。所述处理模块还用于将每个所述区域文件块的校验信息发送至所述地址信息对应的所有从节点;所述校验信息包括所述区域文件块的文件块标识和滚动校验信息,所述文件块标识用于确定所述区域文件块所属的区域文件。所述通信模块还用于接收第一从节点依据所述校验信息发送的差异区域文件块标识;所述第一从节点为所述所有从节点中的任一从节点,所述差异区域文件块标识为所述第一从节点依据所述滚动校验信息,校验所述第一从节点中的区域文件得到的。所述处理模块还用于根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据。所述通信模块还用于将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
在可选的实施方式中,所述处理模块还用于根据所述差异区域文件块标识对应的差异区域文件,生成与所述第一从节点的版本信息一致的增量数据。
在可选的实施方式中,所述主节点中的每个区域文件都具有序列号;所述处理模块还用于将所述差异区域文件块标识与所述序列号匹配,从所述主节点中的所有所述区域文件中确定所述差异区域文件。所述处理模块还用于根据所述差异区域文件和所述版本信息,生成所述增量数据。
在可选的实施方式中,所述第一从节点部署在云端,所述云端上包括多个从节点。所述通信模块还用于发送所述增量数据至所述云端,以使所述云端确定所述多个从节点中的第一从节点,所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
第三方面,本发明提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现前述实施方式任一所述的方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述实施方式中任一项所述的方法。
相较于现有技术,本发明提供一种数据同步方法、装置、电子设备和计算机可读存储介质,涉及集群的数据处理领域。该数据同步方法应用于集群的主节点,所述集群还设置有数据库和至少一个从节点,所述主节点和所述数据库、所述从节点分别通信连接,所述主节点中存储有所述集群中所有节点的地址信息,所述方法包括:当所述主节点获取到域名数据同步请求时,从所述数据库中获取与所述域名数据同步请求对应的待同步域名数据;所述待同步域名数据为所述数据库中用于指示所述所有节点的域名配置的有效数据;根据所述待同步域名数据和所述地址信息,生成所述主节点中的至少一个区域文件;所述区域文件包括所述有效数据和所述有效数据对应的节点的地址信息;发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件;所述增量数据为所述主节点与所述从节点中的差异区域文件。主节点和数据库进行域名数据的同步,相较于bind方案,避免主节点直接修改区域文件出错;从节点依据主节点中的增量数据实现区域文件的更新,进而实现域名数据的增量同步,相较于bind mysql方案,避免域名数据同步时需要全量更新,减少了域名数据同步的时间,提高了集群的数据处理效率。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为一种域名数据同步的示意图;
图2为另一种域名数据同步的示意图;
图3为本发明实施例提供的一种集群的示意图;
图4为本发明实施例提供的一种数据同步方法的流程示意图;
图5为本发明实施例提供的另一种数据同步方法的流程示意图;
图6为本发明实施例提供的另一种数据同步方法的流程示意图;
图7为本发明实施例提供的另一种数据同步方法的流程示意图;
图8为本发明实施例提供的另一种数据同步方法的流程示意图;
图9为本发明实施例提供的另一种集群的示意图;
图10为本发明实施例提供的另一种集群的示意图;
图11为本发明实施例提供的一种数据同步装置的方框示意图;
图12为本发明实施例提供的一种电子设备的方框示意图。
图标:20-数据库,21-主节点,22-从节点,40-数据同步装置,41-通信模块,42-处理模块,60-电子设备,61-存储器,62-处理器,63-通信接口,x20-备用数据库,x21-备用主节点。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
域名系统一般存在主-从服务器,主服务器(master)从其主机上的文件中读取区域数据,而从服务器(slave)从该区域的权威名称服务器(通常为主服务器)上读取区域数据,也可从其他辅名称服务器上加载区域数据。在搭建权威dns中,域名数据同步是至关重要的,目前的方案一般是在master-slave的两者之间数据以区域文件(zone)的形式进行域名数据同步。
对于上述的区域文件(zone),例如,其为一个区域内的数据,包括主机名和主机对应的互联网协议(internetprotocol,ip)地址、刷新间隔和过期事件等,这些数据均需要存储在dns服务器内,而用来存放上述数据的文件就成为区域文件(zone)。
目前一般有两种方案来实现域名数据的同步,一种是使用bind来实现dns中master-slave之间的域名数据同步,请参见图1,图1为一种域名数据同步的示意图。例如,在linux操作系统下,一般使用图1示出的结构来实现master-slave之间的域名数据同步,slave通过对比master中的zone文件序列号,加载最新的数据到slave中。
请继续参见图1,bind方案使用zonetransfer来实现域名数据的全量传送,应理解,每一个slave都会在master上生成全部的zone数据,只能实现域名数据的全量同步,需要耗费较多的时间。其中,zonetransfer指的是一台备用服务器使用来自主服务器的数据刷新备用服务器自身的域名数据。
另外,bind方案在需要修改或增加dns记录时,是直接在zone文件上进行修改的,数据更新时容易出现错误,而且不利于用户对域名数据进行管理。
基于bind方案存在的问题,本领域技术人员采用了一种bind mysql的数据同步方法,请参见图2,图2为另一种域名数据同步的示意图。master、slave均定期从mysql数据库获取数据,并进行域名数据同步;应理解,每个master或slave都是从mysql数据库中获取的全部的域名数据,不能实现域名数据的增量传输。
另外,当slave需要使用厂商的云主机进行部署,且slave对mysql数据库中的数据进行修改时,master无法有效的实时管理mysql数据库中的数据,master和slave中的数据可能不一致,容易导致分布式系统的数据紊乱。
基于上述的问题和背景技术提出的不足,本发明实施例提供一种数据同步方法,该数据同步方法应用于集群的主节点,对于该集群和主节点,请参见图3,图3为本发明实施例提供的一种集群的示意图。该集群包括数据库20、主节点21和至少一个从节点22,主节点21和数据库20、从节点22分别通信连接。
应理解,主节点21中可以存储有集群中所有节点的地址信息(ip地址),例如,这些地址信息可以是在部署集群时,通过配置文件就已经配置好的,还可以是在集群中新增节点时,新增的地址信息;应理解,为了保证集群的稳定运行,该主节点中应至少包括集群中当前存在的所有节点的地址信息(ip地址)。
为了保证数据的安全性,上述的主节点21可以部署在自建的核心机房中,该核心机房在进行初期建设中将电信、移动、联通等线路都接入到机房中,然后在通过边界网关协议(bordergatewayprotocol,bgp)互联技术将不同的线路进行融合;主节点21部署在自建机房中,数据库中的域名数据仅可由主节点21进行修改,避免从节点22对数据库进行修改,以实现对集群数据的控制。
下面在图3示出的主节点21的基础上,本发明实施例提供一种数据同步方法,请参见图4,图4为本发明实施例提供的一种数据同步方法的流程示意图。该数据同步方法可以包括:
s31、当主节点获取到域名数据同步请求时,从数据库中获取与域名数据同步请求对应的待同步域名数据。
该待同步域名数据为数据库中用于指示所有节点的域名配置的有效数据。应理解,数据库中可以存储多种类型的数据,每个数据可能在不同的集群状态下使用,为了确定指示域名配置的数据是否有效,可以通过设置一个状态标识,主节点通过该状态标识来判断待同步域名数据是否是当前需要的;例如,该状态标识可以是通过“status”来确定,“1”为有效,“0”为无效。应理解,上述仅为本发明实施例的一种可能实现方式,不应视为对本发明的限定。
s32、根据待同步域名数据和地址信息,生成主节点中的至少一个区域文件。
该区域文件包括有效数据和有效数据对应的节点的地址信息。应理解,主节点中区域文件的数目与待同步域名数据的大小有关。
可以预见的,当主节点中已经存在与生成的区域文件相同的区域文件时,可以对主节点中原有的区域文件进行覆盖,还可以是删除原有的区域文件,也可以是丢弃新生成的区域文件等;需要注意的是,主节点只需要保存一份描述相同域名配置的区域文件,即可满足集群需要。
s33、发送域名数据同步指令至地址信息对应的从节点,以使从节点根据主节点中的增量数据更新从节点中的区域文件。
该增量数据为主节点与从节点中的差异区域文件。
主节点和数据库进行域名数据的同步,相较于bind方案,避免主节点直接修改区域文件出错。
从节点依据主节点中的增量数据实现区域文件的更新,进而实现域名数据的增量同步,相较于bind mysql方案,避免域名数据同步时需要全量更新,减少了域名数据同步的时间,提高了集群的数据处理效率。另外,主节点部署在自建机房中,还可以解决bind mysql方案中,实现域名数据同步大致的数据无法可控的问题。
假如需要对两个文件进行同步,使其保持一致,并且只想传输不同的部分,目前采用的技术方案是将两侧的文件做diff,当两个文件在不同的机器或节点上时,无法对两个文件做diff,需要将其中一个文件传输到另一个节点或机器上,但这样的话,就需要传送两个文件中的至少一个完整文件,和只想传输不同的部分的初衷背道而驰,为了解决上述问题,在图4的基础上,给出一种可能的实现方式,请参见图5,图5为本发明实施例提供的另一种数据同步方法的流程示意图。上述的s33可以包括:
s331、将主节点中的每个区域文件拆分为至少一个区域文件块。
例如,将每个区域文件(zone文件)平均切分为若干个区域文件块,比如每个区域文件块是一个256字节的数据;应理解,还可以将zone文件切分为不等的多个区域文件块。
s332、将每个区域文件块的校验信息发送至地址信息对应的所有从节点。
该校验信息包括区域文件块的文件块标识和滚动校验信息,文件块标识用于确定区域文件块所属的区域文件。例如,当主节点中具有多个区域文件时,该文件块标识可以用于确定区域文件块属于哪一个区域文件;该文件块标识还可以用于鉴别区域文件块的不同,如两个区域文件块是属于同一区域文件的不同块,也可以通过该文件块标识进行区分。
s333、接收第一从节点依据校验信息发送的差异区域文件块标识。
该第一从节点为所有从节点中的任一从节点,差异区域文件块标识为第一从节点依据滚动校验信息,校验第一从节点中的区域文件得到的。
s334、根据差异区域文件块标识对应的差异区域文件,生成增量数据。
例如,主节点中生成了三个区域文件,而从节点中只有一个区域文件(该区域文件与主节点中的其中一个区域文件相同),则该增量数据包括了主节点中与从节点中不同的两个区域文件。
s335、将增量数据发送至第一从节点,以使第一从节点根据增量数据更新第一从节点中的区域文件。
可以理解的,通过将校验信息发送到从节点中,而不用发送全部的区域文件,实现主节点与从节点之间的域名数据的增量更新,有效的减少了域名数据同步时的传输时间。
为了便于理解上述的校验信息和增量数据,以主节点和从节点之间部署有远程数据同步工具(remotesynchronize,rsync)为例,将主节点中的至少区域文件命名为同步源文件(filesrc),将从节点中的区域文件命名为同步目的文件(filedst)。
首先,将filedst平均切分成若干个小块(区域文件块),比如每块512个字节(最后一个区域文件块可能会小于512字节),然后对每个区域文件块计算两个校验和(checksum),分别为弱checksum(或称为滚动校验信息、rollingchecksum)和强checksum。
下述以rollingchecksum是32位的checksum、强checksum是128位的“md5checksum”为例进行说明:主节点将filesst的checksum列表(校验信息)发送给从节点,这个checksum列表(校验信息)包括rollingchecksum(32bits),md5checksum(128bits),文件块标识。
从节点获取到该checksum列表后,对filedst进行和主节点中相同的操作,将从节点得到的checksum列表和主节点得到的checksum列表进行比对,就可以识别到不同的区域文件块了,进而将差异文件块标识发送到主节点,由主节点将对应的增量数据发送到从节点,以实现从节点中域名数据的增量更新。
需要注意的是,当集群出现故障或是接收到用户的域名数据不同步指令时,主节点还可以主动切断与从节点相关的域名数据同步线路,防止非法分子通过从节点修改集群中各个节点的域名数据。
在集群中,每个节点中的数据均具有版本好,当需要修改或更新节点中的数据时,需要使用数据版本好来实现新数据的成功提交,下面以图3示出的主节点21和从节点22为例,在图5的基础上,给出一种可能的实现方式,请参见图6,图6为本发明实施例提供的另一种数据同步方法的流程示意图。
上述的s334可以包括:
s334a、根据差异区域文件块标识对应的差异区域文件,生成与第一从节点的版本信息一致的增量数据。
例如,当需要修改从节点的区域文件之前,从节点会判断接收到的增量数据与当前版本号是否一致,如果此时接收到的增量数据的版本信息和从节点中的版本信息一致则说明该数据在传输中没有被修改过,数据提交就会成功。可以理解的,通过版本信息的匹配来实现增量数据的准确传输,有利于保证集群的域名数据同步的准确性。
在可选的实施方式中,主节点中可能具有多个区域文件,如何确定哪些区域文件是从节点所需要的,以便减少增量数据的传输量,提高集群的数据同步效率,在图6的基础上,以主节点中的每个区域文件都具有序列号为例,请参见图7,图7为本发明实施例提供的另一种数据同步方法的流程示意图。
上述的s334a可以包括:
s334a1、将差异区域文件块标识与序列号匹配,从主节点中的所有区域文件中确定差异区域文件。
s334a2、根据差异区域文件和版本信息,生成增量数据。
例如,zone文件里面具有起始授权机构(startofauthority,soa)的资源记录,soa记录描述了域名的管理员、电子邮件地址和一些时间参数,每个zone文件都有自己的名称和编号(序列号),将差异区域文件块标识与zone文件的名称或编号(序列号)进行匹配,当主节点中具有多个区域文件时,以便确认将哪些区域文件生成增量数据,避免域名数据的全量传输,减少集群的数据传输量。
在可选的实施方式中,多个从节点可能部署在同一个服务器或云端上,在图5的基础上,以第一从节点部署在云端,云端上包括多个从节点为例,请参见图8,图8为本发明实施例提供的另一种数据同步方法的流程示意图。
上述的s335可以包括:
s335a、发送增量数据至云端,以使云端确定多个从节点中的第一从节点,第一从节点根据增量数据更新第一从节点中的区域文件。
应理解,云端上可以部署负载均衡机制和防分布式拒绝服务攻击(distributeddenialofservice,ddos)相关的安全包,以便提高云端的安全性;其中,ddos攻击是利用协议规律,通过占用协议栈资源或者发起大流量拥塞,以达到消耗目标及其性能或网络为目的的攻击。例如,使用部署有负载均衡机制和防ddos包的云端来部署从节点,以便实现权威dns解析,则集群的对外接口可以为云端的接口,可以避免自建机房或边缘机房直接对外提供dns服务的这一问题,提高集群的安全性。
应理解,图3示出的从节点22可以部署在多个云上,请参见图9,图9为本发明实施例提供的另一种集群的示意图,多个从节点22可以分别部署在第一云、第二云上。应理解,用户可以通过混合云的方式实现权威dns解析,对外接口(即用户连接集群的接口)可以是第一云或第二云的接口;另外,集群使用多个云来部署从节点,提供对外服务,当其中一个云出现问题或故障时,其它云上的从节点依旧可以实现集群对外提供服务的功能,实现了集群的高可用。
可以预见的,图9示出的主节点21和数据库20也可以在备用机房进行部署,请参见图10,图10为本发明实施例提供的另一种集群的示意图,当第一机房中的数据库20和主节点21出现故障时,第二机房中的备用数据库x20和备用主节点x21也可以实现集群主节点的功能,以便保证集群的高可用,实现集群的域名数据同步更新。
为了实现上述的任一数据同步方法,本发明实施例还提供一种数据同步装置,该数据同步装置应用于集群的主节点,集群还设置有数据库和至少一个从节点,主节点和数据库、从节点分别通信连接,主节点中存储有集群中所有节点的地址信息,请参见图11,图11为本发明实施例提供的一种数据同步装置的方框示意图,该数据同步装置40包括:通信模块41和处理模块42。
通信模块41用于当主节点获取到域名数据同步请求时,从数据库中获取与域名数据同步请求对应的待同步域名数据。待同步域名数据为数据库中用于指示所有节点的域名配置的有效数据。
处理模块42用于根据待同步域名数据和地址信息,生成主节点中的至少一个区域文件。区域文件包括有效数据和有效数据对应的节点的地址信息。
通信模块41还用于发送域名数据同步指令至地址信息对应的从节点,以使从节点根据主节点中的增量数据更新从节点中的区域文件。增量数据为主节点与从节点中的差异区域文件。
应理解,通信模块41和处理模块42可以协同实现上述s31~s33及其可能的子步骤。
在可选的实施方式中,处理模块42还用于将主节点中的每个区域文件拆分为至少一个区域文件块。处理模块42还用于将每个区域文件块的校验信息发送至地址信息对应的所有从节点。校验信息包括区域文件块的文件块标识和滚动校验信息,文件块标识用于确定区域文件块的区域文件。通信模块41还用于接收第一从节点依据校验信息发送的差异区域文件块标识。第一从节点为所有从节点中的任一从节点,差异区域文件块标识为第一从节点依据滚动校验信息,校验第一从节点中的区域文件得到的。处理模块42还用于根据差异区域文件块标识对应的差异区域文件,生成增量数据。通信模块41还用于将增量数据发送至第一从节点,以使第一从节点根据增量数据更新第一从节点中的区域文件。
应理解,通信模块41和处理模块42可以协同实现上述s331~s335及其可能的子步骤。
在可选的实施方式中,处理模块42还用于根据差异区域文件块标识对应的差异区域文件,生成与第一从节点的版本信息一致的增量数据。
应理解,处理模块42可以实现上述s334a及其可能的子步骤。
在可选的实施方式中,主节点中的每个区域文件都具有序列号。处理模块42还用于将差异区域文件块标识与序列号匹配,从主节点中的所有区域文件中确定差异区域文件。处理模块42还用于根据差异区域文件和版本信息,生成增量数据。
应理解,处理模块42可以实现上述s334a1~s334a2及其可能的子步骤。
在可选的实施方式中,第一从节点部署在云端,云端上包括多个从节点。通信模块41还用于发送增量数据至云端,以使云端确定多个从节点中的第一从节点,第一从节点根据增量数据更新第一从节点中的区域文件。
应理解,处理模块42可以实现上述s335a及其可能的子步骤。
本发明实施例还提供一种电子设备,如图12,图12为本发明实施例提供的一种电子设备的方框示意图。该电子设备60包括存储器61、处理器62和通信接口63。该存储器61、处理器62和通信接口63相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器61可用于存储软件程序及模块,如本发明实施例所提供的数据同步方法对应的程序指令/模块,处理器62通过执行存储在存储器61内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口63可用于与其他节点设备进行信令或数据的通信。在本发明中该电子设备60可以具有多个通信接口63。
其中,存储器61可以是但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。
处理器62可以是一种集成电路芯片,具有信号处理能力。该处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
电子设备60可以实现本发明提供的任一种数据同步方法。该电子设备60可以是,但不限于,手机、平板电脑、笔记本电脑、服务器或其它具有处理能力的电子设备。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本发明提供一种数据同步方法、装置、电子设备和计算机可读存储介质,涉及集群的数据处理领域。该数据同步方法应用于集群的主节点,集群还设置有数据库和至少一个从节点,主节点和数据库、从节点分别通信连接,主节点中存储有集群中所有节点的地址信息;该数据同步方法包括:当主节点获取到域名数据同步请求时,从数据库中获取与域名数据同步请求对应的待同步域名数据;待同步域名数据为数据库中用于指示所有节点的域名配置的有效数据;根据待同步域名数据和地址信息,生成主节点中的至少一个区域文件;区域文件包括有效数据和有效数据对应的节点的地址信息;发送域名数据同步指令至地址信息对应的从节点,以使从节点根据主节点中的增量数据更新从节点中的区域文件;增量数据为主节点与从节点中的差异区域文件。主节点和数据库进行域名数据的同步,相较于bind方案,避免主节点直接修改区域文件出错;从节点依据主节点中的增量数据实现区域文件的更新,进而实现域名数据的增量同步,相较于bind mysql方案,避免域名数据同步时需要全量更新,减少了域名数据同步的时间,提高了集群的数据处理效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种数据同步方法,其特征在于,应用于集群的主节点,所述集群还设置有数据库和至少一个从节点,所述主节点和所述数据库、所述从节点分别通信连接,所述主节点中存储有所述集群中所有节点的地址信息,所述方法包括:
当所述主节点获取到域名数据同步请求时,从所述数据库中获取与所述域名数据同步请求对应的待同步域名数据;所述待同步域名数据为所述数据库中用于指示所述所有节点的域名配置的有效数据;
根据所述待同步域名数据和所述地址信息,生成所述主节点中的至少一个区域文件;所述区域文件包括所述有效数据和所述有效数据对应的节点的地址信息;
发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件;所述增量数据为所述主节点与所述从节点中的差异区域文件。
2.根据权利要求1所述的方法,其特征在于,所述发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件,包括:
将所述主节点中的每个所述区域文件拆分为至少一个区域文件块;
将每个所述区域文件块的校验信息发送至所述地址信息对应的所有从节点;所述校验信息包括所述区域文件块的文件块标识和滚动校验信息,所述文件块标识用于确定所述区域文件块所属的区域文件;
接收第一从节点依据所述校验信息发送的差异区域文件块标识;所述第一从节点为所述所有从节点中的任一从节点,所述差异区域文件块标识为所述第一从节点依据所述滚动校验信息,校验所述第一从节点中的区域文件得到的;
根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据;
将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
3.根据权利要求2所述的方法,其特征在于,所述根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据,包括:
根据所述差异区域文件块标识对应的差异区域文件,生成与所述第一从节点的版本信息一致的增量数据。
4.根据权利要求3所述的方法,其特征在于,所述主节点中的每个区域文件都具有序列号,所述根据所述差异区域文件块标识对应的差异区域文件,生成与所述第一从节点的版本信息一致的增量数据,包括:
将所述差异区域文件块标识与所述序列号匹配,从所述主节点中的所有所述区域文件中确定所述差异区域文件;
根据所述差异区域文件和所述版本信息,生成所述增量数据。
5.根据权利要求2所述的方法,其特征在于,所述第一从节点部署在云端,所述云端上包括多个从节点;
所述将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件,包括:
发送所述增量数据至所述云端,以使所述云端确定所述多个从节点中的第一从节点,所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
6.一种数据同步装置,其特征在于,应用于集群的主节点,所述集群还设置有数据库和至少一个从节点,所述主节点和所述数据库、所述从节点分别通信连接,所述主节点中存储有所述集群中所有节点的地址信息;所述装置包括:通信模块和处理模块;
所述通信模块,用于当所述主节点获取到域名数据同步请求时,从所述数据库中获取与所述域名数据同步请求对应的待同步域名数据;所述待同步域名数据为所述数据库中用于指示所述所有节点的域名配置的有效数据;
所述处理模块,用于根据所述待同步域名数据和所述地址信息,生成所述主节点中的至少一个区域文件;所述区域文件包括所述有效数据和所述有效数据对应的节点的地址信息;
所述通信模块还用于发送域名数据同步指令至所述地址信息对应的所述从节点,以使所述从节点根据所述主节点中的增量数据更新所述从节点中的区域文件;所述增量数据为所述主节点与所述从节点中的差异区域文件。
7.根据权利要求6所述的装置,其特征在于,所述处理模块还用于将所述主节点中的每个所述区域文件拆分为至少一个区域文件块;
所述处理模块还用于将每个所述区域文件块的校验信息发送至所述地址信息对应的所有从节点;所述校验信息包括所述区域文件块的文件块标识和滚动校验信息,所述文件块标识用于确定所述区域文件块所属的区域文件;
所述通信模块还用于接收第一从节点依据所述校验信息发送的差异区域文件块标识;所述第一从节点为所述所有从节点中的任一从节点,所述差异区域文件块标识为所述第一从节点依据所述滚动校验信息,校验所述第一从节点中的区域文件得到的;
所述处理模块还用于根据所述差异区域文件块标识对应的差异区域文件,生成所述增量数据;
所述通信模块还用于将所述增量数据发送至所述第一从节点,以使所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
8.根据权利要求7所述的装置,其特征在于,所述第一从节点部署在云端,所述云端上包括多个从节点;
所述通信模块还用于发送所述增量数据至所述云端,以使所述云端确定所述多个从节点中的第一从节点,所述第一从节点根据所述增量数据更新所述第一从节点中的区域文件。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现权利要求1-5任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5中任一项所述的方法。
技术总结