一种查询DNS记录的方法和系统与流程

文档序号:14360256阅读:218来源:国知局

本发明涉及网络通信技术领域,特别涉及一种查询dns记录的方法和系统。



背景技术:

dns(domainnamesystem,域名系统)服务器用于将域名转换成为网络可以识别的ip地址的网络设备,通过dns服务器,用户终端可以凭借域名实现对互联网上业务服务器的访问。dns服务器一般可以分为权威dns服务器和公共dns服务器。

权威服务器中可以存储有大量dns记录,每条dns记录均由一台业务服务器的域名和ip(internetprotocol,网络协议)地址组成,每台业务服务器拥有唯一的ip地址,多台业务服务器可以共享同一域名。公共dns服务器可以接收用户设备发送的dns查询请求,然后从权威dns服务器处获取对应的多条dns记录。进而,公共dns服务器可以按照预设的轮询机制,分别向不同的用户设备反馈不同的dns记录,以使用户设备的业务请求均匀地到达上述dns记录对应的业务服务器。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

一般情况下,同一域名对应的多个业务服务器的负载能力可能互不相同,依靠简单的轮询机制,无法充分利用多个业务服务器不同的负载能力,故而,负载均衡的效果较差。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种查询dns记录的方法和系统。所述技术方案如下:

第一方面,提供了一种查询dns记录的方法,所述方法包括:

公共域名系统dns服务器接收用户终端发送的dns查询请求,其中,所述dns查询请求中携带有目标域名;

公共dns服务器获取本地预先存储的所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中的每条dns记录对应的负载权值;

公共dns服务器根据所述每条dns记录对应的负载权值,在所述至少一条dns记录中确定待选dns记录;

公共dns服务器将所述待选dns记录反馈给所述用户终端。

可选的,所述公共dns服务器获取本地预先存储的所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中的每条dns记录对应的负载权值之前,还包括:

如果本地未存储有所述目标域名对应的dns记录,公共dns服务器则向权威dns服务器发送携带有所述目标域名的dns记录获取请求;

权威dns服务器将所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中每条dns记录对应的负载权值发送给所述公共dns服务器;

公共dns服务器接收并存储所述至少一条dns记录和所述每条dns记录对应的负载权值。

可选的,所述公共dns服务器向权威dns服务器发送携带有所述目标域名的dns记录获取请求之后,还包括:

权威dns服务器接收所述dns记录获取请求,并检测所述目标域名对应的全部业务服务器的当前负载情况;

权威dns服务器根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值。

可选的,所述方法还包括:

调度服务器周期性检测所述目标域名对应的全部业务服务器的当前负载情况;

调度服务器根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值;

调度服务器向所述权威dns服务器发送所述每台业务服务器的dns记录对应的负载权值。

可选的,所述方法还包括:

如果目标dns记录的已存储时长超过预设时长,公共dns服务器则自动删除所述目标dns记录和所述目标dns记录对应的负载权值。

第二方面,提供了一种查询dns记录的系统,所述系统包括公共dns服务器和权威dns服务器,其中,所述公共dns服务器用于:

接收用户终端发送的dns查询请求,其中,所述dns查询请求中携带有目标域名;

获取本地预先存储的所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中的每条dns记录对应的负载权值;

根据所述每条dns记录对应的负载权值,在所述至少一条dns记录中确定待选dns记录;

将所述待选dns记录反馈给所述用户终端。

可选的,所述公共dns服务器,还用于如果本地未存储有所述目标域名对应的dns记录,则向权威dns服务器发送携带有所述目标域名的dns记录获取请求;

所述权威dns服务器,还用于将所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中每条dns记录对应的负载权值发送给所述公共dns服务器;

公共dns服务器,还用于接收并存储所述至少一条dns记录和所述每条dns记录对应的负载权值。

可选的,所述权威dns服务器,还用于:

接收所述dns记录获取请求,并检测所述目标域名对应的全部业务服务器的当前负载情况;

根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值。

可选的,所述系统还包括调度服务器,用于:

周期性检测所述目标域名对应的全部业务服务器的当前负载情况;

根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值;

向所述权威dns服务器发送所述每台业务服务器的dns记录对应的负载权值。

可选的,所述公共dns服务器,还用于:

