负载均衡(Load Balance)就是将操作合理有效分解到多个操作单元执行,从而扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有硬件负载和软件负载之分。
在大多数互联网公司中,普遍使用软件形态的负载均衡器,并且基于所处理的协议区分为两种不同的系统:
- 四层负载均衡,也被称为网络负载均衡。仅用于对TCP、UDP流量进行处理。四层负载均衡在转发中主要基于IP地址、端口等信息。
四层负载均衡的开源软件包括LVS、DPVS、Katran等,分别代表了三种方案:Linux内核,DPDK,eBPF。 - 七层负载均衡,也被称为应用负载均衡。支持HTTP、HTTPS、SSL、TLS等协议的处理。
七层负载均衡在转发中可以利用应用层的信息,如HTTP的请求头部,而这些信息对四层负载均衡来说是不可见的。
七层负载均衡的开源软件包括Nginx、HAProxy、BFE、Traefik、Envoy等。
参考图书
书名 | ISBN | 作者 | 出版社 | 出版日期 | 备注 |
---|---|---|---|---|---|
负载均衡:高并发网关设计原理与实践 | 9787121428869 | 爱奇艺网络虚拟化团队 | 电子工业出版社 | 2022-02-01 | P,W |
万亿级流量转发:BFE核心技术与实现 | 9787121415654 | 章淼 | 电子工业出版社 | 2021-08-01 | JB |
实用负载均衡技术:网站性能优化攻略 | 9787115314635 | [英]门伯里 | 人民邮电出版社 | 2013-05-01 | P |
若干负载均衡问题的算法设计与分析 | 9787030625007 | 李伟东,李建平 | 科学出版社 | 2019-10-01 | |
大型网站技术架构:核心原理与案例分析 | 9787121212000 | 李智慧 | 电子工业出版社 | 2013-09-01 | |
高性能网站建设指南:前端工程师技能精髓 | 9787121258879 | 史蒂夫.桑德斯 | 电子工业出版社 | 2015-05-01 | |
大规模分布式存储系统:原理解析与架构实战 | 9787111430520 | 杨传辉 | 机械工业出版社 | 2021-10-01 | |
淘宝技术这十年 | 9787121201912 | 子柳 | 电子工业出版社 | 2013-05-01 | |
京东技术解密 | 9787121246913 | 京东研发体系 | 电子工业出版社 | 2014-12-01 | |
华为研发(第3版) | 9787111577522 | 张利华 | 机械工业出版社 | 2023-07-01 |
负载均衡器实现
- LVS
http://www.linuxvirtualserver.org
http://www.linuxvirtualserver.org/zh
https://github.com/alibaba/LVS
开发团队:章文嵩
开发语言:C
- Nginx
https://nginx.org/en
开发语言:C
特性描述:七层代理/正向代理/反向代理
- BFE
https://www.bfe-networks.net/zh_cn
https://github.com/bfenetworks/bfe
开发团队:百度
开发语言:Go
特性描述:七层代理
相关图书:万亿级流量转发:BFE核心技术与实现
- DPVS
https://github.com/iqiyi/dpvs
开发团队:爱奇艺
开发语言:C
相关图书:负载均衡:高并发网关设计原理与实践
- Katran
https://github.com/facebookincubator/katran
https://blog.csdn.net/wjnforever/article/details/120973323
开发团队:Facebook
开发语言:C/C++/Python
- Keepalived
https://www.keepalived.org/
https://github.com/acassen/keepalived
https://keepalived.readthedocs.io/en/latest/introduction.html
开发语言:C
- GLB
https://github.com/github/glb-director
https://github.blog/2018-08-08-glb-director-open-source-load-balancer/
开发团队:github
开发语言:C/Python
- TGW
https://mp.weixin.qq.com/s/w6oGa9YombLvRSzqxfiWrw
开发团队:腾讯
开发语言:未开源/DPDK
参考资料