负载均衡是分布式系统的一个重要手段,是达到高可用、高性能架构设计要素的重要手段。
按照问题考虑的层次,对于负载均衡的认知应该是:
image.png
按照优化的思路考虑问题,我们应当先优化设计,这里跳过;其次是算法;然后是代码层面优化;最后是硬件层面优化。
负载均衡的算法
常见的负载均衡算法有轮询、负载最低、性能最优、Hash等算法。
软件负载均衡
软件负载均衡上,我们听的最多的是LVS和Nginx,LVS是四层负载均衡,Nginx是七层负载,七层是建立在四层上的,那么四层肯定要比七层快。
对于这两种组件,应该重点掌握的是Nginx组件,Nginx组件是应用集群的重要组成部分,Nginx的重要原理就是反向代理,其所有的功能都是围绕反向代理开发。对于Nginx的原理,可以参见:
https://www.cnblogs.com/dongye95/p/11059024.html
硬件负载均衡
典型的负载均衡设备有F5和A10,对于程序员一般都用不到,架构师需要了解一下。
DNS负载均衡
DNS是系统级别的负载均衡,因为整个互联网系统的构造,我们的浏览器在发起请求时,第一步就是向DNS服务器请求域名解析,获取到对应的应用的ip,从而把七层协议转为四层协议发送。
在整个大系统这里,我们可以对于一个域名注册多个应用服务,利用DNS的负载均衡功能。
但是DNS负载均衡相对于应用并不太友好,而且有DNS缓存,即使更新了DNS服务器,可能应用并没有感知到。因此DNS这一层级一般用做应用系统冗余处理,避免访问不到。
集群系统组件的负载均衡
分布式系统重要的组件都是集群的,都有相关的负载均衡设计,例如说:
- redis: https://blog.csdn.net/weixin_43184769/article/details/91443577
- kafka:https://blog.csdn.net/weixin_34004750/article/details/88030329
小结
负载均衡是分布式系统的必要要素,我们应该充分理解并学习其中的重要组件Nginx。
网友评论