您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

负载均衡器在系统设计中的作用

时间:2023-08-29 14:15:10  来源:微信公众号  作者:小技术君

当一个网站变得非常流行时,网站上的流量增加,单个服务器的负载也增加。并发流量超过单个服务器的处理能力,导致网站变得对用户响应缓慢。为了应对这些高数据量的请求,以快速可靠的方式返回正确的响应,我们需要对服务器进行扩展。这可以通过向网络中添加更多的服务器,并将所有请求分布到这些服务器上来实现。但是...谁来决定将哪个请求路由到哪个服务器呢...???



Load-Balancer-System-Design-Interview.png

答案是...负载均衡器。让我们详细了解一下负载均衡器的概念...

什么是负载均衡器?

负载均衡器就像站在服务器前面的“交通警察”,将客户端请求分配到所有服务器上。它会有效地分发一组请求操作(如数据库写请求、缓存查询)到多个服务器上,并确保没有任何单个服务器承受过多的请求,从而降低应用程序的整体性能。负载均衡器可以是一个物理设备,也可以是运行在专用硬件上的虚拟实例,或者是一个软件进程。

考虑一个场景,一个应用程序在单个服务器上运行,客户端直接连接到该服务器而没有负载均衡。它看起来可能像下面这样...

图片

我们需要讨论一下这种模型的两个主要问题...

单点故障:如果服务器崩溃或出现问题,整个应用程序将中断,对用户在一段时间内不可用。这会给用户创建一个不良的体验,这对于服务提供商来说是不可接受的。•服务器过载:一个Web服务器可以处理的请求数量是有限的。如果业务增长,请求数量增加,服务器将会过载。为了解决不断增加的请求,我们需要添加更多的服务器,并将请求分发到这些服务器集群上。

为了解决上述问题,并分发请求的数量,我们可以在Web服务器前添加负载均衡器,通过将请求分发到多个服务器上,允许我们的服务通过在网络中添加任意数量的Web服务器来处理任何数量的请求。我们可以将请求分散到多个服务器上。如果由于某种原因,其中一个服务器下线,服务仍将继续。此外,每个请求的延迟将降低,因为每个服务器不再受限于RAM/磁盘/CPU。

图片

•负载均衡器可以最小化服务器响应时间,最大化吞吐量。•负载均衡器通过仅将请求发送到在线服务器,确保高可用性和可靠性。•负载均衡器进行持续的健康检查,监视服务器处理请求的能力。•根据请求数量或需求,负载均衡器添加或删除服务器数量。

负载均衡器通常放置在哪里?

下面是负载均衡器可能放置的位置的图示...
图片

•客户端应用程序/用户和服务器之间•服务器和应用程序/作业服务器之间•应用程序服务器和缓存服务器之间•缓存服务器和数据库服务器之间

负载均衡器的类型

我们可以通过三种方式实现负载均衡。它们是...

1. 客户端中的软件负载均衡器

顾名思义,所有负载均衡的逻辑位于客户端应用程序中(例如移动应用程序)。应用程序将获得要与之交互的一组Web服务器/应用程序服务器的列表。应用程序选择列表中的第一个服务器,并请求从服务器获取数据。如果持续出现故障(在可配置的重试次数之后)且服务器变得不可用,则丢弃该服务器并选择列表中的其他服务器以继续处理过程。这是实施负载均衡的一种较便宜的方法。

2. 服务中的软件负载均衡器

这些负载均衡器是一种接收一组请求并根据一组规则重定向这些请求的软件。这种负载均衡器提供了更大的灵活性,因为它可以安装在任何标准设备上(例如windowslinux机器)。它也更便宜,因为无需购买或维护物理设备,与硬件负载均衡器不同。您可以选择使用

现成的软件负载均衡器,也可以编写自己的自定义软件(例如,为Microsoft office365的负载均衡负载活动目录查询)。

3. 硬件负载均衡器

