百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

什么是负载均衡?(什么是负载均衡?实现负载均衡常用的有哪几种方式?)

haoteby 2025-03-17 18:15 28 浏览

大家好,我是鱼皮。

周末在家写代码,无意中跟朋友提了下 LB,还说 LB 好的呱呱叫。

朋友笑了笑,问我 LB 是谁?

我解释道:LB 它可不是活人,而是目前企业开发中常用的技术 —— 负载均衡,下面让我给你讲讲吧!

负载均衡

介绍

假如我们刚刚上线一个网站,最多只有 10 个人同时访问,那么只需要把网站放到一台服务器上就够了,又叫 单机部署


随着我们网站的不断宣传,可能出现上万用户同时访问的情况。由于一台服务器的 CPU、内存、带宽等资源都是有限的,无法同时支撑那么多用户。因此可能需要多台服务器一起来扛,分摊用户的请求,你一半我一半,又叫 集群部署


但这样有个问题,每个服务器都有一个不同的 IP 地址,想把用户的请求分摊到不同的服务器上,总不能让用户自己去输入不同的 IP 访问吧?

因此,我们还需要一台 代理服务器 ,对外提供 唯一 的入口,统一 接受用户的请求。再根据请求(或流量)的 特征 ,依据一定的 算法 ,将请求转发到内部的服务器集群中,如图:


这样对于用户来说,始终通过一个域名访问网站即可,他完全感知不到你的网站到底部署到多少台服务器上、也不关心它是如何部署的。

这便是 负载均衡(Load Balancing 简称 LB),是企业中最重要的高并发解决方案之一。

作用

负载均衡最直观的作用就是提高系统的并发度,说人话就是允许更多人同时访问了。

它还可以提高整个系统的可用性,假如集群中有一台服务器挂了,代理服务器只要不再把请求转发给它就行了,集群中的其他服务器仍然能够正常地接受和处理请求。

此外,负载均衡还能够减少用户等待响应的时间、通过并行提高整个系统的处理能力等。


分类

虽然通过代理服务器转发请求能够提升整个系统的并发访问数,但不要忘了,代理服务器本身的资源也是有限的啊!像比较常用的 Nginx 代理,能有个几万并发就撑死了。如果同时访问的用户量再大一点,不就忍不下了么?!


而且代理服务器也存在挂掉的可能性,一旦它挂了,后果不堪设想。

因此,我们可以将负载均衡进行分类,针对不同的场景来选择相对合适的实现方式。

比较常见的分类方法是:根据 计算机网络七层模型 ,按照负载均衡所属的网络层次去区分。

下面这张计算机网络模型图还是很棒的:


有关计算机网络的知识非本文重点,大家可以自行去了解,不懂也没关系,可以接着往下看。

无论是哪层负载均衡,都需要有代理服务器,并且对外提供唯一的 IP 地址,然后根据算法将请求转发到目标服务器(实际处理请求的服务器)。只不过实现转发的原理和逻辑不同罢了。

二层负载均衡

二层指数据链路层,数据以数据帧的形式通过交换机进行传输。

这一层是没有 IP 地址概念的,只能用 MAC 地址对机器进行区分。因此负载均衡服务器会通过一个虚拟 MAC 地址接受请求,并通过改写报文目标 MAC 地址的方式将请求转发到具有不同 MAC 地址的目标机器。


二层负载均衡最原始、性能极高。但只能通过硬件设备实现,比如 F5、Array 等,价格十分昂贵。

主要的底层实现方式就是 PPP 捆绑和链路聚合技术,这里不做赘述,对于开发同学来说,大家一般也接触不到二层负载均衡。

三层负载均衡

三层即网络层,这一层开始有了 IP 地址的概念,可以根据 IP 地址路由网络。

这一层的负载均衡设备会对外提供一个虚拟的 IP 地址(VIP)以接收请求,然后根据算法将请求转发到 IP 地址不同的目标机器。


和二层一样,三层负载均衡也是通过硬件设备实现,成本也比较高。

四层负载均衡

四层即传输层,除了包含三层的 IP 地址信息之外,还多了源目端口号的概念,可以区分同一机器上不同的应用。

由于得到了更多的信息,这一层的负载均衡会更加灵活,对外提供一个虚拟的 IP 地址 + 端口号来接收请求,然后根据算法将请求转发到不同目标机器的不同端口上。


四层负载均衡可以通过软件实现,比如主流且开源的 LVS(Linux Virtual Server),底层可选多种负载模式,比如 NAT(网络地址转换)、DR(直接路由)、TUN(隧道)。

四层负载均衡的优点是:一方面是性能很高、比较稳定,支撑个十几万、几十万并发不成问题;另一方面是成本低、纯软件实现,因此在企业中的应用很广泛。

七层负载均衡

七层指应用层,是计算机网络模型的最上层,因此能得到请求最为详细的信息,比如 HTTP 请求头等。

