常用负载均衡技术有哪些?不同网络层面上的网络负载均衡技术

前言

负载均衡是一种策略,它能让多台服务器或多条链路共同承担一些繁重的计算或I/O任务,从而以较低成本消除网络瓶颈,提高网络的灵活性和可靠性。

在系统管理员发现网络性能不好时,可以通过网络负载均衡来分配资源,以实现资源的优化。

网络的发展给人们的生活带来了无穷的乐趣,给人们的工作带来了无穷的便利。但是,网络的迅猛发展,也使得人们对网络产生了非常大的依赖性。

如今,我们对网络上的应用开发层出不穷,以至网络上的业务流量突飞猛进。即使当初网络建设得再超前,配置再合理,资源再优化,却仍然会感到“网络建设总是赶不上应用需求的步伐”。尤其是针对那些网络的核心层,其数据流量和计算强度之大,使得单一的设备根本无法承担起重任。

多设备“劳苦不均”

在现有网络基础上,适量增加一些设备,改单一设备承载为多设备分担,无疑是一种选择。但是,如何在实现同样功能的多个网络设备之间,实现一种合理的业务量的分配就成了多设备下有可能出现设备“劳苦不均”的问题。为此,借助于网络来协调每台设备“工作强度”的负载均衡机制就应运而生了。

用一种比较专业的语言来描述,负载均衡即为建立在现有网络结构之上,提供了一种廉价有效的方法。来扩展服务器带宽和增加吞吐量,以加强网络数据处理能力,提高网络的灵活性和可用性。

负载均衡的主要职责是为解决网络拥塞问题就近提供服务,实现过程与地理位置无关;为用户提供更好的访问质量,提高服务器响应速度、服务器及其它资源的利用效率,从而避免网络的关键部位出现单点失效的现象。

“切入”不同层面

对于一个网络的负载均衡的应用,一般情况下,可以从网络的不同层面“切入”。但是,到底应该从哪个层面入手,这要根据网络瓶颈所处的具体位置而具体分析。

不过,在一般情况下,普遍都是通过传输链路聚合技术、借助更高层网络交换技术和设置服务器集群策略等几个角度来实现。

传输链路聚合技术

为了满足高带宽的应用,越来越多的PC机都在使用更加快速的链路连入网络。一般情况下,网络中业务量的分布是很难平衡的,往往会出现“核心高、边缘低,关键部门高、一般部门低”的现象。

伴随计算机处理能力的大幅度提高,人们对多工作组局域网的处理能力,也相应地有了更高的要求。当企业内部对高带宽应用需求不断增大时,局域网核心部位的数据接口将产生瓶颈问题。瓶颈延长了用户应用请求的响应时间,并且局域网具有分散特性,网络本身并没有针对服务器的保护措施,一个无意的“动作”就会让服务器与网络断开。

在通常情况下,解决瓶颈问题,采用的对策大多是通过提高服务器链路的容量,来超出目前的需求。对于一些大型企业来说,采用升级技术是一种长远的、有前景的解决瓶颈问题的思路。

然而,对于许多企业而言,当需求还没有大到非要投入大量的金钱和时间进行升级时,使用升级技术就显得“不够经济”了。在这种情况下,链路聚合技术为消除传输链路上的瓶颈与不安全因素,提供了成本低廉的解决方案。

链路聚合系统增加了网络的复杂性,但是也提高了网络的可靠性,使人们可以在服务器等关键LAN段的线路上采用冗余路由。

对于IP系统,可以考虑采用VRRP(虚拟路由冗余协议)。VRRP可以生成一个虚拟缺省的网关地址,当主路由器无法接通时,备用路由器就会采用这个地址,使LAN通信得以继续。

高层交换技术

大型网络一般都是由大量专用技术设备组成的,包括防火墙、路由器、第二/三层交换机、负载均衡设备、缓冲服务器和Web服务器等。如何将这些技术设备有机地组合在一起,是一个直接影响到网络性能的关键性问题。

现在,许多交换机提供第四层交换功能,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态,使用其中一个内部地址,达到负载均衡的目的。有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力。

均衡策略的服务器群集

一台普通服务器的处理能力只能达到每秒几万个到几十万个请求,无法在一秒钟内处理上百万个甚至更多的请求。但若能将10台这样的服务器组成一个系统,并通过软件技术将所有请求平均分配给所有服务器,那么这个系统就完全拥有每秒钟处理几百万个甚至更多请求的能力。这就是利用服务器群集实现负载均衡的最初基本设计思想。

