均衡负载--浅析

来源:互联网 发布:成年男士身体数据 编辑:程序博客网 时间:2024/06/07 03:10

一、 均衡负载(LoadBalance)

就是将工作任务平均分摊到多个操作单元上执行,可避免由于模块出现单点失效,而造成的任务停止。

二、 通常有三种均衡负载架构

1.        链路负载均衡;

2.        集群负载均衡;

3.        操作系统负载均衡。

三、下面分别介绍这三种负载均衡

1.  链路负载均衡

比如,通过DNS解析,将域名解析成IP,然后用户根据这个IP来访问不同的目标服务器,如图:


用户最终访问哪个Web Server是由DNS Server来控制的,如上图中是由Global DNS Server来动态解析域名服务。

优点:用户直接访问目标服务器,访问速度快;

缺点:由于DNS解析数据在用户本地和Local DNS Server都有缓存,一旦某台WebServer(目标服务器)挂掉,Global DNS Server很难及时更新用户的域名解析结构,导致用户无法访问这个域名。(也就是说,用户已经在本地或Local DNS Server已经缓存了这个挂掉的目标服务器,导致用户直接按照缓存数据去访问这个目标服务器失败。)

2. 集群负载均衡

分为硬件负载均衡和软件负载均衡

1)  硬件负载均衡

使用一台专门的硬件设备来转发请求,如图所示:



为了安全一般需要两台设备:一主一备

优点:性能非常好;

缺点:1、非常规,一般公司用户起;2、访问量陡然增大超出服务器极限时,不能动态扩容。

2)软件均衡负载(普遍使用这种)

优点:成本低,一般的PC机就可以。

缺点:一般一次请求要经过多次代理服务器,会增加网络延时。

架构图:



上面的两台是LVS ,使用四层负载均衡,在网络层利用IP地址进行地址转发。下面的三台使用HAProxy进行七层负载,即,可以根据访问用户的HTTP请求头来进行负载均衡,如可以根据不同的URL来将请求转发到特定机器或者根据用户的Cookie信息来制定访问的机器。

3.操作系统均衡负载

利用操作系统级别的软中断或者硬件中断来达到负载均衡,如可以实现多队列网卡来实现。

 

总结:以上三种负载均衡不仅在CDN(详见《CDN工作机制--浅析》)的集群中使用,而且在Web服务或者分布式数据集群中同样可以使用。

 

二、CDN动态加速

1. CDN的动态加速技术也是现在比较流行的一种优化技术。

2. 原理:在CDN的解析中  ,通过动态的链路探测来寻找回源最好的一条路径,然后通过DNS的调度将所有的请求调度到选定的这条路径上回源,从而加速用户的访问效率,如图:


3. 由于CDN节点是遍布全国的,所以用户接入一个CDN节点后,可以选择一条从CDN节点到源站链路最好的路径让用户走。一个简单的原则就是在每个CDN节点上从源站下载一个大小一定的文件,看哪个链路的总耗时最短,这样就可以构成一个链路链表,然后绑定到DNS解析上,更新到CDN的Local DNS。当然,这个选择原则只是一个例子,实际开发中,可以综合如网络成本、安全等因素。


参考 许令波的《深入分析java web技术内幕》



0 0