CN103581349B - 一种域名解析方法及装置 - Google Patents
一种域名解析方法及装置 Download PDFInfo
- Publication number
- CN103581349B CN103581349B CN201210256884.8A CN201210256884A CN103581349B CN 103581349 B CN103581349 B CN 103581349B CN 201210256884 A CN201210256884 A CN 201210256884A CN 103581349 B CN103581349 B CN 103581349B
- Authority
- CN
- China
- Prior art keywords
- domain name
- thread
- name mapping
- request
- mapping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本申请公开了一种域名解析方法和装置,其中包括:多线程域名解析模块建立两个以上用于域名解析的线程;请求响应模块获取域名解析请求,发送给所述线程选择模块;线程选择模块从所述用于域名解析的线程中选择一个可用线程,发送所述获取的域名解析请求给所选的线程进行域名解析处理,接收该线程的域名解析结果,并返回给所述请求响应模块;所述请求响应模块将域名解析结果返回给请求方。利用本发明,可以提高域名解析的效率,降低由于域名解析问题导致的网络请求阻塞率。
Description
技术领域
本申请涉及计算机处理技术领域,尤其涉及一种域名解析方法及装置。
背景技术
目前,互联网上标准的资源地址都以统一资源定位符(URL)来标识,所述URL也被称为网页地址,是因特网上标准的资源的地址,其中包含域名。所述域名是指由一串用点分隔的名字组成的因特网上的某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置),目前域名已经成为互联网的品牌、网上商标保护必备的产品之一。
用户在访问网络上的资源(如网页)的时候,资源的地址通常是以URL的形式表述的,而URL中的域名则表示了服务器所在的地址,但是服务器在网络上一般是使用IP地址来表示其地址。所以在连接服务器之前,就需要将域名转换成IP地址,这个转换过程叫做域名解析。域名解析是指把域名指向网站空间的IP地址,让访问者通过注册的域名可以方便地访问到网站的资源。
在对包含域名的URL网络请求进行处理时,通常要进行域名解析,如果域名解析的效率不高,则会导致网络请求的阻塞进而造成网页的假死。所谓网页假死就是所访问的网页停滞、没有反应。
例如,下面介绍一种常见的涉及域名解析场景:
在计算机上使用Windows操作系统的网络模块发送含有域名的URL网络请求时,主要包括如图1所示的几个基本步骤:
101、查找域名对应的代理服务器。
102、连接服务器。
103、发送网络请求。
104、接收服务器回应。
其中,上述步骤101和102也称为代理解析过程,其中可能会触发一次或多次域名解析的操作,而且域名解析是与上述步骤101和102是同步的,所以如果任一次域名解析操作出现问题,就会导致代理解析过程阻塞,之后的流程都将无法进行,于是就造成了网页的假死。
目前,很多软件中都使用了WINDOWS的网络模块进行网络请求,其中比较常见的就是浏览器的内核软件,如IE浏览器内核。IE浏览器内核中用于浏览网页的部分就是建立在Windows网络模块的基础之上的,所以,这就导致了IE浏览器内核在浏览网页的时候会出现网页假死的问题。
虽然目前许多浏览器采用了对每个网页进行单独并行请求的技术,但是只要网络请求中涉及到上述的代理解析过程,则WINDOWS的网络模块就会利用一个单独的线程来对所有的网络请求依次进行代理解析处理,这个线程被称为代理解析线程。因此,即使浏览器采用了对每个网页进行单独并行请求的技术,只要其中一个网络请求的代理解析过程没有结束,后续其它网页的网络请求就无法处理,导致网页假死。图2为由于代理解析线程域名解析假死导致所有网页假死的流程示意图。参见图2,涉及代理解析的所有网络请求线程都会触发同一代理解析线程,所述代理解析线程只有一个,并且在每次处理代理解析时,会触发一次或者多次的域名解析请求。目前的域名解析都是单线程处理,域名解析的效率不高,只要其中一次域名解析出现问题发生阻塞,则会造成代理解析线程的阻塞,无法返回代理解析结果,不但当前处理的网页会出现假死,之后所有网页的网络请求都无法进行,于是将无法打开任何新的网页。
因此,现有技术中由于域名解析的效率不高,由域名解析问题造成的网络请求阻塞率较高。
发明内容
有鉴于此,本发明的主要目的在于提供一种域名解析方法和装置,以提高域名解析的效率,降低由于域名解析问题导致的网络请求阻塞率。
本发明的技术方案是这样实现的:
一种域名解析方法,包括:
建立两个以上用于域名解析的线程;
获取域名解析请求后,包括:
从所述用于域名解析的线程中选择一个可用线程;
利用所选的线程对所述域名解析请求进行域名解析处理,得到该线程的域名解析结果,向请求方返回该域名解析结果;
其中,所述域名解析请求由需要发出一个或一个以上域名解析请求的代理解析线程发起,所述域名解析结果返回给该代理解析线程,其中,涉及代理解析的网络请求线程触发该代理解析线程,该代理解析线程对所有的网络请求依次进行代理解析处理,在一个域名解析请求处理结束后发起下一个域名解析请求。
一种域名解析装置,包括:
多线程域名解析模块,用于建立两个以上用于域名解析的线程;
请求响应模块,用于获取域名解析请求,发送给所述线程选择模块,将域名解析结果返回给请求方;
线程选择模块,用于从所述用于域名解析的线程中选择一个可用线程,发送所述获取的域名解析请求给所选的线程进行域名解析处理,接收该线程的域名解析结果,并返回给所述请求响应模块;
其中,所述域名解析请求由需要发出一个或一个以上域名解析请求的代理解析线程发起,所述域名解析结果返回给该代理解析线程,其中,涉及代理解析的网络请求线程触发该代理解析线程,该代理解析线程对所有的网络请求依次进行代理解析处理,在一个域名解析请求处理结束后发起下一个域名解析请求。
与现有技术相比,本发明至少建立两个域名解析线程可供选择,用于处理域名解析请求,在获取到域名解析请求后,可以从中选择一个可用的线程,将域名解析请求交给该线程处理,其中任一个域名解析线程出现问题都不会影响其它域名解析线程的处理,因此可以提高域名解析的效率,降低由于域名解析问题导致的网络请求阻塞率。
附图说明
图1为目前Windows操作系统的网络模块发送网络请求的主要流程图;
图2为由于代理解析线程域名解析假死导致所有网页假死的流程示意图;
图3为本发明所述域名解析装置的一种组成示意图;
图4为本发明所述域名解析装置的又一种组成示意图;
图5为本发明所述域名解析装置的再一种组成示意图
图6为本发明所述方法的一种实施例的具体流程图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明
本发明的核心技术方案是公开了一种域名解析方法,包括:建立两个以上用于域名解析的线程;在获取域名解析请求后,从所述用于域名解析的线程中选择一个可用线程,利用所选的线程对所述域名解析请求进行域名解析处理,得到该线程的域名解析结果,向请求方返回该域名解析结果。
与本发明的方法对应的,本发明还公开了一种域名解析装置,用于执行本发明的方法。图3为本发明所述域名解析装置的一种组成示意图。参见图3,该域名解析装置包括:
多线程域名解析模块301,用于建立两个以上用于域名解析的线程。
请求响应模块302,用于获取域名解析请求,发送给所述线程选择模块303,将域名解析结果返回给请求方。
线程选择模块303,用于从所述用于域名解析的线程中选择一个可用线程,发送所述获取的域名解析请求给所选的线程进行域名解析处理,接收该线程的域名解析结果,并返回给所述请求响应模块302。
本发明中,所述可用线程是指当前没有进行域名解析处理的空闲线程。至于所建立的域名解析线程中具体的处理过程,只需要执行现有的域名解析过程即可。
本发明所述的方法和装置的各种实施例可以适用于任何需要进行域名解析的场景,只要获取到请求方发出的域名解析请求,则可以利用本发明的方案进行域名解析,并向请求方返回域名解析结果。
例如,本发明尤其可以适用于需要发出一个或一个以上域名解析请求的单线程所导致的域名解析问题。所述单线程例如是WINDOWS操作系统网络模块中的代理解析线程,或者是其它在该网络模块基础上实现的应用程序线程。WINDOWS操作系统网络模块中的代理解析线程通常会发起一个或一个以上的域名解析请求,在一个域名解析请求处理结束后才会发起下一个域名解析请求。下面实施例以WINDOWS操作系统网络模块中的代理解析线程(单线程)为例进行说明。
假设本实施例中所述获取的域名解析请求由WINDOWS操作系统网络模块中的代理解析线程发起,所述域名解析结果返回给该代理解析线程。如果返回给代理解析线程的域名解析结果为解析失败的结果,则所述代理解析线程中止本次代理解析,即中止本次域名解析请求处理;或者,在所述代理解析线程发起域名解析请求后,如果在超过指定时间没有得到域名解析结果,则停止该域名解析请求的过程,向代理解析线程返回域名解析失败的结果,所述代理解析线程中止本次代理解析。然后可以应请求方的请求,可以开始新的代理解析过程,从而不会因为一次域名解析失败导致代理解析线程阻塞,进而造成整个网络请求的阻塞。
在这种WINDOWS操作系统网络模块中的代理解析线程触发域名解析请求的场景下,通过本发明所述的域名解析处理,一方面可以提高单次域名解析的效率,从而降低代理解析过程中的阻塞率,降低网页的假死概率;另一方面也可以在域名解析失败或无响应的情况下及时中止当前代理解析,进一步降低由于域名解析问题导致代理解析的阻塞率,进而降低网络请求阻塞率,可以及时对后续网页的网络请求进行处理,进一步降低网页的假死概率。
在Windows操作系统中,代理解析触发的域名解析处理一般都是通过应用编程接口(Api)来进行的,例如Wiondows操作系统中的用于域名解析处理的API包括:getaddrinfo、GetAddrInfoA或者GetAddrInfoW等。为了实现在代理解析的场景下利用本发明的多线程域名解析,需要替换这几个API的实现,在一种实施例中可以采用Windows操作系统中的API钩子(HOOK)来替换系统中所述进行域名解析处理的API。所述API HOOK可以改变一个系统api的原有功能,基本的方法就是通过HOOK接触到需要修改的API函数的入口点,改变它的地址指向本发明所述域名解析装置,本发明所述的域名解析装置将解析结果返回给所述API的请求方,即代理解析线程。这样可以尽量保留Windows操作系统网络模块的现有逻辑,使得本发明实现起来的实现难度较低,稳定性也较高。
本发明中,建立两个以上用于域名解析的线程的时机是:在程序初始化时,在使用HOOK替换域名解析函数getaddrinfo之前,主动创建两个以上的用于域名解析的线程。
在本发明所述方法的一种实施例中,所述获取域名解析请求后,如果所述用于域名解析的线程中没有可用线程,则包括:
新建一个用于域名解析的线程,利用该线程对所述域名解析请求进行域名解析处理,从而保证一定有一个可用的工作线程来进行新的域名解析请求;
或者,将所述域名解析请求放入等候队列,待所述用于域名解析的线程中有可用线程后,选择该可用线程对所述等候队列中的域名解析请求进行域名解析处理。如果所述等候队列中有两个以上的域名解析请求,则按照次序优先处理先进入等候对了的域名解析请求。如果这个域名解析需要花费很长的时间,那么最多就是导致这个工作线程占用很长时间,但是不影响其他工作线程的域名解析过程。
对应的,在本发明所述域名解析装置的一种实施例中,所述线程选择模块303进一步用于:如果所述用于域名解析的线程中没有可用线程,则:触发所述多线程域名解析模块301新建一个用于域名解析的线程,发送所述域名解析请求给该新建线程进行域名解析处理;或者,将所述域名解析请求放入等候队列,待所述用于域名解析的线程中有可用线程后,发送所述域名解析请求给该可用线程进行域名解析处理。
在本发明所述方法的一种实施例中,所述在获取域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:
判断所述用于域名解析的线程中是否已经有线程正在处理与当前获取的域名解析请求中的域名相同的域名解析请求,如果有则将当前获取的域名解析请求放入该线程的等候队列,待该线程处理完上一个域名解析请求后再处理该等候队列中的域名解析请求;如果没有则再从所述用于域名解析的线程中选择一个可用的线程,后续利用该可用线程进行域名解析。
在具体实现时,例如可以在发送每一个域名解析请求给所选的线程进行域名解析之后,接收该线程的域名解析结果之前,进一步包括:在一个存储空间中暂存该域名解析请求中的域名及所选线程的对应关系(该域名即正在处理的域名);在接收到该线程的域名解析结果之后,进一步将该域名及其与线程的对应关系从所述存储空间中清除。所述在获得新的域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:判断该新的域名解析请求中的域名是否在所述暂存的正在处理的域名中,如果是则将该新的域名解析请求放入与该域名有对应关系的线程的等候队列,待该线程处理完上一个域名解析请求后再处理该等候队列中的域名解析请求。
利用上述这种实施方式,可以减少对工作线程(即正在处理域名解析请求的线程)的占用,特别如果当前域名有错误,解析需要花费很长时间的时候,这种方法可以避免所有的工作线程被占满而导致处理阻塞的问题。
对应的,在本发明所述域名处理装置的一种实施例中,所述线程选择模块303进一步用于:从所述用于域名解析的线程中选择一个可用线程之前,判断所述用于域名解析的线程中是否已经有线程正在处理与当前获取的域名解析请求中的域名相同的域名解析请求,如果有则将当前获取的域名解析请求放入该线程的等候队列,待收到该线程的上一个域名解析的结果后,再发送该等候队列中的域名解析请求给该线程处理;如果没有则从所述用于域名解析的线程中选择一个可用的线程,将当前获取的域名解析请求发送给该可用线程进行域名解析。
在本发明所述方法的一种实施例中,所述在得到所述线程的域名解析结果之后,还可以进一步将所述域名解析结果存入域名解析缓存中,并记录存入时间。在获得新的域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:判断该域名解析请求中的域名是否在所述域名解析缓存的域名解析结果中、且该域名解析结果从存入到当前的时长未超过预定的时限,如果是则向所述请求方返回所述域名解析缓存中的该域名解析结果;否则再从所述用于域名解析的线程中选择一个线程进行后续的域名解析处理。
由于大部分域名与IP地址的对应关系在一定时间内是相对固定的,因此通过这种处理实施方式,可以进一步提高对域名解析请求的处理效率,降低对所述用于域名解析的线程的压力,进一步降低阻塞的几率。
对应的,在本发明所述域名解析装置的一种实施例中,如图4所示,该域名解析装置进一步包括:第一过滤模块304,用于将所述线程选择模块303返回的域名解析结果存入域名解析缓存中,并记录存入时间;在该装置获取到域名解析请求后,请求响应模块302会将该域名解析请求发送给该第一过滤模块304,该第一过滤模块304判断该域名解析请求中的域名是否在所述域名解析缓存的域名解析结果中、且该域名解析结果从存入到当前的时长未超过预定的时限,如果是则向所述请求响应模块302返回所述域名解析缓存中的该域名解析结果,所述请求响应模块302向请求方返回该域名解析结果;否则,该第一过滤模块304将所述域名解析请求交给所述线程选择模块303处理或交给下述的第二过滤模块305继续进行过滤处理。
在本发明所述方法的一种实施例中,还可以进一步存储域名解析名单,该域名解析名单可以进一步减少域名解析错误带来的问题,其中保存具有固定解析结果的域名及其对应的固定域名解析结果。所述域名的固定域名解析结果例如包括:域名对应的固定IP地址、或域名对应的固定的解析错误,如下表1所示为一种域名解析名单的实例:
域名 | IP |
www.qq.com | 123.125.114.220 |
www.qqqqqqq.com | 错误 |
表1
上述域名解析名单可以预先由管理人员设置或导入。可以存储在本地,或者定时从服务器上获取。
建立了所述域名解析名单,则在所述获取域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:从所述域名解析名单中查找是否有该域名解析请求中的域名,如果查找到,则向所述请求方返回该域名对应的固定域名解析结果;如果没有查找到,则再从所述用于域名解析的线程中选择一个可用线程对当前获取的域名解析请求进行处理。
通过这种处理实施方式,也可以进一步提高对域名解析请求的处理效率,降低对所述用于域名解析的线程的压力,进一步降低阻塞的几率。
对应的,在本发明所述域名处理装置的一种实施例中,如图5所示,该装置进一步包括:第二过滤模块305,用于存储域名解析名单,该名单中保存具有固定解析结果的域名及其对应的固定域名解析结果;在该装置获取域名解析请求后,该第二过滤模块305从所述域名解析名单中查找是否有该域名解析请求中的域名,如果查找到,则向所述请求响应模块302返回所述域名解析缓存中的该域名解析结果,所述请求响应模块302向请求方返回该域名解析结果;否则,该第二过滤模块305将所述域名解析请求交给所述线程选择模块303处理或交给所述第一过滤模块304继续进行过滤处理。
本发明所述域名解析装置可以同时包括第一过滤模块304和第二过滤模块305,也可以包括第一过滤模块304或第二过滤模块305。
本发明中,由于Windows操作系统中自带的域名解析模块会根据系统的设置来进行域名解析,但是有时候由于设置中的域名解析服务器无法正常工作,导致无法进行解析。因此,在本发明所述方法的另一种实施例中,可以进一步预设超时时限,在所述利用所选的线程对所述域名解析请求进行域名解析处理之后,进一步包括:在超出所述超时时限后还没有得到所选线程的域名处理结果时,将所述域名解析请求定向到指定的域名解析服务器上,接收该域名解析服务器的域名解析结果,并向所述请求方返回该域名解析结果。通过这种方式,可以进一步提高域名解析的成功率。
对应的,在本发明所述域名解析装置的另一种实施例中,所述线程选择模块303进一步用于:预设超时时限,在发送所述域名解析请求给所选的线程后计时,在超出所述超时时限后还没有得到所选线程的域名处理结果时,将所述域名解析请求定向到指定的域名解析服务器上,接收该域名解析服务器的域名解析结果,并向所述请求响应模块302返回该域名解析结果。
下面通过一个更为具体的实施例来说明本发明所述的方法。图6为本发明所述方法的一种实施例的具体流程图。参见图6,此处在获取到域名解析请求之前,已经建立起了两个以上用于域名解析的线程,且该实施例是在WINDOWS网络模块的解析代理线程触发的域名解析请求的场景中。该流程包括:
步骤601、获取到域名解析请求。例如此处该域名解析请求为所述代理解析线程发出。
步骤602、判断当前域名解析请求中的域名是否在表1所述的域名解析名单中,如果是,则向所述请求方返回该域名对应的固定域名解析结果;否则执行下一步。
步骤603、判断当前域名解析请求中的域名是否在所述域名解析缓存的域名解析结果中、且该域名解析结果从存入到当前的时长未超过预定的时限,如果是则说明该域名已经被解析过、还处于有效时间内,因此会向所述请求方返回所述域名解析缓存中的该域名解析结果;否则执行下一步。
当然上述步骤602和步骤603没有严格的先后顺序,可以先执行步骤603后执行602,或者也可以只执行其中一个。
步骤604、判断所述已建立的用于域名解析的多个线程中是否已经有工作线程正在处理与当前的域名解析请求中的域名相同的域名解析请求,如果有工作线程正在处理,则将当前获取的域名解析请求放入该工作线程的等候队列,待该工作线程处理完上一个域名解析请求后再处理该等候队列中的域名解析请求;否则,执行下一步骤。
步骤605、从所述已经建立的两个以上用于域名解析的线程中,查找选择一个可用线程,所述可用线程是指当前没有进行域名解析处理的空闲线程。如果查找到则执行步骤606;否则新建一个用于域名解析的线程,选择该新建的线程进行后续处理,或者将所述域名解析请求放入等候队列,待所述用于域名解析的线程中有可用线程后,选择该可用线程对所述等候队列中的域名解析请求进行后续处理。如果查找到多个可用线程,则随机或按顺序选择一个可用线程即可。
步骤606、将当前的域名解析请求发送给所选的所述用于域名解析的线程进行域名解析处理,等待处理结果。所述用于域名解析的线程的具体域名解析过程可以参考现有技术。
步骤607、在预设的超时时限内是否收到所选线程返回的域名解析结果,如果是,则向发起域名解析请求的请求方(例如此处为代理解析线程)返回该域名解析结果;否则,向发起域名解析请求的请求方返回此域名不存在的信息(相当于失败的解析结果)。
如果返回给代理解析线程的域名解析结果为解析失败的结果或者域名不存在的信息(也相当于失败的解析结果),则所述代理解析线程中止本次代理解析。此后代理解析线程可以应网络请求方(如浏览器)的请求,可以开始新的代理解析过程,从而不会因为一次域名解析失败导致代理解析线程阻塞,进而造成整个网络请求的阻塞。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (14)
1.一种域名解析方法,其特征在于,包括:
建立两个以上用于域名解析的线程;
获取域名解析请求后,包括:
从所述用于域名解析的线程中选择一个可用线程;
利用所选的线程对所述域名解析请求进行域名解析处理,得到该线程的域名解析结果,向请求方返回该域名解析结果;
其中,所述域名解析请求由需要发出一个或一个以上域名解析请求的代理解析线程发起,所述域名解析结果返回给该代理解析线程,其中,涉及代理解析的网络请求线程触发该代理解析线程,该代理解析线程对所有的网络请求依次进行代理解析处理,在一个域名解析请求处理结束后发起下一个域名解析请求。
2.根据权利要求1所述的方法,其特征在于,所述获取域名解析请求后,如果所述用于域名解析的线程中没有可用线程,则包括:
新建一个用于域名解析的线程,利用该线程对所述域名解析请求进行域名解析处理;
或者,将所述域名解析请求放入等候队列,待所述用于域名解析的线程中有可用线程后,选择该可用线程对所述等候队列中的域名解析请求进行域名解析处理。
3.根据权利要求1所述的方法,其特征在于,
所述在获取域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:
判断所述用于域名解析的线程中是否已经有线程正在处理与当前获取的域名解析请求中的域名相同的域名解析请求,如果有则将当前获取的域名解析请求放入该线程的等候队列,待该线程处理完上一个域名解析请求后再处理该等候队列中的域名解析请求。
4.根据权利要求1所述的方法,其特征在于,
所述在得到所述线程的域名解析结果之后,进一步包括:将所述域名解析结果存入域名解析缓存中,并记录存入时间;
在获得新的域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:判断该域名解析请求中的域名是否在所述域名解析缓存的域名解析结果中、且该域名解析结果从存入到当前的时长未超过预定的时限,如果是则向所述请求方返回所述域名解析缓存中的该域名解析结果。
5.根据权利要求1所述的方法,其特征在于,
该方法进一步存储域名解析名单,其中保存具有固定解析结果的域名及其对应的固定域名解析结果;
所述获取域名解析请求后、从所述用于域名解析的线程中选择一个可用线程之前,进一步包括:从所述域名解析名单中查找是否有该域名解析请求中的域名,如果查找到,则向所述请求方返回该域名对应的固定域名解析结果。
6.根据权利要求5所述的方法,其特征在于,所述域名的固定域名解析结果包括:域名对应的固定IP地址、或域名对应的固定的解析错误。
7.根据权利要求1所述的方法,其特征在于,预设超时时限,在所述利用所选的线程对所述域名解析请求进行域名解析处理之后,进一步包括:在超出预设的超时时限后还没有得到所选线程的域名处理结果时,将所述域名解析请求定向到指定的域名解析服务器上,接收该域名解析服务器的域名解析结果,并向所述请求方返回该域名解析结果。
8.根据权利要求1所述的方法,其特征在于,
如果返回给所述代理解析线程的域名解析结果为解析失败的结果,则所述代理解析线程中止本次代理解析;
或者,在所述代理解析线程发起域名解析请求后,如果在超过指定时间没有得到域名解析结果,则停止该域名解析请求的过程,向所述代理解析线程返回域名解析失败的结果,所述代理解析线程中止本次域名解析请求处理。
9.一种域名解析装置,其特征在于,包括:
多线程域名解析模块,用于建立两个以上用于域名解析的线程;
请求响应模块,用于获取域名解析请求,发送给所述线程选择模块,将域名解析结果返回给请求方;
线程选择模块,用于从所述用于域名解析的线程中选择一个可用线程,发送所述获取的域名解析请求给所选的线程进行域名解析处理,接收该线程的域名解析结果,并返回给所述请求响应模块;
其中,所述域名解析请求由需要发出一个或一个以上域名解析请求的代理解析线程发起,所述域名解析结果返回给该代理解析线程,其中,涉及代理解析的网络请求线程触发该代理解析线程,该代理解析线程对所有的网络请求依次进行代理解析处理,在一个域名解析请求处理结束后发起下一个域名解析请求。
10.根据权利要求9所述的装置,其特征在于,所述线程选择模块进一步用于:如果所述用于域名解析的线程中没有可用线程,则:
触发所述多线程域名解析模块新建一个用于域名解析的线程,发送所述域名解析请求给该新建线程进行域名解析处理;
或者,将所述域名解析请求放入等候队列,待所述用于域名解析的线程中有可用线程后,发送所述域名解析请求给该可用线程进行域名解析处理。
11.根据权利要求9所述的装置,其特征在于,所述线程选择模块进一步用于:
从所述用于域名解析的线程中选择一个可用线程之前,判断所述用于域名解析的线程中是否已经有线程正在处理与当前获取的域名解析请求中的域名相同的域名解析请求,如果有则将当前获取的域名解析请求放入该线程的等候队列,待收到该线程的上一个域名解析的结果后,再发送该等候队列中的域名解析请求给该线程处理。
12.根据权利要求9所述的装置,其特征在于,该装置进一步包括:第一过滤模块,用于将所述线程选择模块返回的域名解析结果存入域名解析缓存中,并记录存入时间;在该装置获取到域名解析请求后,该第一过滤模块判断该域名解析请求中的域名是否在所述域名解析缓存的域名解析结果中、且该域名解析结果从存入到当前的时长未超过预定的时限,如果是则向所述请求响应模块返回所述域名解析缓存中的该域名解析结果,所述请求响应模块向请求方返回该域名解析结果。
13.根据权利要求9所述的装置,其特征在于,该装置进一步包括:第二过滤模块,用于存储域名解析名单,该名单中保存具有固定解析结果的域名及其对应的固定域名解析结果;
在该装置获取域名解析请求后,该第二过滤模块从所述域名解析名单中查找是否有该域名解析请求中的域名,如果查找到,则向所述请求响应模块返回所述域名解析缓存中的该域名解析结果,所述请求响应模块向请求方返回该域名解析结果。
14.根据权利要求9所述的装置,其特征在于,所述线程选择模块进一步用于:
预设超时时限,在发送所述域名解析请求给所选的线程后计时,在超出所述超时时限后还没有得到所选线程的域名处理结果时,将所述域名解析请求定向到指定的域名解析服务器上,接收该域名解析服务器的域名解析结果,并向所述请求响应模块返回该域名解析结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210256884.8A CN103581349B (zh) | 2012-07-24 | 2012-07-24 | 一种域名解析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210256884.8A CN103581349B (zh) | 2012-07-24 | 2012-07-24 | 一种域名解析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103581349A CN103581349A (zh) | 2014-02-12 |
CN103581349B true CN103581349B (zh) | 2018-05-15 |
Family
ID=50052257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210256884.8A Active CN103581349B (zh) | 2012-07-24 | 2012-07-24 | 一种域名解析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581349B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210159B (zh) * | 2015-05-07 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 一种域名解析方法和设备 |
CN107231454B (zh) * | 2017-07-06 | 2020-07-07 | 深圳互联先锋科技有限公司 | 域名大批量异步查询的方法及装置 |
CN108718347B (zh) * | 2018-05-18 | 2021-12-03 | 腾讯科技(深圳)有限公司 | 一种域名解析方法、系统、装置及存储介质 |
CN111010463B (zh) * | 2019-12-30 | 2023-05-12 | 深圳Tcl新技术有限公司 | 域名转换方法、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217576A (zh) * | 2008-01-18 | 2008-07-09 | 厦门纳网科技有限公司 | 动态域名解析系统及其动态解析方法 |
EP2339816A1 (en) * | 2009-12-22 | 2011-06-29 | Intel Corporation | Domain name system lookup latency reduction |
CN102184227A (zh) * | 2011-05-10 | 2011-09-14 | 北京邮电大学 | 一种面向web服务的通用爬虫引擎系统及其工作方法 |
-
2012
- 2012-07-24 CN CN201210256884.8A patent/CN103581349B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217576A (zh) * | 2008-01-18 | 2008-07-09 | 厦门纳网科技有限公司 | 动态域名解析系统及其动态解析方法 |
EP2339816A1 (en) * | 2009-12-22 | 2011-06-29 | Intel Corporation | Domain name system lookup latency reduction |
CN102184227A (zh) * | 2011-05-10 | 2011-09-14 | 北京邮电大学 | 一种面向web服务的通用爬虫引擎系统及其工作方法 |
Non-Patent Citations (1)
Title |
---|
异步域名解析技术详解;CUKdd;《CUKdd博客,www.blog.chinaunix.net/uid-24585858-id-3209607.html》;20120516;第2页第4段 * |
Also Published As
Publication number | Publication date |
---|---|
CN103581349A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9794242B2 (en) | Method, apparatus and application platform for realizing logon to an application service website | |
CN102521251B (zh) | 个性化搜索直达的方法、实现该方法的装置和搜索服务器 | |
US6073241A (en) | Apparatus and method for tracking world wide web browser requests across distinct domains using persistent client-side state | |
US8862777B2 (en) | Systems, apparatus, and methods for mobile device detection | |
EP2985705A2 (en) | Webpage access method and apparatus, and router | |
CN101355565B (zh) | 为不同类型浏览器提供页面服务的方法及服务器 | |
US20150113054A1 (en) | Method, client, server, and system for sharing content | |
US10158691B2 (en) | Method and apparatus for providing network resources at intermediary server | |
CN105939313B (zh) | 状态码重定向方法及装置 | |
EP3146698A1 (en) | Method and system for acquiring web pages | |
CN103581349B (zh) | 一种域名解析方法及装置 | |
EP2857987A1 (en) | Acquiring method, device and system of user behavior | |
CN110855766A (zh) | 一种访问Web资源的方法、装置及代理服务器 | |
CN104010051B (zh) | 一种访问网络的方法及管理服务器 | |
CN105991634A (zh) | 访问控制的方法和装置 | |
CN105095220B (zh) | 一种浏览器实现方法、终端和虚拟化代理装置 | |
WO2015179244A1 (en) | Method and system for acquiring web pages | |
WO2014180154A1 (en) | A method and apparatus for data communication | |
CN103888540A (zh) | 登录信息同步方法、被同步和同步网络服务器 | |
CN105871961B (zh) | 一种灰度发布路由的方法及装置 | |
CN107181785A (zh) | 执行请求指令的方法及相关的服务器 | |
CN113315852A (zh) | 一种域名解析的方法、装置及系统 | |
CN110633432A (zh) | 一种获取数据的方法、装置、终端设备及介质 | |
EP4227829A1 (en) | Web scraping through use of proxies, and applications thereof | |
CN106919600A (zh) | 一种失效网址访问方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |