本发明涉及计算机技术,尤其涉及一种分布式域名系统(Domain Name System,简称:DNS)节点数据一致性同步方法和装置。
背景技术:
DNS作为域名和网络协议(Internet Protocol,简称:IP)地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。随着网络应用的普及和发展,DNS服务器上所要处理的数据量逐渐增大,从而影响了针对用户的响应效率,造成对访问者的请求回应越来越慢等严重影响域名解析服务质量的现象,在服务器端则直接表现为可容纳的新增连接数越来越小,系统性能严重下降。
现有技术中,通过在分布式DNS系统中,将DNS节点分类,同类DNS节点组成一个组群为特定用户提供服务,从而提高针对用户的响应效率,提高域名解析服务质量。
然而,采用现有技术的方法,同类DNS节点之间可能会由于某些原因造成数据不一致的现象,过一段时间后,系统中的不同DNS服务器就不能提供统一并一致性的域名解析服务,并造成网络访问异常。
技术实现要素:
本发明提供一种分布式DNS节点数据一致性同步方法和装置,以使同类的DNS节点的数据保持一致性。
本发明第一方面提供一种分布式DNS节点数据一致性同步方法,包括:
第一域名系统DNS节点获取至少一个第二DNS节点的任务标识taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS;
若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节 点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步。
在上述实施例中,所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步之后,还包括:
所述第一DNS节点将所述第一DNS节点的taskid值增加到所述最大taskid值。
在上述实施例中,述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步,包括:
所述第一DNS节点通过kademlia和距离分析算法获取与所述第一节点距离最近的第二节点的IP地址,通过所述距离最近的第二节点与所述最大taskid值的DNS节点进行数据同步。
在上述实施例中,所述第一DNS节点获取至少一个第二DNS节点的taskid值之前,还包括:
所述第一DNS节点根据kademlia算法分配与所述第一DNS节点的IP地址对应的唯一标识ID号,以哈希表条目将记录存储在所述第一DNS节点。
在上述实施例中,所述第一DNS节点获取至少一个第二DNS节点的taskid值之前,还包括:
所述第一DNS节点接收控制节点发送的建立区命令。
在上述实施例中,所述第一DNS节点接收控制节点发送的建立区命令之后,还包括:
所述第一DNS节点接收所述控制节点发送的更新记录的消息命令;
所述第一DNS节点根据所述更新记录的消息命令,更新所述第一DNS节点存储的记录,并将所述第一DNS节点的taskid值增加一个单位。
在上述实施例中,所述第一DNS节点获取至少一个第二DNS节点的taskid值,包括:
所述第一DNS节点以预设周期获取至少一个第二DNS节点的taskid值。
本发明第二方面提供一种分布式DNS节点数据一致性同步装置,包括:
获取模块,用于获取至少一个第二DNS节点的任务标识taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS;
同步模块,用于若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步。
在上述实施例中,所述同步模块还用于将所述第一DNS节点的taskid值增加到所述最大taskid值。
在上述实施例中,所述同步模块具体用于通过kademlia和距离分析算法获取与所述第一节点距离最近的第二节点的IP地址,通过所述距离最近的第二节点与所述最大taskid值的DNS节点进行数据同步。
本发明提供的分布式DNS节点数据一致性同步方法和装置,通过第一DNS节点获取至少一个第二DNS节点的taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS;若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步,实现同类DNS节点自动发现其它同类节点并比较数据完整性,并通过节点之间的数据同步使同类的DNS的数据保持一致性,提升了域名解析服务的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的DHT网络结构示意图;
图2为本发明分布式DNS节点数据一致性同步方法实施例的流程示意图;
图3为本发明分布式DNS节点数据一致性同步装置实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明在DNS分布式系统中,将DNS节点分类,同类节点组成一个分布式哈希表(Distributed Hash Table,简称:DHT)网络为特定用户提供服务每个DNS节点选用Kademlia算法来实现DHT功能,连入DHT网络的用户叫做节点(node),节点之间互相有路由记录,因此只要和任何一个已经在DHT网络中的节点连接上,客户端就可以寻找到更多的节点,从而连入网络。本发明在不需要服务器的情况下,每个DNS节点负责一个范围的路由,并负责存储一部分数据,从而实现整个DHT网络的寻址和存储;每个DNS节点保存自己执行的taskid;同类DNS节点中认为taskid值最大者为数据的完整者,其它DNS节点如果taskid值较小,则通过DHT网络同步数据。本发明通过DHT功能,实现同类DNS节点自动发现其它同类节点并比较数据完整性,并通过同类DNS节点之间的数据同步解决了数据不一致的情况,提升了区域DNS提供一致性解析服务的性能。本发明通过实现DHT的Kademlia算法使同类节点实现DHT功能,使各节点构成一个DHT网络。并通过控制节点向网络中的各节点进行数据同步,并设置特征值(taskid)来标记数据传输执行次数,以此来作为发现网络中数据完整性节点的基础,若有特征值不一致的情况,节点之间会自动进行数据同步,提高了分布式DNS系统的可扩展性、可靠性和数据一致性,确保系统能够提供正常稳定的域名解析服务,维护了DNS系统的安全运行。
图1为本发明的DHT网络结构示意图,如图1所示,本实施例的网 络架构图中仅示出了一个控制节点和3个DNS节点,3个DNS节点分别为节点A、节点B和节点C,控制节点和3个DNS节点之间,以及DNS节点之间可进行通信。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明分布式DNS节点数据一致性同步方法实施例的流程示意图,如图2所示,本实施例由第一DNS节点执行,本实施例中的第一DNS节点可以是DHT网络中同类DNS节点中的任一DNS节点,第二DNS节点时与第一DNS节点的同类DNS节点中的非第一DNS节点。本实施例的方法如下:
S201:第一DNS节点获取至少一个第二DNS节点的taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS。
在S201之前,第一DNS节点根据kademlia算法分配与第一DNS节点的IP地址对应的唯一标识ID号,以哈希表条目将记录存储在所述第一DNS节点,从而,实现DHT功能,同类DNS节点通过kademlia算法构成一个DHT网络。每个节点通过都被当做一颗二叉树的叶子,并且每一个节点的位置都由其ID值的最短前缀唯一的确定。
在初始启动阶段,控制节点向DHT网络中的节点发送建立区命令,并进而发送更新记录的消息命令,其中,更新记录的消息命令包括:增加记录、删除记录或修改记录;第一DNS节点接收控制节点发送的建立区命令,并接收所述控制节点发送的更新记录的消息命令;所述第一DNS节点根据所述更新记录的消息命令,更新所述第一DNS节点存储的记录,并将所述第一DNS节点的taskid值增加一个单位。因为执行的区数据命令操作是相同的,不出异常的话,同一个DHT网络中各节点的taskid值应当相同;如果出现传输异常,某个节点的taskid值会小于正常节点的taskid值。
第一系统DNS节点获取至少一个第二DNS节点的taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS,具体地,第一DNS节点可以以预设周期获取至少一个第二DNS节点的taskid值。
S202:若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步。
若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,说明第一DNS中的数据不是最新的数据,最大taskid值的DNS节点的数据可以认为是最为完整的,因此,第一DNS节点与最大taskid值的DNS节点进行数据同步。
由于连入DHT网络的节点之间互相有路由记录,因此只要和任何一个已经在DHT网络中的节点连接上,进行同步时,第一DNS节点通过kademlia和距离分析算法获取与所述第一节点距离最近的第二节点的IP地址,通过所述距离最近的第二节点与所述最大taskid值的DNS节点进行数据同步。
在执行S202之后,还可以执行S203。
S203:第一DNS节点将所述第一DNS节点的taskid值增加到所述最大taskid值。
本实施例,通过第一DNS节点获取至少一个第二DNS节点的taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS;若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步,实现同类DNS节点自动发现其它同类节点并比较数据完整性,并通过节点之间的数据同步使同类的DNS的数据保持一致性,提升了域名解析服务的性能。
图3为本发明分布式DNS节点数据一致性同步装置实施例的结构示意图,本实施例的装置包括获取模块301和同步模块302,其中,获取模块301用于获取至少一个第二DNS节点的taskid值,所述至少一个第二DNS节点与所述第一DNS节点属于同类DNS;同步模块302用于若所述至少一个第二DNS节点的taskid值中存在大于所述第一DNS节点的taskid值,则所述第一DNS节点与所述至少一个第二DNS节点中最大taskid值的DNS节点进行数据同步。
在上述实施例中,所述同步模块302还用于将所述第一DNS节点的taskid 值增加到所述最大taskid值。
在上述实施例中,所述同步模块302具体用于通过kademlia和距离分析算法获取与所述第一节点距离最近的第二节点的IP地址,通过所述距离最近的第二节点与所述最大taskid值的DNS节点进行数据同步。
本实施例的装置,对应地可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。