可以根据域名或主机 IP + 端口接收请求,并通过应用层信息(请求头、Cookie 等)灵活地转发请求,比如将手机端用户转发到服务器 A、桌面端用户转发到服务器 B 等。


这种方式实现成本最低,也最为灵活,因此也是我们应用开发人员最常用的了。

实现方式多种多样,比如主流的 Nginx、HAProxy 都可以,写个配置基本就能转发请求了,大部分情况下性能也够用了。

再提一下所属于这层的 DNS 负载均衡 ,基于 DNS 域名解析服务,可以将同一个域名解析为不同的 IP 地址,从而让用户访问到不同服务器上的项目。

这种方式实现起来不难,但转发逻辑不够灵活,而且 DNS 存在缓存,不利于修改。


除了上面讲到的这些,负载均衡还有很多学问,比如负载均衡算法(比如常用的静态轮询、动态连接数等)、高可用等,这些大家自行了解和实践下就好了,具体场景具体分析

相关推荐

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

A320-V2500发动机系统FADEC介绍(2)

目的全权数字发动机控制(FADEC)系统在所有飞行和运行阶段提供全范围发动机控制。...

三国志战棋版:玩家“二叔”用这套群DOT在比武中拿下31胜5负

声明:本文首发于今日头条,而后发布于“鼎叔闯三棋”的微信公众号、抖音、哔哩哔哩和小红书平台,如果在其他平台就是抄袭。...

真正的独一无二:Dot One 推出 DNA 定制系列 139英镑起

相信很多人在挑选衣物时有着这样的困扰,综合了性价比、面料等因素后好不容易找到了心仪的款式,还要担心是否会撞衫,不管是擦肩而过的陌生人还是身边的熟人,都令人尴尬。小部分人为此热衷于购买少量的古着或者限量...

崩铁:周年庆福利再升级,老角色加强时间确定,3.xdot体系反转

#埃安UT大一圈高级很多#...

Dotgo推出RBMHub,扩大了CPaaS提供商的覆盖范围和功能

据telecompaper网7月15日报道,用于商业消息传递的RichCommunicationServices(RCS)解决方案的领先提供商Dotgo宣布推出RBMHub。RBMHub的推出扩大了C...

深度解析:快照取消Dot职业的将何去何从

写在前面曾几何时,术士的出现便被冠以dot大师的名头,从远古时期的献祭腐蚀虹吸不如暗牧一个痛,到TBC上满dot=荣誉击杀+1,到wlk接近全暴击的冰晶腐蚀,再到CTM就算了吧MOP的各种变态吸x放...

星穹铁道:抽卡芙卡之前,你必须了解什么是dot!

卡妈终于上线了,可还是有很多人不明白什么是dot伤害,抽了卡妈直接玩起了直伤流,把一个持续伤害的引爆器玩成了打手,卡妈打dot伤害是远高于直伤的,有了卡妈的玩家一直了解dot,不然这卡妈就真被玩成四不...

游戏界的闪耀星辰陨落:悼念知名游戏博主″dotα牛娃″

无尽哀思!在数字时代浪潮中,游戏不仅是消遣娱乐的代名词,更是连接心灵的桥梁,构筑了无数人的青春回忆。在这片浩瀚无垠的游戏宇宙中,有这样一位博主,他以独特的风采、深邃的洞察力和无尽的热情,成为了玩家心中...

直击2017新加坡同性恋聚会Pink Dot,自由爱!

今年的“粉红点”又来啦~这个支持LGBT群体(男女同志、双性恋、跨性别等)群体的活动,从2009年起,已经在新加坡举办8年了!”这个非营利的同性恋权益活动,主要是希望大家了解到,不管一个人的性倾向或...

python-dotenv,一款超级实用处理环境变量python库

python-dotenv,一款超级实用处理环境变量python库python-dotenv概述:...

亚马逊语音助手毫无征兆发笑 诡异至极吓坏用户

来源:新华网美国电商亚马逊7日承诺,将更改名下“亚历克萨”语音系统设置,令它不会莫名发笑,免得吓坏用户。“亚历克萨”是亚马逊开发的语音助手软件,可服从用户语音指令完成对话、播放音乐等任务。依照原来设计...

2022最火英文网名男女生

精选好听英文昵称带翻译1.moveon(离开)2.Monster(怪物)3.Solo吉他手4.Finish.(散场)...

智能家具 RecycleDot 的出现给传统家具厂商带来新的挑战

从可穿戴手环、手表到智能衣服,智能硬件逐步渗透到每一个领域。最近有一对父子MikeSandru和JohnSandru在自家的车库中设计了一款智能家具RecycleDot,给日渐萧条的家具行...

欧洲通信卫星公司 OneWeb 敦促印度DoT尽早批准提供卫星宽带服务

据telecomtalk2月17日报道,欧洲通信卫星公司EutelsatOneWeb近日敦促印度电信部(DoT)尽快批准其在印度部署双地球站网关的计划,以便连接其近地轨道(LEO)全球卫星星座,并...