网络协议地址反馈方法以及域名解析服务器 【技术领域】
本发明涉及通讯技术领域,特别是涉及一种网络协议地址反馈方法以及域名解析服务器。
背景技术
在相关技术中,计算机之间是利用对方的网络协议(Internet Protocol,简称为IP)地址来相互识别的。域名(Domain Name)是为网络服务器取的有意义的名字,例如:www.baidu.com,域名解析服务器(Domain Name Server,简称为DNS)中存储了大量网络服务器的域名及其对应的IP地址。
DNS担任了域名以及IP地址这两者之间的翻译工作,图1是现有技术中DNS工作的信令流程图,如图1所示,DNS的工作流程包括如下处理:
步骤1,DNS客户端向DNS服务器发起DNS-A Query Domain Name:www.baidu.com查询;
步骤2,DNS服务器收到客户端的查询,解析DNS客户端发送的查询消息;
步骤3,DNS服务器查询本地缓存或本地数据库中对应域名www.baidu.com配置的IP地址,一共有三个:220.181.37.56、220.181.37.57、以及220.181.37.58;
步骤4,DNS服务器通过DNS-A Resp将这三个IP地址全部返回给DNS客户端。
从上述处理可以看出,DNS服务器的工作方式虽然能完成DNS解析的工作,但是它将全部的IP地址都返回给DNS客户端,这就需要DNS客户端来分析哪个IP地址是能用的。此外,DNS服务器每次返回给DNS客户端的IP地址的顺序都是固定的,也就是说,IP地址220.181.37.56一直都会被放在响应中的第一位反馈给DNS客户端,只要该IP地址对应的服务器一直能用,即使另外两个IP地址220.181.37.57和220.181.37.58对应的服务器则非常空闲,DNS客户端也会一直使用该IP地址对应的服务器,从而导致服务器的负载不均衡。
【发明内容】
本发明提供一种网络协议地址反馈方法以及域名解析服务器,用以解决现有技术中同一域名的多个服务器不能够均衡负载的问题。
根据本发明的实施例,提供了一种网络协议地址反馈方法,包括如下处理:
接收客户端发送的携带有域名信息的域名查询请求,并获取与域名信息相对应的一个或多个网络协议地址;
对一个或多个网络协议地址进行健康检查,获取一个或多个健康的网络协议地址;
采用负载均衡算法从一个或多个健康的网络协议地址中获取最终网络协议地址,并反馈给客户端。
根据本发明的实施例,还提供了一种域名解析服务器,包括:
接收模块,用于接收客户端发送的携带有域名信息的域名查询请求;
获取模块,用于获取与域名信息相对应的一个或多个网络协议地址;
检查模块,用于对一个或多个网络协议地址进行健康检查,获取一个或多个健康的网络协议地址;
计算模块,用于采用负载均衡算法从一个或多个健康的网络协议地址中获取最终网络协议地址;
反馈模块,用于将最终网络协议地址反馈给客户端。
本发明有益效果如下:
本发明实施例在不影响DNS服务器应有的DNS解析功能的前提下,将健康检测以及轮选策略集成在DNS服务器上实现,使得DNS服务器不单只是返回查询对应的全部记录给DNS客户端,而是先从这些记录中挑选出健康的IP地址,依次轮流的发送给DNS客户端,解决了现有技术中同一域名的多个服务器不能够均衡负载的问题,有效的节省了在DNS客户端上进行心跳检测以及轮选策略的开发量,很好的实现了对查询记录中各个服务器的负载均衡。
【附图说明】
图1是现有技术中DNS工作的信令流程图;
图2是本发明实施例的网络协议地址反馈方法的流程图;
图3是本发明实施例的网络协议地址反馈方法的详细处理的信令流程图;
图4是本发明实施例的域名解析服务器的结构示意图;
图5是本发明实施例的DNS服务器工作的流程图。
【具体实施方式】
以下结合附图以及实施例,对本发明的技术方案进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
根据本发明的实施例,提供了一种网络协议地址反馈方法,图2是本发明实施例的网络协议地址反馈方法的流程图,如图2所示,根据本发明实施例的网络协议地址反馈方法包括如下处理:
步骤201,接收客户端发送的携带有域名信息的域名查询请求,并获取与域名信息相对应的一个或多个网络协议地址;
具体地,在步骤201中,获取与域名信息相对应的一个或多个网络协议地址包括以下两个步骤:1、对域名查询请求进行分析,获取域名信息;2、根据域名信息查询本地缓存或本地数据库中与域名信息对应的一个或多个网络协议地址。
步骤202,对一个或多个网络协议地址进行健康检查,获取一个或多个健康的网络协议地址;
具体地,在步骤202中,需要执行如下处理:1、对一个或多个网络协议地址进行健康检查,获取一个或多个健康的网络协议地址包括:2、依次向一个或多个网络协议地址发送心跳检测消息;3、接收反馈的心跳响应消息,并根据心跳响应消息确定一个或多个健康的网络协议地址。
在实际应用中,如果在预定时间内接收到一个或多个网络协议地址中的某个网络协议地址发送的心跳响应消息,则确定该网络协议地址为健康的网络协议地址;如果未在预定时间内接收到一个或多个网络协议地址中的某个网络协议地址发送的心跳响应消息,则确定该网络协议地址不是健康的网络协议地址。
也就是说,DNS服务器从本地缓存或本地数据库中获得查询结果后,对查询结果中的每个IP地址进行健康检查,依次发送心跳检测消息给每个IP地址;如果在定时器到时前回复心跳响应消息给DNS服务器的,则DNS服务器认为该IP地址健康可用,反之则认为该IP地址出现问题不可用。
步骤203,采用负载均衡算法从一个或多个健康的网络协议地址中获取最终网络协议地址,并反馈给客户端。
在步骤203中,优选地,上述最终网络协议地址的数量为一个。
具体地,DNS服务器对于健康可用的各个IP地址,采用负载均衡算法,得出本次查询应该返回的IP地址,随后,将该IP地址作为唯一的记录结果返回给DNS客户端,在DNS客户端获得DNS服务器返回的该IP地址后,无需再做任何选择策略,直接使用该IP地址进行选择。
下面结合附图对本发明实施例DNS服务器的心跳机制以及轮选策略进行说明。
图3是本发明实施例的网络协议地址反馈方法的详细处理的信令流程图,如图3所示,包括如下处理:
步骤301,DNS客户端向DNS服务器发起DNS的A查询(DNS-A QueryDomain Name:www.baidu.com);
步骤302,DNS服务器分析DNS客户端发送来的查询消息;
步骤303,DNS服务器查询本地缓存或数据库中www.baidu.com域名对应的IP地址,如果本地缓存或本地数据库中没有对应的IP地址,则直接回复DNS客户端“DNS未查询到”,并结束流程,如果本地缓存或本地数据库中有记录,则整理记录得出结果IP1、IP2以及IP3;
步骤304,DNS服务器向IP1服务器发送心跳检测消息;
步骤305,DNS服务器向IP2服务器发送心跳检测消息;
步骤306,DNS服务器向IP3服务器发送心跳检测消息;
步骤307,在T秒内,IP1服务器向DNS服务器发送心跳检测响应;
步骤308,在T秒内,IP2服务器向DNS服务器发送心跳检测响应;
步骤309,在T秒内,IP3服务器向DNS服务器发送心跳检测响应;
步骤310,DNS服务器根据T秒内哪些IP服务器有心跳响应,确定健康的IP地址为IP1、IP2和IP3;
步骤312,DNS服务器采用负载均衡算法得出本次查询应该返回IP1作为唯一的IP记录放在A响应中反馈给DNS客户端;
步骤313,DNS服务器反馈IP1:220.181.37.56给DNS客户端。
本发明实施例可以应用于DNS相关技术领域,能够提高DNS服务的智能性,将配置和策略都集中在DNS服务器侧,取消了由DNS来对结果客户端进行逐一心跳检测的工作,减轻了网络带宽的负荷;取消了针对不同的DNS客户端进行轮选机制开发的工作量,在DNS服务器端达到了对目的服务器的负载均衡。
装置实施例
根据本发明的实施例,提供了一种域名解析服务器,图4是本发明实施例的域名解析服务器的结构示意图,如图4所示,根据本发明实施例的域名解析服务器包括:接收模块40、获取模块41、检查模块42、计算模块43、以及反馈模块44,下面,对上述各个模块进行详细的说明。
接收模块40用于接收客户端发送的携带有域名信息的域名查询请求;
获取模块41用于获取与域名信息相对应的一个或多个网络协议地址;
具体地,获取模块41还可以进一步包括分析子模块、以及查询子模块,其中,分析子模块用于对域名查询请求进行分析,获取域名信息;查询子模块用于根据域名信息查询本地缓存或本地数据库中与域名信息对应的一个或多个网络协议地址。
检查模块42用于对一个或多个网络协议地址进行健康检查,获取一个或多个健康的网络协议地址;
具体地,检查模块42还可以进一步包括发送子模块、以及确定子模块,其中,发送子模块用于依次向一个或多个网络协议地址发送心跳检测消息;确定子模块用于接收反馈的心跳响应消息,并根据心跳响应消息确定一个或多个健康的网络协议地址。在实际应用中,如果在预定时间内接收到一个或多个网络协议地址中的某个网络协议地址发送的心跳响应消息,则确定该网络协议地址为健康的网络协议地址;如果未在预定时间内接收到一个或多个网络协议地址中的某个网络协议地址发送的心跳响应消息,则确定该网络协议地址不是健康的网络协议地址。
也就是说,检查模块42从本地缓存或本地数据库中获得查询结果后,检查模块42对查询结果中的每个IP地址进行健康检查,依次发送心跳检测消息给每个IP地址;如果在定时器到时前回复心跳响应消息给DNS服务器的,则认为该IP地址健康可用,反之则认为该IP地址出现问题不可用。
计算模块43用于采用负载均衡算法从一个或多个健康的网络协议地址中获取最终网络协议地址;
反馈模块44用于将最终网络协议地址反馈给客户端。优选地,上述最终网络协议地址的数量为一个。
具体地,计算模块43对于健康可用的各个IP地址,采用负载均衡算法,得出本次查询应该返回的IP地址,随后,反馈模块44将该IP地址作为唯一的记录结果返回给DNS客户端,在DNS客户端获得DNS服务器返回的该IP地址后,无需再做任何选择策略,直接使用该IP地址进行选择。
下面,结合图5,对本发明实施例的上述技术方案的流程进行详细说明,图5是本发明实施例的DNS服务器工作的流程图,如图5所示,DNS客户端向DNS服务器发起DNS的A查询;DNS服务器分析DNS客户端发送来的查询消息,随后查询本地缓存或数据库中相应域名对应的IP地址,如果本地缓存或本地数据库中没有对应的IP地址,则直接回复DNS客户端“DNS未查询到”,流程结束。如果本地缓存或本地数据库中有记录,则获取相应的IP地址;DNS服务器向获取的各个IP地址发送心跳检测消息,进行心跳检测。随后,DNS服务器对可用的IP地址进行轮循,计算出当前应该返回的IP地址,最后,DNS服务器返回轮循后的一条IP地址记录给DNS客户端。
从上述处理可以看出,本发明实施例基于基于心跳机制以及轮选策略的开发模式涉及逻辑实体包括:DNS客户端、DNS服务器、IP服务器。
其中,DNS客户端根据具体的应用场景,向DNS服务器发送DNS的A请求,并接收DNS服务器返回的A响应;DNS服务器根据具体的应用场景,接收来自DNS客户端的A请求,分析请求,并经过心跳检测和轮选之后向DNS客户端发送A响应,结果中只存在唯一的IP地址记录;IP服务器为DNS服务器中配置的查询域名对应的IP地址的服务器,根据具体的应用场景,接收来自DNS服务器的心跳检测响应消息,并发送心跳检测应答。
本发明实施例在不影响DNS服务器应有的DNS解析功能的前提下,将健康检测以及轮选策略集成在DNS服务器上实现,使得DNS服务器不单只是返回查询对应的全部记录给DNS客户端,而是先从这些记录中挑选出健康的IP地址,依次轮流的发送给DNS客户端,解决了现有技术中同一域名的多个服务器不能够均衡负载的问题,有效的节省了在DNS客户端上进行心跳检测以及轮选策略的开发量,很好的实现了对查询记录中各个服务器的负载均衡。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。