小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐
十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱。经常在技术网站、文档中出现的“四层负载均衡”、“七层负载均衡”字眼有什么含义?有什么区别?对客户网络有哪些不同的优化?
在大型的网站服务器集群中,负载均衡技术是必不可少的。使用负载均衡的技术架构,能够有效避免后端服务出现单点故障,提升服务的稳定性。
一、负载均衡简介
负载均衡,英文名称为LoadBalance,其意思就是将负载(工作任务)进行平衡,分摊到多个操作单元上进行执行(例如Web服务器、FTP服务器等),实现多个服务器共同完成工作任务的目标。负载均衡建立在现有网络结构之上,它提升了服务器的性能、提高了带宽利用率,增强了网络的灵活性和可靠性。经过十年的发展,负载均衡已经成为网络应用的重要设备,甚至成为大型网络应用的核心设备,与基础路由、交换设备市场并驾齐驱。
负载均衡构建在现有网络结构之上,可以方便有效地扩展服务器资源。通常将大量的并发请求分散至多个节点上分别处理,减少客户端的等待时间;也可以将单个重负载的运算分担到多个节点上做并行处理,最后进行汇总。
二、负载均衡的作用
2.1、请求分发
请求分发即按照一定的算法将大量的并发请求分散至多个节点的服务器上处理,减轻单台服务器的压力,减少请求响应时间以及提升系统并发量。
2.2、故障转移
通过心跳机制检测判断各个服务器的状态,能够自动剔除不可用的服务器并将请求发送可用服务器,减少服务出现不可用的概率,提高可用性。
2.3、总的来说
网络负载均衡允许使用相同的群集 IP 地址集指定群集中所有计算机的地址,并且它还为每个主机保留一组唯一专用的 IP 地址。对于负载平衡的应用程序,当主机出现故障或者脱机时,会自动在仍然运行的计算机之间重新分发负载。当计算机意外出现故障或者脱机时,将断开与出现故障或脱机的服务器之间的活动连接。任何一种情况下,都可以在准备好时将脱机计算机明确地重新加入群集,并重新共享群集负载,以便使群集中的其他计算机处理更少的流量。
三、负载均衡的分类
平时我们常用的有四层负载均衡和七层负载均衡,四层的负载均衡是基于IP和端口实现的,七层的负载均衡是在四层的基础上,基于URL等信息实现。
3.1、常用于四层负载均衡的软件(还有F5、NetScaler等硬件负载均衡器)有:
LVS:重量级软件,本身不支持正则表达式,部署起来比较麻烦,但是性能高,应用范围广,一般的大型互联网公司都有用到。
HAProxy:轻量级软件,支持的负载均衡策略非常多,较灵活。
Nginx:轻量级软件,支持的协议少(HTTP、HTTPS和Email协议),对于Session支持不友好。
3.2、常用于七层负载均衡的软件有:
HAProxy:全面支持七层代理,灵活性高,支持Session会话保持。
Nginx:可以针对HTTP应用进行分流,正则规则灵活,支持高并发,部署简单。
Apache:性能较差,一般不考虑。
MySQL Proxy:官方的数据库中间件,可以实现读写分离,负载均衡等功能,但是对分表分库支持不完善(可选替代品:Atlas,Cobar,TDDL)。
四、技术原理
四层负载均衡类似路由器的转发,通过修改报文中的目标地址和端口,然后直接转发给该服务器,只需要一个TCP连接即可。七层负载均衡通过类似于代理的机制进行转发,负载均衡服务器会分别与客户端和后端的服务器都建立TCP连接。
五、应用场景
四层负载均衡一般用于TCP应用中,比如基于C/S架构开发的ERP系统。七层负载均衡大多应用于使用HTTP/HTTPS协议搭建的网站和内部平台系统。
从市场份额来看,七层负载均衡设备还是以国外厂商占据主导地位,国内能够进行自主研发的只有太一星晨等少数的几家厂商。而且,国内负载均衡厂商应用场景以链路负载为主,难以进入占据负载均衡市场70%份额、主导负载均衡技术发展的服务器负载均衡市场,更缺乏在大型数据中心及大型门户网站使用案例。
六、福利时刻之如何学习?
对于很多人来说,对于分布式集群这些根本无从学起,如果你已经对基础的Java基础掌握住了,想入门分布式的话,特推荐几本书籍供大家参考,这些书籍比简单的几篇文章或几段视频更能系统的学习理解,总之很不错!
《大型网站技术架构:核心原理与案例分析 李智慧》
《大型分布式网站架构设计与实践 陈康贤》
《大型分布式网站架构设计与实践 陈康贤》
以上三本书籍本人都看过,感觉很不错,特推荐给大家,一键保存请看下边(仅供学习交流,禁止用于商业用途,如需要请购买正版,请务必在24小时之内删除!):
链接地址:https://pan.baidu.com/s/1mhJiPmS 密码:39po,链接失效请在公众号回复“分布式”,会在第一时间回复!
相关阅读:
2、使用Redis存储Nginx+Tomcat负载均衡集群的Session
4、大型分布式数据库中间件MyCat的安装与使用
更多精彩,从关注《Java后端技术》公众号开始!