新的解决方案是通过LSANT(Load Sharing Network Address Transfer)将多台服务器网卡的不同IP地址翻译成一个VIP(Virtual IP)地址,使得每台服务器永远处于工作状态。原来需要用小型机来完成的工作改由多台PC服务器完成,这种弹性解决方案对投资保护的作用是相当明显的。既避免了小型机刚性升级所带来的巨大设备投资,又避免了人员培训的重复投资。同时,服务运营商可以依据业务的需要随时调整服务器的数量。

网络性能的“依靠”

负载均衡技术的发展,是随着市场的不断需求而发展。它们的功能也从简单逐渐变得更加复杂和强大。总结起来,它的产品和方案经历了几代的发展和演绎。

第一代负载均衡产品是简单的Round-robin DNS机器。它能够把HTTP进程在几个IP主机里进行分配。这类系统使用了简单的PING命令,以保证进程请求不会被送到一个状态不理想的服务器内,并为多服务器引入了一个变量来显示容错率。

第二代负载均衡产品不仅承担着检查服务器是否运行的任务,同时它还要检查服务器的性能状态。也就是说,如果一台服务器负载过重,发进来的请求就会被转发到其它机器上,以保证负载在所有能够获得的资源里均衡分配。

第三代负载均衡产品覆盖了整个内容分发系统。随着Web和网络服务变得越来越成熟,仅监视Web服务器的某一层面是不够的,而是一个可以保证整个内容分发系统顺利运行的负载均衡产品。

网络负载均衡的四大优点

1、网络负载均衡允许用户将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载均衡技术保证即使是在负载很重的情况下它们也能做出快速响应。

2、网络负载均衡对外只须提供一个IP地址(或域名)。

3、如果网络负载均衡中的一台或几台服务器不可用时,服务不会中断。网络负载均衡自动检测到服务器不可用时,能够迅速在剩余的服务器中重新指派客户机通讯。此保护措施能够帮助为关键业务程序提供不中断的服务。同时,可以根据网络访问量的增多,来增加网络负载均衡服务器的数量。

4、网络负载均衡可在普通的计算机上实现。

感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!

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

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

相关文章

ARMV8 RK3399 u-boot TPL启动流程分析 --crt0.S

上一篇介绍到start.S 最后一个指令是跳转到_main, 接下来分析 __main 都做了什么 arch/arm/lib/crt0.S __main 注释写的很详细,主要分为5步 1. 准备board_init_f的运行环境 2. 跳转到board_init_f 3. 设置broad_init_f 申请的stack 和 GD 4. 完整u-boot 执行re…

RabbitMQ--进阶篇

RabbitMQ 客户端整合Spring Boot 添加相关的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 编写配置文件&#xff0c;配置RabbitMQ的服务信息 spri…

Redis--基础知识点--27--redis缓存分类树

在 Redis 中存储分类树&#xff0c;通常需要选择合适的数据结构来表现层级关系。以下是使用 字符串&#xff08;String&#xff09; 和 哈希&#xff08;Hash&#xff09; 两种常见方案的举例说明&#xff0c;结合电商分类场景&#xff08;如 电子产品 > 手机 > 智能手机…

【C++】汇编角度分析栈攻击

栈攻击 介绍原理示例代码汇编分析 介绍原理 核心原理是通过 缓冲区溢出&#xff08;Buffer Overflow&#xff09; 等漏洞&#xff0c;覆盖栈上的关键数据&#xff08;如返回地址、函数指针&#xff09;&#xff0c;从而改变程序执行流程&#xff1b; 在 C 中&#xff0c;每个…

访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时

华为云轻量应用服务器&#xff08;Ubuntu 系统&#xff09; 遇到的问题是&#xff1a; &#x1f512; 访问 Docker 官方镜像源&#xff08;包括代理&#xff09;全部被“重置连接”或超时了&#xff0c;说明你这台服务器的出境网络对这些国外域名限制很严格&#xff0c;常见于华…

Java语言

本文来源 &#xff1a; 腾讯元宝 Java是一种面向对象、跨平台的高级编程语言&#xff0c;最初由Sun Microsystems&#xff08;现为Oracle公司所有&#xff09;于1995年推出&#xff0c;广泛应用于Web开发、移动应用、大数据处理、嵌入式系统等领域。以下是其核心特点和应用概述…

无偿帮写毕业论文(看不懂的可以私信博主)

以下教程教你如何利用相关网站和AI免费帮你写一个毕业论文。毕竟毕业论文只要过就行&#xff0c;脱产学习这么多年&#xff0c;终于熬出头了&#xff0c;完成毕设后有空就去多看看亲人好友&#xff0c;祝好&#xff01; 一、找一个论文模板 废话不多说&#xff0c;先上干货Ov…

python打卡day26

函数、参数、变量 知识点回顾&#xff1a; 函数的定义变量作用域&#xff1a;局部变量和全局变量函数的参数类型&#xff1a;位置参数、默认参数、不定参数传递参数的手段&#xff1a;关键词参数传递参数的顺序&#xff1a;同时出现三种参数类型时 def function_name(parameter…

