一种应用于三层网络的负载均衡方法和系统的制作方法

文档序号:7706517阅读:191来源:国知局
专利名称:一种应用于三层网络的负载均衡方法和系统的制作方法
技术领域
本发明涉及网络通信领域,尤其涉及一种应用于三层网络的负载均衡方法。
背景技术
CDN技术是近年来迅速发展起来的一种解决互联网性能不佳问题的有效手段。 CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时 间等综合信息将用户的请求重新导向离用户最近的服务节点上。CDN的全称是Content Delivery Network,即内容分发网络。总的来说,内容服务基于很多缓存服务器(Cache servers),部署在多个地方,位于网络的边缘,与用户端很近。缓存服务器可以看成是内容 提供商源服务器的透明镜像,从而可以使用户快速地获得其需要访问的资源。在基于http协议的网络应用中,用户可以通过输入标识网络地址的URL(统一资 源定位符)来对缓存服务器上的各种网络资源进行访问。由于访问量通常很大而网络资源 有限,网络系统通常需要对用户的URL访问请求的处理进行分配,即进行负载均衡,将接收 到的URL请求转移到不同的服务器上执行。但在现有技术的负载均衡方案中,更多的是只根据服务器的负载状况对URL请求 进行分配处理,这类方案容易造成的问题是对于多个URL内容请求,可能同一个URL内容 会被转发并缓存到多个服务器上,造成同一内容在这些服务器上的重复存储。这会造成服 务器群存储空间的浪费,降低了硬件资源的利用率,而且命中率不高。

发明内容
本发明的目的是针对现有技术的缺陷,提供一种能够高效利用服务器的负载均衡 方法和系统。本发明提供的负载均衡方法包括a.在DNS层接收并解析用户的URL请求中的 域名;b.在Proxy层根据URL内容对所述URL请求进行分组;c.将分组的URL请求定向到 Cache层中的相应服务器。优选地,在步骤b,在Proxy层根据URL内容的首字符对所述URL请求进行分组。优选地,在步骤b和步骤c之间还包括bl.根据服务器的负载状况调整步骤b中 的URL分组。优选地,步骤bl包括将负载超过预定流量的服务器组进一步分拆为一个或多个组。本发明提供的负载均衡系统包括接收解析模块、URL分组模块和定向模块,其 中,接收解析模块,位于DNS层的服务器中,用于接收并解析终端用户的URL请求中的域名; URL分组模块,位于Proxy层的服务器中,用于根据URL内容对所述URL请求进行分组;定向 模块,位于Proxy层的服务器中,用于将分组的URL请求定向到Cache层中的相应服务器。优选地,URL分组模块用于在Proxy层根据URL内容的首字符对所述URL请求进 行分组。
优选地,还包括第二分组模块,所述第二分组模块位于Proxy层的服务器中,用于 将负载超过预定流量的服务器组进一步分拆为一个或多个组。优选地,所述第二分组模块位于Proxy层的服务器中,用于将负载超过预定流量 的服务器组进一步分拆为一个或多个组。采用本发明的负载均衡方法和系统,在全部的Cache服务器群中,每个URL内容只 缓存一次,大大节省了磁盘存储空间;而且,可以充分利用多个Cache实例,从而提高的CPU 的利用率。本发明可以基于URL进行唯一定位,将同一个URL内容只在对应的Cache上缓 存一次,从而大大提高了命中率并解决了由于重复缓存带来的磁盘用量大的问题。