如果目标dns记录的已存储时长超过预设时长,则自动删除所述目标dns记录和所述目标dns记录对应的负载权值。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,公共dns服务器接收用户终端发送的dns查询请求,其中,dns查询请求中携带有目标域名,公共dns服务器获取本地预先存储的目标域名对应的至少一条dns记录,和至少一条dns记录中的每条dns记录对应的负载权值,公共dns服务器根据每条dns记录对应的负载权值,在至少一条dns记录中确定待选dns记录,公共dns服务器将待选dns记录反馈给用户终端。这样,在分配用户终端的业务请求时,通过负载权值可以充分考虑不同业务服务器不同的负载能力,以实现合理均衡的分配,从而可以提高负载均衡的效果。

附图说明

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

图1是本发明实施例提供的一种查询dns记录的网络框架示意图;

图2是本发明实施例提供的一种查询dns记录的方法流程图;

图3是本发明实施例提供的一种获取dns记录的方法流程图;

图4是本发明实施例提供的一种查询dns记录的整体流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种查询dns记录的方法,该方法可以由公共dns服务器实现,并由权威dns服务器和调度服务器辅助实现。其中,公共dns服务器可以是与用户终端直接进行数据交互的dns服务器,主要用于接收用户终端发送的dns查询请求,以及向用户终端反馈dns记录;权威dns服务器可以是dns记录的存储者和管理者,其配置文件中直接存储了域名与主机对应关系并已被授权管理该对应关系。调度服务器可以是用于检测各个业务服务器的负载情况的服务器,在一种实施例中可以辅助实现下述查询dns记录的方法,而在另一种实施例中,可以由公共dns服务器来实现调度服务器的功能。上述服务器(包括公共dns服务器、权威服务器、调度服务器和业务服务器)均可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中查询dns记录的处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。上述网络框架具体可如图1所示。

下面将结合具体实施方式,对图2所示的处理流程进行详细的说明,同时,可结合图4示出的本实施例查询dns记录的整体处理流程理解本方案,图4中所述的“支持比例反馈”即指支持edns消息格式,且可以根据负载权值进行进一步处理,“公共dns”指代公共dns服务器,“权威dns”指代权威dns服务器,内容可以如下:

步骤201,公共dns服务器接收用户终端发送的dns查询请求。

其中,dns查询请求中携带有目标域名。

在实施中,当用户想要通过终端实现某项网络业务(如访问某个网页)时,用户终端可以先获取该网络业务对应的业务服务器的域名(即目标域名),目标域名可以是用户在终端上直接输入的,也可以是终端根据用户的操作自动获取的。之后,用户终端可以向公共dns服务器发送携带有目标域名的dns查询请求,以查询上述业务服务器的ip地址。如果存在多个公共dns服务器,用户终端则可以向距离其最近的,或者服务性能最佳的一个公共dns服务器发送上述dns查询请求。从而,公共dns服务器可以接收到用户终端发送的dns查询请求。

步骤202,公共dns服务器获取本地预先存储的目标域名对应的至少一条dns记录,和至少一条dns记录中的每条dns记录对应的负载权值。

其中,一条dns记录可以是一台业务服务器的域名和ip地址的对应关系。

在实施中,公共dns服务器中可以存储有部分业务服务器的dns记录,这样,在接收到用户终端发送的dns查询请求后,公共dns服务器可以先获取dns查询请求中携带的目标域名,然后在本地预先存储的dns记录中查找目标域名对应的dns记录。可以理解,同一网络业务的后台可以由多台服务器组成,该多台服务器可以各自拥有独立的ip地址,并可以共享同一域名,故而目标域名可以对应有至少一条dns记录。同时,对于每项dns记录,公共dns服务器处均可以存储有对应的负载权值,该负载权值可以用于体现同一域名对应的多个业务服务器之中,每个业务服务器还可以承载的业务请求量的占比。

可选的,公共dns服务器中存储的dns记录存在一定的有效期限,相应的处理可以如下:如果目标dns记录的已存储时长超过预设时长,公共dns服务器则自动删除目标dns记录和目标dns记录对应的负载权值。

在实施中,在接收到用户终端发送的dns查询请求后,公共dns服务器可以先获取dns查询请求中携带的目标域名,然后在本地预先存储的dns记录中查找目标域名对应的dns记录(如目标dns记录)。如果该dns记录的已存储时长超过了预设时长,则该dns记录属于无效dns记录,公共dns服务器可以自动删除目标dns记录和目标dns记录对应的负载权值。进而,公共dns服务器可以重新从权威dns服务器处获取目标dns记录以及对应的负载权值。当然,在另一种情况下,公共dns服务器可以周期性地对已存储的dns记录进行有效性检测,如果发现目标dns记录的已存储时长超过预设时长,公共dns服务器则自动删除目标dns记录和目标dns记录对应的负载权值。或者,公共dns服务器在存储目标dns记录时,可以设定定时删除程序,一旦目标dns记录的已存储时长超过预设时长,则触发公共dns服务器自动删除目标dns记录和目标dns记录对应的负载权值。

可选的,公共dns服务器可以先判断本地是否存储有dns记录,如果未存储,则从权威dns服务器处获取dns记录,相应的,步骤202前可以有如下处理流程,具体可以参考图3和图4所示:

步骤301,如果本地未存储有目标域名对应的dns记录,公共dns服务器则向权威dns服务器发送携带有目标域名的dns记录获取请求。

在实施中,公共dns服务器在接收到用户终端发送的dns查询请求后,可以先判断本地是否已存储有目标域名对应的dns记录,如果没有,公共dns服务器则可以向权威dns服务器发送携带有dns目标域名的dns记录获取请求。此处,如果公共dns服务器支持根据负载权值选择dns记录的功能,则可以采用edns(extensionmechanismsfordns,扩展的dns机制)消息格式来发送dns记录获取请求,即在遵循常规的dns消息格式的基础上增加一些字段,edns消息格式中引入了一种新的伪资源记录,存放在dns消息的附加段中。而如果公共dns服务器不支持根据负载权值选择dns记录的功能,则可以向权威dns服务器发送常规的dns记录获取请求。

步骤302,权威dns服务器将目标域名对应的至少一条dns记录,和至少一条dns记录中每条dns记录对应的负载权值发送给公共dns服务器。

在实施中,权威dns服务接收到公共dns服务器发送的dns记录获取请求后,可以在本地数据库中查找目标域名对应的至少一条dns记录。同时,如果权威dns服务器支持上述edns消息格式,则还可以获取上述至少一条dns记录中每条dns记录对应的负载权值,并将负载权值添加至edns消息格式的伪资源记录处。进而,权威dns服务器可以将目标域名对应的所有dns记录和每条dns记录对应的负载权值一同发送给公共dns服务器。需要说明的是,如果权威dns服务器不支持edns消息格式,则在接收到公共dns服务器发送的edns消息格式的dns记录获取请求后,可以向公共dns服务器反馈格式错误通知或解析失败通知,这样,公共dns服务器则可以去掉dns记录获取请求中的伪资源记录,以常规的dns消息格式重新向权威dns服务器发送dns记录获取请求。

步骤303,公共dns服务器接收并存储至少一条dns记录和每条dns记录对应的负载权值。

在实施中,公共dns服务器可以接收权威dns服务器反馈的携带有负载权值的edns报文,然后可以从其中的伪资源记录部分提取dns记录的负载权值,从而公共dns服务器可以将至少一条dns记录和每条dns记录对应的负载权值对应存储在本地。

可选的,负载权值可以由权威dns服务器或者调度服务器计算生成,下面将对两种情况进行分别说明:

情况一:权威dns服务器接收dns记录获取请求,并检测目标域名对应的全部业务服务器的当前负载情况;权威dns服务器根据全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值。

在实施中,权威dns服务器每次接收到公共dns服务器发送的dns记录获取请求后,可以确定该dns记录获取请求指向的业务服务器,即获取dns记录获取请求中携带的目标域名,然后权威dns服务器可以检测目标域名对应的全部业务服务器的当前负载情况。此处,当前负载情况可以具体由业务服务器的运行参数推断而得,如可以由业务服务器总负载值和当前负载率得到。之后,权威dns服务器可以根据全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值。例如,存在业务服务器a、b、c,总负载值分别为1000g、1200g、800g,当前负载率分别为70%、50%、50%,则剩余可负载值分别为300g、600g、400g,则负载权值可以为3:6:4。

情况二:调度服务器周期性检测目标域名对应的全部业务服务器的当前负载情况;调度服务器根据全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值;调度服务器向权威dns服务器发送每台业务服务器的dns记录对应的负载权值。

在实施中,调度服务器可以周期性地对各个域名对应的全部业务服务器当前负载情况进行检测,并将检测结果按照域名进行分类。之后,以目标域名为例,调度服务器可以根据目标域名对应的全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值,具体计算方式多种多样,本实施例不再进行限定。进一步的,调度服务器可以将上述计算出的负载权值发送给权威dns服务器。这样,权威dns服务器可以接收该负载权值,并更新已存储的负载权值。同时,在调度服务器再次发送目标域名对应的dns记录的负载权值之前,权威dns服务器以本次接收到的负载权值作为公共dns服务器发送的dns记录获取请求的反馈。

步骤203,公共dns服务器根据每条dns记录对应的负载权值,在至少一条dns记录中确定待选dns记录。