LeetCode 热题 100 437. 路径总和 III

LeetCode 热题 100 | 437. 路径总和 III 大家好&#xff0c;今天我们来解决一道经典的二叉树问题——路径总和 III。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求计算二叉树中节点值之和等于给定目标值 targetSum 的路径数目。 问题描述 给定一个二叉树的根节点 ro…

vue3学习-局部使用vue框架案例

目录 局部使用vue框架步骤 简单案例1 简单案例2【 结构化赋值语法】 简单案例3【使用模块化开发模式】 基本数据的简单应用&#xff0c;对象的简单应用 数组的简单应用 局部使用vue框架步骤 1 引用 vue框架的核心文件和 涉及ES6语法的文件 注意&#xff1a;这里文件&am…

初识Linux · IP分片

目录 前言&#xff1a; IP分片 分片vs不分片 如何分片 分片举例 三个字段 前言&#xff1a; 前文IP协议上和IP协议下我们已经把IP协议的报头的大多数字段介绍了&#xff0c;唯独有三个字段现在还有介绍&#xff0c;即16位标识&#xff0c;8位协议&#xff0c;13位片偏移…

u3d 定义列表详细过程

层级结构 - Canvas - Scroll View - Viewport - Content (Vertical Layout Group) - Item1 (Prefab) - Item2 (Prefab) ... 详细设置步骤 1. 创建 Canvas 2. 添加 Scroll View 组件 3. 在 Scroll View 下创建 Content 子对象 4. 添加 …

产品方法论与 AI Agent 技术的深度融合:从决策智能到价值创造

一、引言&#xff1a;智能化时代的产品范式革命 在数字化转型的深水区&#xff0c;产品开发正经历着从 “功能定义” 到 “体验设计” 再到 “智能演化” 的范式跃迁。麦肯锡 2024 年报告指出&#xff0c;采用 AI 驱动产品方法论的企业&#xff0c;新品研发周期平均缩短 40%&a…

力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙​编辑力扣300.最长递增子序列

目录 力扣.1471数组的k个最强值 力扣1576.替换所有的问号 力扣1419.数青蛙​编辑 力扣300.最长递增子序列 力扣.1471数组的k个最强值 class Solution {public static int[] getStrongest(int[] arr,int k) {if(karr.length){return arr;}int []retnew int[k];int narr.lengt…

使用docker安装clickhouse集群

1、简介 clickhouse 作为大数据场景中&#xff0c;实现快速检索的常用列式存储数据库&#xff0c;采用物理机部署&#xff0c;会在数据量大的场景中&#xff0c;物理机器存储达到阈值需要扩容&#xff0c;会带来比较大的问题&#xff0c;因此&#xff0c;使用docker部署clickho…

package-lock.json能否直接删除?

package-lock.json能否直接删除&#xff1f; package-lock.json 生成工具&#xff1a;由 npm 自动生成。 触发条件&#xff1a;当运行 npm install 时&#xff0c;如果不存在 package-lock.json&#xff0c;npm 会创建它&#xff1b;如果已存在&#xff0c;npm 会根据它精确安…

如何在 Windows 命令提示符中创建多个文件夹和多个文件

如何在 Windows 命令提示符中创建多个文件夹和多个文件 虽然大多数用户习惯使用 Windows 图形界面来创建文件夹&#xff0c;但如果你需要一次性创建多个文件夹或文件&#xff0c;如同在类Unix系统中可以使用mkdir和touch命令一样&#xff0c;windows下也有创建目录和文件的对应…

leetcode - 滑动窗口问题集

目录 前言 题1 长度最小的子数组&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题2 无重复字符的最长子串&#xff1a; 思考&#xff1a; 参考代码1&#xff1a; 参考代码2&#xff1a; 题3 最大连续1的个数 III&#xff1a; 思考&am…

Ubuntu20.04下如何源码编译Carla,使用UE4源码开跑,踩坑集合

一、简介 作为一个从事算法研究的人员,无人驾驶仿真一直是比较重要的一部分,但是现在比较常见的算法验证都是在carla这个开源仿真平台上做的,所以我有二次开发carla的需求,今天就来讲讲编译CARLA。 网上的教材很多,但还是推荐大家看官网教程:Linux build - CARLA Simul…

Linux云计算训练营笔记day09(MySQL数据库)

Linux云计算训练营笔记day09&#xff08;MySQL数据库&#xff09; 目录 Linux云计算训练营笔记day09&#xff08;MySQL数据库&#xff09;外键约束数据的导入和导出数据的导出数据的导入 DQL 数据查询语言查指定字段查所有字段where 过滤条件and 和 orin 和 not inbetween...an…