一种DNS服务器选择方法和代理服务器与流程

文档序号:21038643发布日期:2020-06-09 20:33阅读:152来源:国知局
一种DNS服务器选择方法和代理服务器与流程
本发明涉及互联网
技术领域
,特别涉及一种dns服务器选择方法和代理服务器。
背景技术
:随着互联网的快速发展,网络环境日趋复杂,传统的资源节点集中部署方式已不能满足用户的需求,为保证不同地区的用户在访问网站时都可以获得良好的体验,很多内容提供商会采用分布式部署的方式,在不同的地区分别部署资源节点,这也导致同一个域名存在多个源站。用户在发出针对数据资源的访问请求之前,在无法从本地host表中获取目的ip地址时,需先由本地配置的dns服务器进行域名解析,以获取访问域名对应的服务器ip,一般而言,用户本地通常配置有默认dns服务器,及备用dns服务器,并优先使用默认dns服务器,并向默认dns服务器发送域名解析请求(dnsrequest),以获得目的地址信息(端口号及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服务器的最新的解析状态,以用于下一次针对目标域名的解析时作选择依据,这样既可以保证最大限度的利用现有资源,又可以保证用户的访问请求都能及时得到响应。更进一步的,本申请提供的技术方案通过引入代理服务器对用户的访问请求进行转发,代理服务器可对转发路径进行选取,以保障访问请求的传输速率、以及运营成本的控制。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施方式中dns服务器选择系统的架构示意图;图2是本申请实施方式一中dns服务器选择方法的流程图;图3是本发明实施方式中dns服务器选择装置的功能模块示意图;图4是本发明实施方式中代理服务器的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。随着互联网的快速发展,网络环境日趋复杂,互联不互通、区域isp地域局限、出口带宽受限制等种种因素都造成了网站的区域性无法访问,因此传统的资源节点集中部署方式已不能满足用户的需求,为保证不同地区的用户在访问网站时都可以获得良好的体验,很多内容提供商会采用分布式部署的方式,在不同的地区分别部署资源节点,这也导致同一个域名存在分布在不同区域的多个源站,而不同区域其网络成本是不同的。出于降低网络成本,以及容灾性考虑,运营商通常会部署多个dns服务器,例如运营商可以针对北方区域的资源节点部署1号dns服务器,针对南方区域的资源节点部署2号dns服务器,经由不同dns服务器解析得到的源站ip一般存在差异,例如,当选择1号dns服务器负责域名解析时,便可以优先导向部署在北方区域的源站。在实际应用中,用户本地通常会设置默认dns服务器,例如,将用户的域名解析请求调度到网络成本较为便宜的区域,dns服务器解析后获得的解析结果包含源站的ip地址,默认dns服务器反馈的源站ip所对应的源站,通常是离请求端物理距离较近的,或者是同运营商的资源节点。但是,现有的优先使用默认dns服务器对用户的域名解析请求进行响应存在
背景技术
中的问题,因此,如何根据源站的响应情况,为数据访问请求选择合适的dns服务器,进而保证用户发来的每一个数据访问请求都可以及时得到源站的响应,便成为本领域亟需解决的课题。本申请提供的技术方案可以解决上述不足。为便于理解本申请中涉及到的代理服务器进行简要介绍。代理服务器是网络信息的中转站,可以代理用户获取网络信息,其最基本的功能是连接,此外还包括安全性、缓存、内容过滤、访问控制管理等功能。一个完整的代理请求过程为:客户端首先与代理服务器创建连接,然后根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源,或者在基于nat(networkaddresstranslation,网络地址转换)技术实现的透明代理中,客户端向源站发送的请求被其网络出口设备或本地代理程序重定向至代理服务器,并由代理服务器对请求进行处理,并将响应结果通过原路径反馈给客户端。网络出口设备包含用户接入互联网的路由设备,一般而言,用户发送的数据流量都将经过网络出口设备,并最终达到目的服务器。请参阅图1,为本申请实施方式中dns服务器选择系统的架构示意图。在本实施方式中,dns服务器选择系统包括至少一个请求端(用户a、b)、代理服务器、默认dns服务器和备选dns服务器,以及分别与默认dns服务器和备选dns服务器相对应的源站s1和源站s2。所有用户发送的数据访问请求都将被引导至代理服务器上,由代理服务器负责与源站进行数据交互。具体的,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服务器维护的域名到ip地址的映射记录是不同的,假设在某一时刻,同时使用默认dns服务器和备选dns服务器对同一个访问请求进行域名解析,默认dns服务器和备选dns服务器解析到的源站的ip地址可能是不相同的。请参阅图2,为本申请实施方式一中dns服务器选择方法的流程图,本实施方式中的dns服务器选择方法应用于代理服务器中,所述方法可以包括以下步骤。s101:获取目标数据访问请求,并从所述目标数据访问请求中解析得到携带的目标域名。在一个实施方式中,系统中所有用户发送的数据访问请求都将被引导至代理服务器上,针对其中一个数据访问请求(即目标数据访问请求),当代理服务器获取到该目标数据访问请求后,代理服务器可以对上述目标数据访问请求进行初步解析,以获取目标数据访问请求中携带的目标域名。需要特别指出的是,代理服务器对接收到的所有数据访问请求,都将对其进行初步分析,以获取各个数据访问请求中携带的域名信息。在一个实施方式中,代理服务器获取目标数据访问请求可以通过如下方式实现,接收由用户网络出口设备发送的目标数据访问请求,其中目标数据访问请求被上述网络出口设备重定向至代理服务器(即在网络出口设备处拦截用户流量并转发至代理服务器),和/或接收由本地代理转发的目标数据访问请求(即通过在客户端中嵌入sdk将用户流量引导至代理服务器)。在一个实施方式中,代理服务器从目标数据访问请求中解析得到携带的目标域名可以通过如下方式实现,代理服务器从目标数据访问请求对应的数据报文中解析出uri(统一资源标识符,uniformresourceidentifier),再从解析出的uri中确定出目标域名。通常一个数据访问请求由多个数据报文构成的,以http协议为例,一个http数据访问请求至少包含tcp的连接请求报文、包含uri的数据请求报文等,当代理服务器接收到http数据访问请求后,代理服务器便可以解析出数据报文中包含uri的数据请求报文,然后对上述包含uri的数据请求报文进一步解析,以获取其中携带的目标域名。s102:根据所述目标域名对应的目标历史解析记录,在所述默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器,以使得所述目标dns服务器对所述目标域名进行解析。当代理服务器获取到目标数据访问请求中携带的目标域名后,代理服务器可以根据上述目标域名,在历史解析记录中查询与目标域名相对应的目标历史解析记录,并根据目标历史解析记录中的数值,在默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器,然后代理服务器基于该目标域名构建域名解析请求,并发送至目标dns服务器,以使得目标dns服务器对上述目标域名进行解析。在实际应用中,历史解析记录中至少包含域名信息、结果异常次数以及dns服务器类型。代理服务器获取到的每一个域名,都将记录在历史解析记录中,并且针对每一个域名,历史解析记录中都有与该域名相对应的结果异常次数以及dns服务器类型。例如,针对域名“www.abc.com”,历史解析记录中会记录对www.abc.com进行过域名解析的所有dns服务器的类型信息,该类型信息至少包括dns服务器的唯一标识信息、dns服务器的可用状态、dns服务器的负载情况等,并且历史解析记录中还会记录各个dns服务器解析到的源站对应的响应结果,以及响应结果为异常的次数(即结果异常次数)。例如,历史解析记录可以具有如表1所示的结构:表1(历史解析记录)域名信息dns服务器类型结果异常次数www.abc.com默认dns服务器,可用20www.abc.com第一备选dns服务器,可用60www.abc.com第二备选dns服务器,不可用100www.xy.com默认dns服务器,不可用80www.xy.com第一备选dns服务器,可用20………当代理服务器获取到域名“www.abc.com”后,代理服务器可以在历史解析记录中查询到www.abc.com对应的目标历史解析记录,即www.abc.com默认dns服务器,可用20www.abc.com第一备选dns服务器,可用60www.abc.com第二备选dns服务器,不可用100通过解析目标历史解析记录中的数值,代理服务器可以确定默认dns服务器和第一备选dns服务器为可用状态,并且默认dns服务器对应的结果异常次数小于第一备选dns服务器对应的结果异常次数,因此代理服务器可以选择默认dns服务器作为域名“www.abc.com”的目标dns服务器,由默认dns服务器对域名“www.abc.com”进行域名解析。需要特别指出的是,上述表1所示的结构只是一种示意,并不是对历史解析记录的限定,基于本申请的思想,本领域的技术人员也可以采用其它形式(例如日志表)以实现历史解析记录。在一个实施方式中,根据目标域名对应的目标历史解析记录,在默认dns服务器和至少一台备选dns服务器中确定目标dns服务器可以采用以下步骤:首先,根据目标域名在历史解析记录中确定目标历史解析记录;其次,获取目标历史解析记录中结果异常次数不超过目标阈值的dns服务器类型;最后,基于dns服务器类型和预设规则,在默认dns服务器和至少一台备选dns服务器中确定目标dns服务器。由于历史解析记录中记录有代理服务器接收到的所有域名的相关解析记录值,因此代理服务器可以根据目标域名,在历史解析记录中查询包含有目标域名的所有相关解析记录值,并基于上述查询到的所有相关解析记录值,确定目标历史解析记录。当代理服务器确定目标历史解析记录后,代理服务器可以从目标历史解析记录中获取到各个dns服务器对应的结果异常次数,然后确定出结果异常次数不超过目标阈值的记录项,进而从上述记录项中查询到相应的dns服务器类型,基于上述查询到的dns服务器类型和预设规则,在默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器。继续以表1为例,代理服务器在历史解析记录中查询到www.abc.com对应的目标历史解析记录后,可以从目标历史解析记录中获取到默认dns服务器对应的结果异常次数为20,第一备选dns服务器对应的结果异常次数为60,第二备选dns服务器对应的结果异常次数为100,假设目标阈值为80,那么代理服务器可以确定出结果异常次数不超过80的记录项为包含默认dns服务器类型的记录项,以及包含第一备选dns服务器类型的记录项。如果预设规则为首先判断dns服务器的可用状态,如果都为可用状态,再判断结果异常次数大小,选择结果异常次数小的dns服务器作为目标dns服务器,那么代理服务器根据dns服务器类型中的记录,首先可以确定默认dns服务器和第一备选dns服务器都为可用状态,然后判断默认dns服务器对应的结果异常次数小于第一备选dns服务器对应的结果异常次数,因此,代理服务器将选择默认dns服务器作为www.abc.com的目标dns服务器。一般而言,在配置dns服务器时,默认dns服务器的选择会基于网络成本、质量等因素进行确认,因此默认dns服务器往往是较优的选择,本发明的其他实施例中,预设规则也可包含当可用的dns服务器中包含默认dns服务器时,优先选择默认dns服务器。s103:接收所述目标dns服务器反馈的解析结果,并将所述目标数据访问请求发送至所述解析结果指向的目标源站,并基于所述目标源站的响应结果,更新所述目标历史解析记录。在一个实施方式中,当目标dns服务器成功完成目标域名的域名解析工作后,可以获得目标域名的解析结果,该解析结果通常是为目标域名提供资源服务的某一个源站的地址信息,包含ip地址。目标dns服务器会向代理服务器反馈上述解析结果,当代理服务器接收到目标dns服务器反馈的解析结果后,代理服务器可以根据解析结果中的地址信息,将目标数据访问请求发送至上述ip地址表征的源站(即目标源站)。具体而言,代理服务器可通过解析目标数据访问请求中包含的各请求报文,以确定用户所请求的数据信息,并基于该数据信息和源站的地址信息封装一个新的访问请求,发送至源站。当代理服务器将目标数据访问请求发送至目标源站后,目标源站将向代理服务器反馈响应数据,代理服务器接收到上述响应数据后,可以通过响应数据的头部信息获知响应状态码,并根据上述响应状态码判断目标源站是否可以正常响应。如果响应状态码为“5xx”(服务器错误),例如“500”、“503”等信息时,代理服务器可以判断目标源站响应异常,源站无法正常反馈请求数据。如果响应状态码为“2xx”(成功),例如“200”、“201”等信息时,代理服务器可以判断目标源站响应正常,代理服务器将会接收到源站反馈的请求数据,及目标数据访问请求所指向的数据资源。当代理服务器获得目标源站的响应结果后,可以根据目标源站的响应结果,更新目标历史解析记录。在一个实施方式中,基于目标源站的响应结果,更新目标历史解析记录可用包括以下步骤:首先,判断响应结果是否正常,若是,则对目标源站对应的结果异常次数进行重置;若否,则对目标源站对应的结果异常次数进行累计。当代理服务器通过响应数据的头部信息获知响应状态码后,可以根据上述响应状态码判断目标源站是否可以正常响应,如果代理服务器判断目标源站可以正常响应(即响应结果正常),那么代理服务器可以将目标源站对应的结果异常次数重置为零,或者将结果异常次数减1;如果代理服务器判断目标源站不可以正常响应(即响应结果异常),那么代理服务器可以将目标源站对应的结果异常次数加1。通过目标源站的响应结果,对目标历史解析记录中的结果异常次数进行更新,从而可以间接实现对目标源站相对应的目标dns服务器的工作状态进行监控,例如代理服务器可以设置为当结果异常次数超过规定值后,将相应的dns服务器的工作状态调整为不可用,或者,当结果异常次数小于规定值后,将相应的dns服务器的工作状态调整为可用。在实际应用中,除了存在因源站自身原因导致代理服务器判断源站响应异常外,例如源站地址信息已更新,或源站出现故障等,还可能存在因网络拥塞等因素导致代理服务器判断源站响应异常。例如源站可以正常响应,但是因为网络拥塞导致代理服务器判断源站响应超时,此时代理服务器也将判断源站响应异常。因此,代理服务器可以根据源站连续响应异常的次数来调整结果异常次数。在一个实施方式中,当代理服务器判断目标源站响应正常时,代理服务器可以将目标源站对应的结果异常次数设置为零,当代理服务器判断目标源站响应异常时,代理服务器可以将目标源站对应的结果异常次数设置当前值与指定正整数之和。例如,代理服务器根据dns服务器反馈的目标域名的第n次域名解析结果,将对应的第n次数据访问请求发送至目标源站,当判断上述第n次数据访问请求获得目标源站的正常响应后,代理服务器可以将目标源站对应的结果异常次数设置为零,然后代理服务器根据dns服务器反馈的目标域名的第n+1次域名解析结果,将对应的第n+1次数据访问请求发送至目标源站,当判断第n+1次数据访问请求获得目标源站的异常响应后,代理服务器可以将目标源站对应的结果异常次数设置为1,然后代理服务器继续根据dns服务器反馈的目标域名的第n+2次域名解析结果,将对应的第n+2次数据访问请求发送至目标源站,当判断第n+2次数据访问请求获得目标源站的异常响应后,代理服务器可以将目标源站对应的结果异常次数设置为2,以此类推。通过上述方式,只有当代理服务器判断目标域名连续无法获得目标源站的正常响应时,目标源站对应的结果异常次数才会增加,这样可以在一定程度上减少因网络拥塞等因素导致代理服务器判断源站响应异常,结果异常次数可以更加真实的反映目标源站的工作状态。在实际应用中,代理服务器上的并发流量是不断变化的,如果目标阈值设定为固定值,代理服务器将无法根据实际负载情况调整dns服务器选择条件。例如,假设目标阈值设定为100,而某一时刻代理服务器的并发流量达到3000,那么目标域名的结果异常次数可能在很短时间内达到100,代理服务器会将当前使用的dns服务器的可用状态调整为不可用,然后选择其它dns服务器对目标域名进行后继解析。实际上当前使用的dns服务器仍未达到最大负荷,其仍然可以继续对其它域名进行域名解析,因此代理服务器还可以根据并发流量动态调整目标阈值。在一个实施方式中,代理服务器还可以预先设置初始阈值,并根据更新周期内并发流量和预设比例系数计算调整阈值,然后根据初始阈值和调整阈值生成目标阈值。例如,代理服务器根据使用经验将初始阈值设置为100,将预设比例系数设置为0.1,如果在某一时刻代理服务器的并发流量达到3000,代理服务器便可以计算出调整阈值为300,并将目标阈值设置为400;如果在某一时刻代理服务器的并发流量达到1000,代理服务器便可以计算出调整阈值为100,并将目标阈值设置为200。为避免代理服务器频繁调整目标阈值,代理服务器还可以设置调整目标阈值的触发条件,例如,只有当并发流量超过1000时才计算调整阈值,并重新设置目标阈值;或者每隔10分钟,取当前代理服务器上的并发流量值,计算调整阈值,并重新设置目标阈值。需要特别指出的是,代理服务器可以针对所有的域名设置相同的初始阈值,也可以针对不同的域名设置不同的初始阈值,相应的,代理服务器可以针对所有的域名设置相同的预设比例系数,也可以针对不同的域名设置不同的预设比例系数,本申请对此不作限制。由于在实际应用中,运营商设置的默认dns服务器,可以将用户的数据访问请求调度至网络成本较为便宜的区域。因此,当dns服务器选择系统初次使用时,可以设置由默认dns服务器对所有的数据访问请求进行解析。在初次使用dns服务器选择系统时,历史解析记录中通常并未记录任何域名,因此,针对用户发来的所有数据访问请求,代理服务器都将使用默认dns服务器对上述数据访问请求进行解析,并根据目标源站的响应结果,更新各个域名的历史解析记录。在一个实施方式中,代理服务器可以基于主动探测,对历史解析记录进行更新,具体包括以下步骤:首先,确定历史解析记录中结果异常次数大于探测阈值的域名及对应的dns服务器,以作为待探测域名及待探测dns服务器;然后,基于待探测域名构建第一探测报文,并发送至对应的待探测dns服务器,以获取解析结果;最后,基于解析结果构建第二探测报文,并发送至解析结果指向的源站,并根据源站的响应结果,更新待探测dns服务器对应的历史解析记录。代理服务器可以设置探测阈值,并在历史解析记录中查询所有结果异常次数大于探测阈值的域名,并确定对应的dns服务器,然后将查询出的域名以及对应的dns服务器标记为待探测域名、待探测dns服务器。代理服务器在确定待探测域名和待探测dns服务器之后,可以基于待探测域名构建第一探测报文,上述第一探测报文中携带有待探测域名,然后将第一探测报文发送至对应的待探测dns服务器,待探测dns服务器对第一探测报文中的待探测域名进行解析后,可以获取域名解析结果,该域名解析结果通常是为待探测域名提供访问服务的某一个源站的ip地址。当代理服务器接收到待探测dns服务器反馈的域名解析结果后,代理服务器可以基于上述解析结果构建第二探测报文,上述第二探测报文中携带有为待探测域名提供访问服务的源站的ip地址,之后代理服务器将上述第二探测报文发送至该源站,并根据该源站的响应结果,更新待探测dns服务器对应的历史解析记录。继续以表1为例,假设代理服务器设置探测阈值为90,代理服务器通过查询历史解析记录,可以确定结果异常次数大于90的域名为:www.abc.com,其对应的dns服务器为第二备选dns服务器,因此代理服务器将www.abc.com标记为待探测域名,将第二备选dns服务器标记为待探测dns服务器。然后代理服务器构建包含有“www.abc.com”信息的第一探测报文,并将上述第一探测报文发送至第二备选dns服务器,第二备选dns服务器对www.abc.com进行解析,以获取为www.abc.com提供访问服务的源站的ip地址。当第二备选dns服务器获取到为www.abc.com提供访问服务的源站的ip地址后,第二备选dns服务器会向代理服务器反馈上述ip地址,使得代理服务器可以构建包含有上述ip地址的第二探测报文,代理服务器可以将上述第二探测报文发送至该ip地址表征的源站,源站接收到第二探测报文后,可以向代理服务器反馈响应数据,代理服务器根据响应数据中的状态码判断源站是否可以正常响应,如果该源站可以正常响应(即响应结果正常),代理服务器可以将第二备选dns服务器对应的结果异常次数重置为零(即由100更新为0),或者将结果异常次数减1(即由100更新为99);如果代理服务器判断该源站不可以正常响应(即响应结果异常),那么代理服务器可以将第二备选dns服务器对应的结果异常次数加1(即由100更新为101)。进一步的,代理服务器还可以根据结果异常次数更新dns服务器的工作状态。继续以表1为例,假设代理服务器设定当结果异常次数小于70时,dns服务器为可用状态,那么代理服务器根据源站的响应结果,更新第二备选dns服务器对应的结果异常次数,当更新后的结果异常次数变为69时,代理服务器将把第二备选dns服务器的工作状态更新为“可用”。在一个实施方式中,当代理服务器确定历史解析记录中结果异常次数大于探测阈值的域名及对应的dns服务器,以作为待探测域名及待探测dns服务器之后,代理服务器还可以为各个待探测域名设置相同的/不同的探测周期,以使得代理服务器基于各个待探测域名对应的探测周期,构建第一探测报文。继续以表1为例,假设待探测域名1为www.abc.com,其对应的dns服务器为第二备选dns服务器,待探测域名2为www.xy.com,其对应的dns服务器为默认dns服务器,那么代理服务器可以为www.abc.com和www.xy.com分别设置探测周期,上述探测周期的时长可以相同也可以不同,代理服务器基于www.abc.com和www.xy.com的探测周期,分别为www.abc.com和www.xy.com构建第一探测报文,并将www.abc.com的第一探测报文发送至第二备选dns服务器,将www.xy.com的第一探测报文发送至默认dns服务器,从而根据源站的响应结果,更新第二备选dns服务器和默认dns服务器对应的历史解析记录。通过为各个待探测域名设置探测周期,代理服务器可以周期性的对各个待探测dns服务器进行主动探测,从而及时更新各个待探测dns服务器的工作状态。在一个实施方式中,当代理服务器接收到目标源站反馈的响应数据后,代理服务器可以基于响应结果对目标数据访问请求进行响应。具体的,代理服务器在向用户发送响应数据时,可以基于源站的响应结果,将用户的地址作为目的地址构建数据包,并将该数据包发送至用户;或者,代理服务器可以按照原接收路径进行返回,并由出口设备或本地代理对地址进行转换,将响应包的源地址改为原目的地址,目的地址改为原源地址。请参阅图3,本申请还提供一种dns服务器选择装置,所述装置应用于代理服务器中,所述代理服务器中设置有默认dns服务器和至少一台备选dns服务器,并储存有历史解析记录,所述装置包括:数据接收模块,用于获取目标数据访问请求,并从所述目标数据访问请求中解析得到携带的目标域名;dns选择模块,用于根据所述目标域名对应的目标历史解析记录,在所述默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器,以使得所述目标dns服务器对所述目标域名进行解析;解析记录更新模块,用于接收所述目标dns服务器反馈的解析结果,并将所述目标数据访问请求发送至所述解析结果指向的目标源站,并基于所述目标源站的响应结果,更新所述目标历史解析记录。在一个实施方式中,所述历史解析记录中至少包含域名信息、结果异常次数以及dns服务器类型。在一个实施方式中,根据所述目标域名对应的目标历史解析记录,在所述默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器包括以下步骤:根据所述目标域名在所述历史解析记录中确定目标历史解析记录;获取所述目标历史解析记录中结果异常次数不超过目标阈值的dns服务器类型;基于所述dns服务器类型和预设规则,在所述默认dns服务器和所述至少一台备选dns服务器中确定目标dns服务器。在一个实施方式中,基于所述目标源站的响应结果,更新所述目标历史解析记录包括:判断所述响应结果是否正常,若是,则对所述目标源站对应的结果异常次数进行重置;若否,则对所述目标源站对应的结果异常次数进行累计。在一个实施方式中,所述装置还包括:阈值设定模块,用于设置初始阈值,并根据更新周期内并发流量和预设比例系数计算调整阈值,以及根据所述初始阈值和所述调整阈值生成所述目标阈值。在一个实施方式中,所述装置还包括:主动探测模块,用于确定所述历史解析记录中结果异常次数大于探测阈值的域名及对应的dns服务器,以作为待探测域名及待探测dns服务器;并基于所述待探测域名构建第一探测报文,并发送至所述对应的待探测dns服务器,以获取解析结果;以及基于所述解析结果构建第二探测报文,并发送至所述解析结果指向的源站,并根据所述源站的响应结果,更新所述待探测dns服务器对应的历史解析记录。请参阅图4,本申请还提供一种代理服务器,所述代理服务器包括存储器和处理器,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,可以实现如上述的dns服务器选择方法。具体地,在硬件层面,该数据转换服务器可以包括处理器、内部总线和存储器。所述存储器可以包括内存以及非易失性存储器。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行。本领域普通技术人员可以理解,图4所示的结构仅为示意,其并不对上述代理服务器的结构造成限定。例如,所述代理服务器还可包括比图4中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如gpu(graphicsprocessingunit,图像处理器),或者对外通信端口等。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等。本实施方式中,所述的处理器可以包括中央处理器(cpu)或图形处理器(gpu),当然也可以包括其他的具有逻辑处理能力的单片机、逻辑门电路、集成电路等,或其适当组合。本实施方式所述的存储器可以是用于保存信息的记忆设备。在数字系统中,能保存二进制数据的设备可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也可以为存储器,如ram、fifo等;在系统中,具有实物形式的存储设备也可以叫存储器等。实现的时候,该存储器也可以采用云存储器的方式实现,具体实现方式,本说明书不做限定。需要说明的是,本说明书中的代理服务器,具体的实现方式可以参照方法实施方式的描述,在此不作一一赘述。由此可见,本申请提供的技术方案,代理服务器中可以预先设置默认dns服务器和至少一台备选dns服务器,并储存各个域名的历史解析记录,当代理服务器接收到用户发来的携带有目标域名的目标数据访问请求后,可以首先在储存的历史解析记录中查询到与目标域名相对应的目标历史解析记录,然后根据目标历史解析记录中记录的数值,在默认dns服务器和至少一台备选dns服务器中确定出目标dns服务器,由目标dns服务器对目标域名进行域名解析。当目标dns服务器完成对目标域名的域名解析工作后,目标dns服务器可以向代理服务器反馈解析结果,使得代理服务器可以将目标数据访问请求发送至解析结果指向的目标源站,并且代理服务器还可以目标源站的响应结果,更新目标历史解析记录,这样目标历史解析记录中记录的数值便可以根据反映出各个dns服务器的最新的工作状态,基于各个dns服务器的最新的工作状态,代理服务器便可以为目标域名选择最佳的dns服务器,这样既可以保证最大限度的利用现有资源,又可以保证用户的访问请求都能及时得到响应。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1