图1是本发明优选实施方式的负载均衡方法的流程图;图2是本发明优选实施方式的负载均衡系统的结构示意图;图3是本发明优选实施方式的负载均衡系统的网络拓扑图。
具体实施例方式如图1所示,根据发明优选实施方式所提供负载均衡方法,在步骤100,首先在DNS 层接收并且解析终端用户URL请求中的域名,从而在众多CDN节点中选择最优的CDN节点。 其中,最优的CDN节点是指离请求的终端用户最近、最合适于处理该请求的某个CDN节点或 多个(一般是两个,可以互为备份)⑶N节点。例如,根据互联网TCP/IP协议,某个用户在 本地主机上运行一个浏览器,用户要将HTTP请求消息发送到名为www. xyz. com的web服务 器主机,浏览器必须要先知道奮xyz. com的IP地址。基本每台主机都运行DNS应用的客 户端,浏览器从URL中抽取出主机名,将主机名传递给本地主机上的DNS应用客户端。于是 DNS客户端向某个DNS服务发出针对www. xyz. com的DNS查询消息。而域名www. xyz. com 的“权威”DNS服务器(在本发明中,是位于CDN网络DNS层的某个服务器)最终解析为相 对应的IP地址。然后,浏览器打开一个到位于该IP地址的HTTP服务器的TCP连接。由于 DNS客户端一般与用户的机器在同一网络区域里。所以可以基本定位用户的位置。在⑶N 网络平台,DNS层节点的选择算法通常考虑以下三个参数1)哪个节点里该DNS客户的位置 最近;2)哪个节点当前的可用性最高;3)哪个节点当前的负载最轻。在步骤102,在Proxy层根据URL内容分配所述URL请求。在本发明的优选实施 方式中,根据URL内容的首字符进行分组,例如,以0-9开头的URL作为一组、以A-G开头的 URL作为另一组等等。可以通过静态Hash算法来实现上述分配,根据内容对URL进行分配 可以使相同的URL内容被分配给同一个Cache服务器,从而能够避免同一内容在多个服务 器上的重复存储。在本优选实施方式中,是根据URL内容的首字符利用静态Hash算法进行 分配,但本领域技术人员应该理解,也可以采用其他适合的针对URL内容的分组规则或分 配算法,例如,可以通过URL类来进行分组。在步骤104,将分组的URL请求定向到Cache层中的相应服务器,从而在最优⑶N 网络节点上,选择最佳的Cache服务器。将分配的各个URL请求发送给Cache层中的相应 缓存服务器上。由于在所述缓存服务器上镜像存储有相应的内容,因此,通过将所述内容传 输回用户端,用户端能够访问获得该内容。
优选地,本发明的负载均衡方法再步骤102和步骤104之间还包括步骤103 根据 服务器的负载状况调整步骤102中的URL分组。这是因为,在实际应用中,有些URL会非常 “热”,即会有很多用户访问某一个或某些URL,因此当将这些URL请求Hash到特定服务器 时,会导致“过冷”或“过热”地访问某些服务器,即,有些服务器的负载极大而另一些服务 器的负载极小。因此,在步骤104中,优选地可以动态调整URL的分类。例如在步骤102中,将原 URL包含类分解成0-9、A-Z访问组,当A-Z访问组中的对F-K访问组的访问过“热”时,可 以动态调整将F-K拆分成两组或多组,例如拆分为A-H、J-Z组等,从而实现对服务器访问的 “热”、“冷”动态均衡。具体地,可以采用动态Hash算法进行上述动态调整,例如当对某一 个或某几个组的访问流量大于某一设定阈值时,通过Hash算法对生成的key和Proxy层配 置里的服务器数量做一次求余计算,得到Cache服务器号,以便于后端服务器迅速找到内 容对应的Cache Server。其他适合的现有算法也可以用于步骤104的动态调整,例如,可以 采用轮叫调度算法(round-robin),有权调度算法(weighted round-robin)等。在本发明中,将静态Hash和动态Hash算法组合应用通过在Proxy Server上配 置URL hash算法(即静态哈希算法),使访问量根据URL均衡分布到Cache层的各台Cache Server上,根据URL分流之后,每一个URL就会只存在于一台Cache Server中,每台Cache Server的数据都会不同。将动态Hash算法与静态Hash算法相结合可以减少“冷”内容的缓存空间并增加 “热”内容的存储空间。URL hash算法可以使用标准的crc32默认的simple算法。simple 算法在 java 中可利用 java. util. zip. CRC32 类实现,simple 算法的 c 语
言实现如下{}如图2所示,图中示出了优选实施方式中一种应用于三层网络的负载均衡系统 200,结合图3所示的负载均衡系统网络拓扑图,可以看出,在所述系统中,包括接收解析 模块201、URL分组模块202和定向模块203,在更优选的实施方式中,还包括第二分组模块 204。接收解析模块201位于DNS层的服务器中,用于接收用户的URL请求。接收解析 模块式DNS服务器的核心部分,以便将用户输入的统一资源定位符解析为IP地址。URL分组模块202位于Proxy层的服务器中,用于根据URL内容对所述URL请求进
#define ngx—hash(key,c) ((u_int)key水31c) u_int ngx—hash_key(u_char*data, size_t len)
u_int i,key ;key = 0 ; for(i = 0 ;i < len ;i) { key 氺=31 ; key = data[i];
return key ;行分组。URL分组模块202由静态Hash算法实现,分组即是将URL根据其内容(例如其首 字符)进行分类,不同类的URL被定向到不同的Cache服务器上。定向模块203位于Proxy层的服务器中,用于将分组的URL请求定向到Cache层 中的相应服务器。定向模块203可以通过Proxy服务器上的软件模块实现。优选地,在进一步的优选实施方式中还包括第二分组模块204,所述第二分组模块 204位于Proxy层的服务器中,用于将负载超过预定流量的服务器组进一步分拆为一个或 多个组。第二分组模块204不仅由URLHash算法实现,而且包括服务器的负载判别算法,当 某一个或某几个服务器的流量超过预定值时,执行URL Hash算法对URL进行重定向。上述模块优选地通过软件模块实现,但也可以适合的硬件电路或控制逻辑。尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于 上述的实施方式。应该认识到在不脱离本发明主旨的情况下,本领域技术人员可以对本发 明做出不同的变化和修改。
权利要求
一种应用于三层CDN网络的负载均衡方法,所述三层CDN网络包括DNS层、Proxy层和Cache层,其特征在于,所述方法包括a.在DNS层接收并解析用户的URL请求的域名;b.在Proxy层根据URL内容对所述URL请求进行分组;c.将分组的URL请求定向到Cache层中的相应服务器。
2.根据权利要求1所述的方法,其特征在于,在步骤b,在Proxy层根据URL内容的首 字符对所述URL请求进行分组。
3.根据权利要求1或2所述的方法,其特征在于,在步骤b和步骤c之间还包括bl.根据服务器的负载状况调整步骤b中的URL分组。
4.根据权利要求3所述的方法,其特征在于,步骤bl包括将负载超过预定流量的服 务器组进一步分拆为一个或多个组。
5.一种应用于三层网络的负载均衡系统,其特征在于,所述系统包括接收解析模块、 URL分组模块和定向模块,其中,接收解析模块,位于DNS层的服务器中,用于接收并解析终端用户URL请求中的域名;URL分组模块,位于Proxy层的服务器中,用于根据URL内容对所述URL请求进行分组;定向模块,位于Proxy层的服务器中,用于将分组的URL请求定向到Cache层中的相应 服务器。
6.根据权利要求5所述的负载均衡系统,其特征在于,URL分组模块用于在Proxy层根 据URL内容的首字符对所述URL请求进行分组。
7.根据权利要求5或6所述的负载均衡系统,其特征在于,还包括第二分组模块,所述 第二分组模块位于Proxy层的服务器中,用于将负载超过预定流量的服务器组进一步分拆 为一个或多个组。
8.根据权利要求7所述的负载均衡系统,其特征在于,所述第二分组模块位于Proxy层 的服务器中,用于将负载超过预定流量的服务器组进一步分拆为一个或多个组。
全文摘要
本发明公开了一种应用于三层CDN网络的负载均衡方法,所述三层CDN网络包括DNS层、Proxy层和Cache层,所述方法包括在DNS层解析请求方的域名;在Proxy层根据URL内容对所述URL请求进行分组;将分组的URL请求定向到Cache层中的相应服务器。本发明还公开了一种应用于三层网络的负载均衡系统,所述系统包括接收解析模块、URL分组模块和定向模块。采用本发明的负载均衡方法和系统,每个URL内容只缓存一次,大大节省了磁盘存储空间;而且,可以充分利用多个Cache实例,从而提高的CPU的利用率。
文档编号H04L12/56GK101848137SQ20091013031
公开日2010年9月29日 申请日期2009年3月26日 优先权日2009年3月26日
发明者刘再德, 郝冲 申请人:北京快网科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1