顾名思义,我们使用物理设备来将流量分布到网络服务器的集群中。这些负载均衡器也称为第4-7层路由器,可以处理各种HTTP、HTTPS、TCP和UDP流量。HLD(硬件负载均衡器)为外部世界提供虚拟服务器地址。当来自客户端应用程序的请求到达时,它将连接转发到最适合的实际服务器,执行双向网络地址转换(NAT)。HLD可以处理大量的流量,但价格昂贵,灵活性有限。

HLD会持续对每个服务器进行健康检查,确保每个服务器都能正确响应。如果任何服务器没有产生期望的响应,它会立即停止向服务器发送流量。这些负载均衡器难以获取和配置,这就是很多服务提供商只将它们用作用户请求的第一个入口点的原因。随后,内部软件负载均衡器用于将数据重定向到基础设施墙后面。

负载均衡的不同类别

通常,负载均衡器分为三个类别...

1. 第4层(L4)负载均衡器

在OSI模型中,第4层是传输层(TCP/SSL),路由决策在此层进行。第4层负载均衡器也称为网络负载均衡器,顾名思义,它利用网络层信息来进行流量路由决策。它可以控制每秒数百万次的请求,并处理所有形式的TCP/UDP流量。决策将基于数据包使用的TCP或UDP端口以及其源和目标IP地址。第4层负载均衡器还对请求数据包执行网络地址转换(NAT),但它不会检查每个数据包的实际内容。这种负载均衡器的类别通过将流量分布到IP地址、交换机和路由器上来最大化利用率和可用性。

2. 第7层(L7)负载均衡器

第7层负载均衡器也称为应用程序负载均衡器HTTP(S)负载均衡器。这是最古老的负载均衡形式之一。在OSI模型中,第7层是应用层(HTTP/HTTPS),路由决策在此层执行。第7层添加了内容切换以进行负载均衡,它使用诸如HTTP头、Cookie、统一资源标识符、SSL会话ID和html表单数据等信息来决定路由请求的服务器。

3. 全局服务器负载均衡(GSLB)

如今,许多应用程序在多个地理位置的云数据中心中托管。这是很多组织转向不同负载均衡器的原因,它可以以更大的可靠性和较低的延迟向任何设备或位置交付应用程序。随着负载均衡器功能的显著变化,GSLB满足了IT组织的这些期望。GSLB在不同地理位置扩展了L4和L7服务器的功能,并有效地分发大量流量到多个数据中心。在用户在数字工作空间中导航多个应用程序和服务时,它还确保了一致的用户体验。

负载均衡算法

我们需要一种负载均衡算法来决定将哪个请求重定向到哪个后端服务器。不同的系统使用不同的方式从负载均衡器中选择服务器。根据配置,公司使用各种负载均衡算法技术。以下是一些常见的负载均衡算法:

1. 轮询法(Round Robin)

请求在服务器之间按顺序或轮换方式分发。例如,第一个请求发送到第一个服务器,第二个请求发送到第二个服务器,第三个请求发送到第三个服务器,依此类推,对所有请求进行处理。这种方法容易实现,但它不考虑服务器上的负载,因此存在一个风险,即一个服务器接收到大量请求并变得过载。

2. 加权轮询法(Weighted Round Robin)

这与轮询技术非常相似。唯一的区别在于,列表中的每个资源都被赋予加权分数。根据加权分数,请求将分发到这些服务器。因此,在这种方法中,一些服务器获得整体请求的较大份额。

3. 最少连接法(Least Connection Method)

在此方法中,请求将被定向到具有最少请求或活动连接数量的服务器。为了执行此操作,负载均衡器需要进行一些额外的计算,以识别具有最少连接数的服务器。与轮询方法相比,这可能会稍微昂贵一些,但评估是基于服务器上的当前负载。当在流量在服务器之间不均匀分布时,这种算法非常有用。

4. 最短响应时间法(Least Response Time Method)

这种技术比最少连接法更复

杂。在这种方法中,请求将被转发到具有最少活动连接和最少平均响应时间的服务器。服务器的响应时间代表了服务器的负载和整体预期用户体验。

5. 源IP哈希(Source IP Hash)

