文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

负载均衡原理最全详解

2024-11-30 00:31

关注

从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。

分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,我们可以采取冗余的方式,将相同的应用部署到多台机器上。

解决访问统一入口问题,我们可以在集群前面增加负载均衡设备,实现流量分发。

图片

负载均衡的作用

图片

1.解决并发压力

提高应用处理性能,增加吞吐量,加强网络处理能力。

2.实现高可用

提供故障转移,实现整个应用的高可用。

3.实现扩展性

通过添加或减少服务器数量,提供网站伸缩性扩展性。

4.实现安全防护

负载均衡设备上做一些过滤,黑白名单等处理。 

负载均衡的原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。

纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。

因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。

比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:

图片

负载均衡算法

1.轮循

图片

轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
适合场景:适合于应用服务器硬件都相同的情况。

2.加权轮循

图片

在轮询的基础上根据硬件配置不同,按权重分发到不同的服务器。
适合场景:跟配置高、负载低的机器分配更高的权重,使其能处理更多的请求,而性能低、负载高的机器,配置较低的权重,让其处理较少的请求。

3.随机

图片

通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。

随着调用量的增大,客户端的请求可以被均匀地分派到所有的后端服务器上,其实际效果越来越接近于平均分配流量到后台的每一台服务器,也就是轮询法的效果。

4.最少连接

图片

记录每个服务器正在处理的请求数,把新的请求分发到最少连接的服务器上,因为要维护内部状态不推荐。

5.源地址散列

图片

根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。

适合场景:根据请求的来源IP进行hash计算,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。

负载均衡的分类

图片

1.二层负载均衡(mac)

根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应。
备注:MAC(Media Access Control Address)

2.三层负载均衡(ip)

一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应。

3.四层负载均衡(tcp)

四层的负载均衡在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡。

四层负载均衡在中间传输层执行,它处理消息的传递,但不考虑消息的内容,用ip+port接收请求,再转发到对应的机器。

四层负载均衡不理解应用协议,比如:

实现四层负载均衡的软件有:

4.七层负载均衡(http)

七层负载均衡不同于四层负载均衡,它在高级应用层上执行,会处理每个消息的实际内容。

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,决定最终选择的内部服务器。

七层负载均衡它可以根据消息内容(如URL)做出负载均衡决策,比如:对URL图片类的请求转发到特定的图片服务器。

实现七层负载均衡的软件有:

总的来说,一般是LVS做4层负载,Nginx或者Haproxy做7层负载,性能上LVS>HA>Nginx,功能性和便利性上Nginx>HA>LVS。


来源:mikechen的互联网架构内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