本期从什么是负载均衡,为什么要有负载均衡,如何实现负载均衡,以及负载均衡相关的算法来讨论负载均衡
1.什么是负载均衡:
负载均衡(Load Balancing)是一种在计算机网络中用于分发网络流量或工作负载的方法,以确保资源的高效利用和系统的高可用性 。它通过将请求或任务分发到多个服务器或节点上,以实现负载的均衡和分摊 。负载均衡的目标是确保系统能够处理高负载,并提供良好的性能、可靠性和可扩展性 。
2.为什么要有负载均衡:
在早期互联网中,互联网通常都是单体架构:即只需要一个服务器来支撑整个业务的搭建。显然这种架构有着很多问题,比如:
1.扩展性差:单体架构将所有组件和功能模块集中部署在一个系统中,当系统规模扩大时,会面临性能瓶颈和扩展性问题。因为所有的请求都需要通过单一的系统进行处理,这会导致系统负载增加,响应时间变慢。
2.灵活性差:单体架构中的所有组件和功能模块都是紧密耦合的,相互依赖性强,导致系统的灵活性差。当需要对系统进行修改或升级时,需要对整个系统进行重新部署,这会增加系统的维护成本和风险。
3.可靠性差:所有的组件和功能都集中在一个系统中,一旦系统发生故障就会导致整个网络受到影响。
4.开发和部署复杂:单体架构中的所有组件和功能模块都需要在一个开发环境中进行开发和部署,这会导致开发和部署过程复杂,开发效率低下。
5.技术栈受限:单体架构中的所有组件和功能模块都需要使用相同的技术栈和开发语言,这会限制系统的技术选择和创新能力。
6.安全风险高:由于所有组件和功能模块都部署在一个系统中,一旦系统被攻击或存在漏洞,整个网络都会受到威胁。
于是为了解决这些问题,就产生了集群架构,即把一个软件应用同时部署在多个服务器上。这样就能有效的避免单体架构的问题,但集群结构也有相应的问题。比如
1.客户端发送的请求如何均匀的发到各个目标服务器上?
2.如何检测出目标服务器的状态使得客户端不向不健康的服务器发送请求?
为了解决这些问题,于是引入了负载均衡的概念。
3.如何实现负载均衡:
目前有三个方面来实现负载均衡:
1.由硬件来实现负载均衡:
优点:性能高、可靠性强、可扩展性好。由于是专门用于实现负载均衡的设备或设备集群,因此可以提供更高的处理能力和更低的延迟。同时,由于是硬件设备,因此可以提供更高的可靠性和稳定性。此外,硬件负载均衡器通常还具备丰富的功能和特性,如SSL加速、缓存加速、应用加速等,可以满足不同应用场景的需求。
原理:当客户端发送请求到负载均衡器的IP地址时,负载均衡器会根据负载均衡算法选择一个服务器来处理该请求。负载均衡器会监控服务器的性能和负载情况,并根据这些信息来选择服务器。一旦服务器处理完请求并返回响应,负载均衡器会将响应转发给客户端。
缺点:硬件负载均衡器的缺点在于成本较高,需要购买和维护专门的设备或设备集群。同时,由于是硬件设备,因此升级和扩展相对复杂,需要进行物理设备的更换或升级。
2.由软件来实现负载均衡:
优点:在于成本较低、灵活性强、可扩展性好。由于不需要专门的硬件设备,因此可以降低成本。同时,由于是软件程序,因此可以灵活地部署在不同的服务器上,并根据需求进行扩展。
原理:当客户端发送请求到负载均衡软件的IP地址时,负载均衡软件会根据负载均衡算法选择一个服务器来处理该请求。负载均衡软件会监控服务器的性能和负载情况,并根据这些信息来选择服务器。一旦服务器处理完请求并返回响应,负载均衡软件会将响应转发给客户端。
3.由DNS来实现负载均衡:
优点:DNS实现负载均衡的优点在于简单易行,扩展性好,无需在服务器上作任何配置。
原理:DNS服务器会给一个主机配备多个ip地址,当用户访问时,DNS服务器会随机分配一个ip地址进行访问同时DNS还可以根据不同地域进行就近分配从而缩短通信的距离,提高网站的请求效率。
缺点:由于DNS是多级缓存所以可以会因为缓存而导致IP变更不及时从而影响负载均衡的效果
4.负载范围:
二层负载:二层负载均衡(Layer 2 Load Balancing)是一种基于网络第二层(数据链路层)的负载均衡技术。它通过在网络第二层对流量进行分发,将请求分发到不同的服务器上,以实现负载的均衡和优化。当客户端发送请求到负载均衡器的IP地址时,负载均衡器会根据负载均衡算法选择一个服务器来处理该请求。负载均衡器会查看请求中的目标MAC地址,并根据该地址来选择服务器。一旦服务器处理完请求并返回响应,负载均衡器会将响应转发给客户端。
三层负载:三层负载均衡(Layer 3 Load Balancing)是一种基于网络第三层(网络层)的负载均衡技术。它通过在网络第三层对流量进行分发,将请求分发到不同的服务器上,以实现负载的均衡和优化。当客户端发送请求到负载均衡器的IP地址时,负载均衡器会根据负载均衡算法选择一个服务器来处理该请求。负载均衡器会查看请求中的IP地址和端口号,并根据这些信息来选择服务器。一旦服务器处理完请求并返回响应,负载均衡器会将响应转发给客户端。
四层负载:四层负载均衡(Layer 4 Load Balancing)是一种基于网络第四层(传输层)的负载均衡技术。它通过在网络第四层对流量进行分发,将请求分发到不同的服务器上,以实现负载的均衡和优化。当客户端发送请求到负载均衡器的IP地址和端口号时,负载均衡器会根据负载均衡算法选择一个服务器来处理该请求。负载均衡器会查看请求中的IP地址、端口号和协议类型(如TCP或UDP),并根据这些信息来选择服务器。一旦服务器处理完请求并返回响应,负载均衡器会将响应转发给客户端。
七层负载:七层负载均衡(Layer 7 Load Balancing)是一种基于网络第七层(应用层)的负载均衡技术。它通过在网络第七层对流量进行分发,将请求分发到不同的服务器上,以实现负载的均衡和优化。七层负载均衡的工作原理是,当客户端发送请求到负载均衡器的IP地址和端口号时,负载均衡器会根据负载均衡算法选择一个服务器来处理该请求。负载均衡器会查看请求中的应用层信息,如URL、Cookie、HTTP头等,并根据这些信息来选择服务器。一旦服务器处理完请求并返回响应,负载均衡器会将响应转发给客户端。
5.相关算法(算法的具体实现见下一篇文章):
轮询,随机,一致性hash,最小连接数
标签:负载,请求,计算机网络,均衡,均衡器,服务器,客户端 From: https://blog.csdn.net/weixin_74968157/article/details/139302340