参考《深入分析Java Web技术内幕》
通常有三种负载均衡架构:链路负载均衡、集群负载均衡、操作系统负载均衡。主要应用于web服务或者分布式数据集群中,还有CDN集群中。
1.链路负载均衡
通过DNS解析成不同IP,然后用户根据这个IP访问不同的目标服务器。
如上图,由Global DNS Server 完成动态解析域名服务,控制用户最终访问哪个Web Server。
优点:用户直接访问目标服务器,不需要经过其他代理服务器,访问速度快。
缺点:由于DNS在用户本地和Local DNS Server都有缓存,一旦某台Web Server挂掉,很难及时更新用户的域名解析结构,从而导致用户无法访问这个域名,后果很严重。
2.集群负载均衡
2.1 硬件负载均衡
以一台价格非常昂贵但是性能非常好的设备来做所有请求的转发。
优点:性能很好
缺点:价格昂贵,而且当访问了太大超出服务极限时却无法进行动态扩容。
2.2软件负载均衡
以一台或多台代理服务器转发用户请求。
优点:直接使用廉价的PC机就可以搭建,成本低。而且可以动态扩容。
缺点:一般一次请求要经过多次代理服务器,网络延时会增高。
可以参考博文 Linux负载均衡软件LVS之一(概念篇),讲的很好!
其他参考链接:LVS中文站点
当然,软件负载均衡还包括其他的,比如Nginx反向代理服务器实现负载均衡,分发用户请求到不同服务器。
3.操作系统负载均衡
利用操作系统级别的软中断或硬件中断的方法来实现负载均衡,如设置多队列网卡。