目录
1.负载均衡是什么
2.负载均衡的分类
客户端负载均衡:
服务端负载均衡:
软件实现:根据OSI模型可以分为四层负载均衡和七层负载均衡
硬件实现:
附1:客户端和服务端:
附2:OSI四层/七层模型:
3.负载均衡的常见算法
随机法:
轮询法:
一致性Hash法:
最小连接法:
4.服务端的七层负载均衡实现
5.客户端负载均衡的实现
1.负载均衡是什么
概念:将用户请求派分到不同服务器上处理,从而提高系统的并发处理能力
图解:比如应用发送请求,用户登录,登录后被Nginx转发到不同的后端服务器上进行处理
2.负载均衡的分类
客户端负载均衡:
客户端自身维护一份服务器地址列表,发送请求之前会根据负载均衡算法选择某一个服务器处理请求
服务端负载均衡:
软件实现:根据OSI模型可以分为四层负载均衡和七层负载均衡
四层负载均衡:在传输层工作,主要协议是TCP/UDP,负载均衡器会基于数据包中拿到源端口地址和目的端口地址,通过负载均衡算法将数据包转发到后端服务器
七层负载均衡:在应用层工作,主要协议是HTTP,负载均衡器会读取HTTP报文的数据内容(比如cookie),通过负载均衡算法做出决策
现在一般使用七层负载均衡算法,使用Nginx实现
硬件实现:
通过专门的硬件设备实现负载均衡,但硬件设备通常很贵,因此一般用的都是软件负载均衡
附1:客户端和服务端:
客户端:常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件
服务端:为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据
附2:OSI四层/七层模型:
(图片来源于百度百科)
3.负载均衡的常见算法
随机法:
未设置权重,则所有服务器被访问的概率相同
设置权重,则权重高的服务器被访问的概率大
缺点:由于所有服务器被访问的概率相同,可能有些服务器一直无法被访问到
轮询法:
未设置权重,则请求按照时间顺序分配到不同的服务器处理(轮询:轮流询问)
设置权重,则权重高的服务器被访问的次数较多
一致性Hash法:
相同参数(比如IP)的请求发送到同一台服务器处理
最小连接法:
选择当前处理的请求数最小的服务器来处理请求,提高服务器的利用率
4.服务端的七层负载均衡实现
DNS解析:
客户端发送DNS请求到DNS服务器,DNS服务器中存储着多个IP地址,DNS服务器返回给客户端一个IP地址,客户端根据IP地址对应请求不同的服务器,从而实现轮询的负载均衡
反向代理:
客户端将请求发送给反向代理服务器(比如Nginx),反向代理服务器按照负载均衡策略选择服务器集群中的服务器,从目标服务器获取数据后返回给客户端
5.客户端负载均衡的实现
直接使用负载均衡组件实现:
比如Java当中负载均衡组件:Spring Cloud Load Balaner