在实施中,公共dns服务器在获取了目标域名对应的dns记录和dns记录对应的负载权值后,可以根据目标域名对应的每条dns记录对应的负载权值,确定出待选dns记录。此处,确定待选dns记录的方式有多种,可以是直接选取对应的负载权值最高的dns记录,或者,可以是先任意选取一条dns记录,只需保证在接下来的预设次数的dns记录的选取过程中,各条dns记录的被选取次数的比例与相应的负载权值相符,例如,目标域名存在3个业务服务器a、b、c,其各自的负载权值分别为2、3、5,则可以表明在接下来的10个用户终端发起的业务请求中,可以将2个业务请求分配给a,3个业务请求分配给b,5个业务请求分配给c。值得一提的是,在不同的反馈机制下,公共dns服务器一次可以向用户终端反馈一个或多个待选dns记录,如果公共dns服务器反馈了多个待选dns记录,则可以同样基于上述负载权值,对多个待选dns记录进行排序。当然,如果公共dns服务器不支持上述根据负载权值确定待选dns记录的处理,则可以按照常规方式确定待选dns记录。

步骤204,公共dns服务器将待选dns记录反馈给用户终端。

在实施中,公共dns服务器确定了待选dns记录后,可以将待选dns记录反馈给用户终端。进而,用户终端可以获取到目标域名对应的业务服务器的ip地址,并通过该ip地址向业务服务器发送业务请求。对于公共dns服务器反馈了多个待选dns记录的情况,用户终端可以接收到排序后的多个待选dns记录,然后可以优先使用首个待选dns记录中的ip地址,如果业务请求发送失败,则可以按照多个待选dns记录的排列顺序,依次使用后续待选dns记录中的ip地址。

本发明实施例中,公共dns服务器接收用户终端发送的dns查询请求,其中,dns查询请求中携带有目标域名,公共dns服务器获取本地预先存储的目标域名对应的至少一条dns记录,和至少一条dns记录中每条dns记录对应的负载权值,公共dns服务器根据每条dns记录对应的负载权值,在至少一条dns记录中确定待选dns记录,公共dns服务器将待选dns记录反馈给用户终端。这样,在分配用户终端的业务请求时,通过负载权值可以充分考虑不同业务服务器不同的负载能力,以实现合理均衡的分配,从而可以提高负载均衡的效果。

基于相同的技术构思,本发明实施例还提供了一种查询dns记录的系统,所述系统包括公共dns服务器和权威dns服务器,其中,所述公共dns服务器用于:

接收用户终端发送的dns查询请求,其中,所述dns查询请求中携带有目标域名;

获取本地预先存储的所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中的每条dns记录对应的负载权值;

根据所述每条dns记录对应的负载权值,在所述至少一条dns记录中确定待选dns记录;

将所述待选dns记录反馈给所述用户终端。

可选的,所述公共dns服务器,还用于如果本地未存储有所述目标域名对应的dns记录,则向权威dns服务器发送携带有所述目标域名的dns记录获取请求;

所述权威dns服务器,还用于将所述目标域名对应的至少一条dns记录,和所述至少一条dns记录中每条dns记录对应的负载权值发送给所述公共dns服务器;

公共dns服务器,还用于接收并存储所述至少一条dns记录和所述每条dns记录对应的负载权值。

可选的,所述权威dns服务器,还用于:

接收所述dns记录获取请求,并检测所述目标域名对应的全部业务服务器的当前负载情况;

根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值。

可选的,所述系统还包括调度服务器,用于:

周期性检测所述目标域名对应的全部业务服务器的当前负载情况;

根据所述全部业务服务器的当前负载情况,计算每台业务服务器的dns记录对应的负载权值;

向所述权威dns服务器发送所述每台业务服务器的dns记录对应的负载权值。

可选的,所述公共dns服务器,还用于:

如果目标dns记录的已存储时长超过预设时长,则自动删除所述目标dns记录和所述目标dns记录对应的负载权值。

本发明实施例中,公共dns服务器接收用户终端发送的dns查询请求,其中,dns查询请求中携带有目标域名,公共dns服务器获取本地预先存储的目标域名对应的至少一条dns记录,和至少一条dns记录中的每条dns记录对应的负载权值,公共dns服务器根据每条dns记录对应的负载权值,在至少一条dns记录中确定待选dns记录,公共dns服务器将待选dns记录反馈给用户终端。这样,在分配用户终端的业务请求时,通过负载权值可以充分考虑不同业务服务器不同的负载能力,以实现合理均衡的分配,从而可以提高负载均衡的效果。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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