在这种方法中,请求将根据客户端的IP地址发送到服务器。客户端的IP地址和接收计算实例的IP地址将使用密码算法进行计算。



Tags:负载均衡   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
三分钟学会负载均衡的重要性与Ribbon集成
在这个充满挑战和收获的60天学习之旅中,你将迅速提升成为一名全栈工程师。专注于Spring Boot框架,我们将深入研究高级特性,从项目初始化到微服务架构,再到性能优化和持续集成部...【详细内容】
2024-03-11  Search: 负载均衡  点击:(26)  评论:(0)  加入收藏
C++编程实践:IP哈希负载均衡算法
Nginx是一个高性能的开源Web服务器和反向代理服务器,它可以有效地处理高并发的请求。 下面是Nginx处理高并发的一些主要特点和技术: 事件驱动模型:Nginx使用事件驱动的异步非...【详细内容】
2023-12-11  Search: 负载均衡  点击:(191)  评论:(0)  加入收藏
Nginx的负载均衡实现,你学会了吗?
环境 主机 ip 用途 软件 web1 192.168.50.60 nginx-1 httpd web2 192.168.50.61 nginx-2 httpd proxy 192.168.50.62 负载...【详细内容】
2023-12-06  Search: 负载均衡  点击:(145)  评论:(0)  加入收藏
负载均衡在大规模分布式系统中的应用:解决性能瓶颈
随着互联网的快速发展,大规模分布式系统在各行各业得到了广泛应用。这些系统需要处理大量的请求和数据,面临着性能瓶颈的挑战。负载均衡作为一种关键的技术手段,可以帮助大规模...【详细内容】
2023-11-14  Search: 负载均衡  点击:(298)  评论:(0)  加入收藏
常见的负载均衡算法及其适用场景
负载均衡是指将请求分发到多个服务器上,以实现负载的均衡,提高系统的性能和可靠性。在云计算、大数据等领域,负载均衡技术已经成为了重要的研究方向。本文将介绍常见的负载均衡...【详细内容】
2023-11-13  Search: 负载均衡  点击:(198)  评论:(0)  加入收藏
云计算中的负载均衡技术:实现弹性和可伸缩性
云计算作为一种新型的计算模式,已经成为了许多企业和个人的首选。在云计算中,负载均衡技术起着至关重要的作用,它可以实现系统的弹性和可伸缩性,确保系统能够应对不断变化的负载...【详细内容】
2023-11-13  Search: 负载均衡  点击:(82)  评论:(0)  加入收藏
SpringCloud OpenFeign整合Ribbon实现负载均衡及源码分析
负载均衡器在分布式网络中扮演着非常重要的角色。通过负载均衡,可以实现更好的性能和可靠性,同时提高系统的可扩展性和弹性。目前,SpringCloud体系中,主要使用的有两种:Netflix的...【详细内容】
2023-11-09  Search: 负载均衡  点击:(234)  评论:(0)  加入收藏
Nacos有几种负载均衡策略?
Nacos 作为目前主流的微服务中间件,包含了两个顶级的微服务功能:配置中心和注册中心。1、配置中心扫盲配置中心是一种集中化管理配置的服务,通俗易懂的说就是将本地配置文件“...【详细内容】
2023-11-01  Search: 负载均衡  点击:(215)  评论:(0)  加入收藏
深入剖析Netflix Ribbon:分布式微服务架构的负载均衡神器
作者 | 波哥审校 | 重楼在现代分布式微服务架构中,负载均衡是保证系统高可用、高性能的关键组件之一。Netflix Ribbon作为Netflix开源的负载均衡库,为微服务架构提供了强大的...【详细内容】
2023-11-01  Search: 负载均衡  点击:(220)  评论:(0)  加入收藏
Kubernetes使用OkHttp客户端进行网络负载均衡
在一次内部Java服务审计中,我们发现一些请求没有在Kubernetes(K8s)网络上正确地实现负载均衡。导致我们深入研究的问题是HTTP 5xx错误率的急剧上升,由于CPU使用率非常高,垃圾收集...【详细内容】
2023-10-30  Search: 负载均衡  点击:(261)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条