文章目录

  • 1.什么是负载均衡
  • 2.负载均衡的分类
    • 2.1 二层负载均衡
    • 2.2 三层负载均衡
    • 2.3 四层负载均衡
    • 2.4 七层负载均衡
  • 3.负载均衡工具
    • 3.1 LVS
    • 3.2 Nginx
    • 3.3 HAProxy
  • 4.常见负载均衡算法
  • 5.面试回答模板

1.什么是负载均衡

为了提升web应用的各方面能力,我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.baidu.com,那么当用户在浏览器输入www.baidu.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。

负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障 (高可用),扩展性(水平伸缩)的终极解决方案。

负载均衡服务器在决定将请求转发到具体哪台真实服务器的时候,是通过负载均衡算法来实现的

负载均衡算法是一个负载均衡服务器的核心。

负载均衡算法可以分为两类:

  • 静态负载均衡算法
  • 动态负载均衡算法

静态负载均衡算法包括:轮询,比率,优先权

动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式

2.负载均衡的分类

想要实现负载均衡,其实有很多种做法,在深入介绍负载均衡之前,要先介绍一个概念,那就是OSI七层网络模型

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范

OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是

  • 7、应用层;
  • 6、表示层;
  • 5、会话层;
  • 4、传输层;
  • 3、网络层;
  • 2.数据链路层;
  • 1.物理层;

其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流

在这七层模型种,高层次都是依赖于低层次的。层次越高,使用起来越方便
在这里插入图片描述

  • telnet、HTTP、FTP、NFS、SMTP、DNS等属于第七层应用层的概念
  • TCP、UDP、SPX等属于第四层传输层的概念。
  • IP、IPX等属于第三层网络层的概念。
  • ATM、FDDI等属于第二层数据链路层的概念

了解了网络协议的七层模型以后,再来看看负载均衡。我们可以很明确的一点是,负载均衡是要在网络传输中做文章的。而要在网络传输过程搞事情,那么这七层模型就势必躲不开。

所以,根据负载均衡技术实现在OSI七层模型的不同层次,是可以给负载均衡分类的。

常见的实现方式中,主要可以在应用层传输层网络层数据传输层做文章。

所以,工作在应用层的负载均衡我们通常称之为七层负载均衡、工作在传输层的我们称之为四层负载均衡

大致可以分为以下几种,其中最常用的是四层和七层负载均衡:

2.1 二层负载均衡

负载均衡服务器对外依然提供一个VIP (虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡。

2.2 三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址,当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

2.3 四层负载均衡

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还句含源端口号及目的端口号。

四层负载均衡服务器在接受到客户端请求后,以后通过修改数据句的地址信息 (IP+端口号)将流量转发到应用服务器

2.4 七层负载均衡

七层负载均衡工作在OS模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

3.负载均衡工具

市面上有很多开源的负载均衡的工具或软件,基本都是基于前面提到的方案实现的,大多数是工作在第七层和第四层的。Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。

3.1 LVS

LVS (Linux Virtual Server),也就是Linux虚拟服务器。

使用LVS技术要达到的目标是: 通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

LVS主要用来做四层负载均衡

3.2 Nginx

Nginx (发音同engine x) 是一个网页服务器,它能反向代理HTTP,HTTPS,SMTP,POP3,IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。

Nginx主要用来做七层负载均衡.

3.3 HAProxy

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

HAProxy主要用来做七层负载均衡

4.常见负载均衡算法

负载均衡服务器在决定将请求转发到具体哪台真实服务器的时候,是通过负载均衡算法来实现的。负载均衡算法是一个负载均衡服务器的核心。

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法

静态负载均衡算法包括:轮询,比率,优先权

动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式

  • 轮询(Round Robin): 顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7层的故障,BIG-IP 就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。
  • 比率(Ratio): 给每个服务器分配一个加权值为比例,根据这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-P 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  • 优先权 (Priority): 给所有服务器分组,给每个组定义优先权,BIG-P 用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。
  • 最少的连接方式(Least Connection): 传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配。直到其恢复正常。
  • 最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  • 观察模式 (Observed): 连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常
  • 预测模式 (Predictive): BIG-P利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIG-IP 进行检测)
  • 动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。
  • 动态服务器补充(Dynamic Server Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
  • 服务质量(QOS) :按不同的优先级对数据流进行分配
  • 服务类型(ToS): 按不同的服务类型 (在Type of Field中标识)负载均衡对数据流进行分配
  • 规则模式: 针对不同的数据流设置导向规则,用户可自行。

5.面试回答模板

负载均衡主要是将用户的请求均匀的分配到多台机器上,避免单台服务器过载,按照层次划分,负载均衡主要分为四层和七层,其中四层主要在网络传输层,由于网络传输层只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还句含源端口号及目的端口号,所以其负载均衡是基于IP和端口实现,像LVS它只看请求的 IP 和端口(比如 TCP/UDP 协议),适合处理简单的流量分发,比如数据库连接、视频流媒体。而七层的网络协议主要在应用层,比如 Nginx、HAProxy,它能识别 HTTP 请求中的 URL、Host、Cookie 等内容,适合更复杂的路由规则,比如用户访问 /api/v1 的接口,负载均衡器可以识别到这是 API 请求,直接转发到专门的 API 服务器;而访问 /static/ 的静态资源,就转发到 CDN 或静态服务器。负载均衡的转发策略主要基于负载均衡算法实现,如轮询、权重、随机、最小连接数等策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94686.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94686.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/94686.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyTorch 核心三件套:Tensor、Module、Autograd

欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。 目录引言1 Tensor1.1 🛠️Tensor 的核心用…

python源码是如何运行起来的

为什么要了解底层原理 写出高质量代码 问题定位 满足好奇心 机械通感 开始 当我们编写并运行一行 print(Hello, World!) 时,背后究竟发生了什么?Python 代码是如何从我们可读的文本,变成计算机可以执行的指令的呢? 很多人将…

MacOS Docker 安装指南

MacOS Docker 安装指南 引言 Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。Docker …

Cisco 3750X交换机更新到IOS 15.2后无法启动 提示:Boot process failed...

背景及故障现象 一台新购入的二手Cisco 3750X-48P,原机自带IOS软件版本为12.x,可以正常工作。 但将IOS版本升级到15.2之后,在启动过程中卡住。 第一次加载IOS软件时是正常的,提示: Loading "flash:/c3750e-uni…

Redis Redis 常见数据类型

Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维非常重要,同时掌握每种数据结构的常见命令,会在使用 Redis 的时候做到游刃有余。 一、预备知识 官方文档:Commands | Docs (redis.io) 1、最核心的两个命令…

金融风控实战:Spring Boot + LightGBM 贷款预测模型服务化(超详细版)

金融风控实战:Spring Boot LightGBM 贷款预测模型服务化(超详细版)一、整体架构设计二、模型训练与优化1. 特征工程(Python)2. 模型评估与优化三、Spring Boot 服务实现1. 项目结构2. ONNX 模型服务3. 特征工程服务4.…

前端学习 7:EDA 工具

目录 EDA 工具 Design Ware Synopsys CoreTools 套件 VCS verdi Design Compiler EDA 工具 常用的EDA工具主要来自三家公司:Synopsys、Cadence和Mentor(已被Siemens收购)。EDA,全称电子设计自动化(Electronics …

windows有一个企业微信安装包,脚本执行并安装到d盘。

以下是将本地已有的企业微信安装包安装到D盘的完整PowerShell脚本&#xff0c;包含详细的错误处理和进度反馈&#xff1a; <# .SYNOPSIS使用本地企业微信安装包安装到D盘 .DESCRIPTION自动检测本地安装包&#xff0c;静默安装到指定目录支持.exe和.msi格式安装包 #># 强制…

[LVGL] 布局系统 lv_flex, lv_grid | 输入设备 lv_indev | union

第五章&#xff1a;布局系统&#xff08;lv_flex, lv_grid&#xff09; 欢迎回来&#xff01; 在第四章&#xff1a;样式&#xff08;lv_style&#xff09;中&#xff0c;我们掌握了如何通过色彩、字体和圆角等特性美化部件。当界面元素具备视觉吸引力后&#xff0c;如何优雅…

Linux中的mkdir命令

基本语法mkdir 命令的基本语法如下&#xff1a;mkdir [选项] 目录名创建单个目录要创建一个新目录&#xff0c;只需在 mkdir 后跟上目录名称。例如&#xff1a;mkdir new_folder这会在当前工作目录下创建一个名为 new_folder 的目录。创建多个目录可以一次性创建多个目录&#…

基于大数据的美食视频播放数据可视化系统 Python+Django+Vue.js

本文项目编号 25003 &#xff0c;文末自助获取源码 \color{red}{25003&#xff0c;文末自助获取源码} 25003&#xff0c;文末自助获取源码 目录 一、系统介绍二、系统录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状 六、核心代码6.1 查询数据6.2 新…

微信小程序精品项目-基于springboot+Android的计算机精品课程学习系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

(五)系统可靠性设计

2024年博主考软考高级系统架构师没通过&#xff0c;于是决定集中精力认真学习系统架构的每一个环节&#xff0c;并在2025年软考中取得了不错的成绩&#xff0c;虽然做信息安全的考架构师很难&#xff0c;但找对方法&#xff0c;问题就不大&#xff01; 本文主要是博主在学习过程…

Shuffle SOAR使用学习经验

Shuffle SOAR 1. 基础操作与配置1.1 环境搭建与系统要求1.1.1 硬件与操作系统要求Shuffle SOAR 平台作为一款开源的安全编排、自动化与响应&#xff08;SOAR&#xff09;工具&#xff0c;其部署方式灵活&#xff0c;支持云端和自托管两种模式。对于自托管部署&#xff0c;官方推…

腾讯云 EdgeOne 产品分析与免费套餐体验指南

本文围绕腾讯云 EdgeOne 展开&#xff0c;全方位介绍它的核心能力、免费套餐内容&#xff0c;以及如何快速上手、监控和排查常见问题&#xff0c;帮助个人开发者和中小企业在不产生额外成本的前提下体验高性能的边缘加速与安全防护。 一、产品概述 EdgeOne 定位 一体化云服务平…

npm ERR! Unsupported URL Type “workspace:“: workspace:./lib

如下 npm install npm ERR! code EUNSUPPORTEDPROTOCOL npm ERR! Unsupported URL Type "workspace:": workspace:./libnpm ERR! A complete log of this run can be found in: D:\IDEA\nodejs\node_cache\_logs\2025-08-06T08_21_32_592Z-debug-0.log原因及解决 pac…

微积分: 变化与累积

微积分,这门研究变化与累积的数学分支,其核心思想竟与东方哲学中"易"的概念不谋而合。《易经》有云:“易有太极,是生两仪”,而微积分正是通过"微分"与"积分"这对辩证统一的操作,揭示了世间万物变化与永恒的奥秘。 #mermaid-svg-UjO6qqMm0h…

web-vue工作流程

接续bmcweb流程。 当登录openbmc web页面后,浏览器会根据index.html中的js文件中的routes信息,自动获取信息,比如当前的网络设置信息、Datetime时区时间信息等。 以获取网络配置信息为例: 浏览器从app.js获取到settins->network的route:”/settings/network”,加载对应…

全球化2.0 | 泰国IT服务商携手云轴科技ZStack重塑云租赁新生态

在全球数字化转型不断加速的今天&#xff0c;泰国企业对于高质量云服务的需求日益旺盛。作为深耕本地市场逾二十年的行业领先IT服务商&#xff0c;泰国IT服务商不仅覆盖了IT系统、软件、硬件及网络等多个领域&#xff0c;还持续引领当地技术服务创新。近期&#xff0c;该泰国IT…

一文搞懂Hive临时表操作秘籍

Hive 临时表&#xff1a;数据处理的得力助手 在大数据处理的广阔领域中&#xff0c;Hive 凭借其强大的数据仓库功能&#xff0c;成为了众多数据分析师和开发者的得力工具。Hive 提供了类似 SQL 的查询语言 HiveQL&#xff0c;让我们能够方便地对存储在 Hadoop 分布式文件系统&a…