网页加载出现没有合适的负载均衡器_系统设计基础:负载均衡器Load Balancer入门...

系统设计101,热门网站如何处理大量请求

b1dc571a731deaa7ea65d483adbf0656.png

> Photo by JOSHUA COLEMAN on Unsplash

系统设计是软件工程最重要的概念之一。当我开始助理架构课程时,我很难理解您如何设计系统。主要问题之一是,一开始很难理解系统设计资源中使用的术语。

本文研究了系统设计的一个重要主题,即负载均衡器。您可能在这里了解其特性和服务器选择技术。熟悉系统设计的基本概念和术语将极大地帮助您设计系统。

负载均衡器

负载均衡器是任何分布式系统的重要组成部分。它有助于在服务器群集内分发客户端请求,以提高应用程序或网站的响应速度和可用性。

根据Wikipedia的说法,"负载均衡是指在一组资源上分配一组任务的过程。"

06dd66adb0464a27d611bb993ad2e59e.png

> Image By Author

例如,如果一台服务器不能同时处理大量请求,则需要一个负载均衡器。 其主要目的是优化每个任务的响应时间。 现在,假设系统中有一台服务器因客户端的请求而过载。 服务器具有每秒服务请求的限制。 因此,我们需要添加更多服务器来处理大量请求。 但是我们可能需要一个负载均衡器来平衡服务器之间的负载。

负载均衡器是一台服务器,通常位于客户端设备和一组服务器之间,并在服务器之间分配客户端请求。负载均衡器可以放置在系统的各个位置。服务器上的负载需要以平衡的方式分配;这就是为什么它们被称为负载均衡器。

f6e79b31919569df6c9a523c3d70337a.png

因此,我们可以说负载平衡是跨多个资源分配客户端请求的过程。如果服务器不可用于处理新请求或没有响应,则负载均衡器将停止向该服务器发送请求。

众所周知,负载均衡器可防止服务器过载。 负载均衡器的另一个基本任务是对服务器进行连续的运行状况检查,以确保它们可以处理请求。 它通过平衡用户请求来确保更好地利用系统资源。 在系统设计中,水平缩放是在有大量用户的情况下缩放我们的系统的常见策略。 负载均衡器是用于水平扩展的解决方案。 通过平衡系统的传入流量,LB可以防止服务器过载。 它还可以确保更好的系统整体吞吐量。 延迟应该减少,因为请求不会被阻塞,用户也不必等待请求被处理。

负载均衡器可以是硬件LB和软件LB两种。 在本文中,我们重点介绍软件负载均衡器。

我们在哪里使用负载均衡器?

通常,我们可以在客户端和服务器之间放置一个负载均衡器,以处理传入的网络请求。 LB的另一种非常正常的用法是在后端服务器之间分配网络流量。 负载均衡器用于减少单个服务器的负载。 而且它可以防止任何服务器出现单点故障。 因此,它提高了系统的整体可用性和响应能力。 我们可能会在系统中的不同位置添加LB。 特别是在我们拥有多个资源(例如服务器或数据库或缓存)的地方。

我们为什么使用负载均衡

对于任何系统设计组件来说,最重要的是我们知道为什么以及何时使用组件。负载均衡是系统可用性和整体吞吐量的重要组成部分。这是负载均衡用法的一些示例:

· 在设计系统时,其主要考虑因素之一是创建更快的用户体验和不间断的服务。 用户请求不应等待尚未完成其先前任务的单个服务器。 在这种情况下,客户端请求将立即分发到响应的可用服务器。 那是我们需要使用负载均衡器的时候; 平衡多种资源之间的任务。 图1就是这样一个例子:

· 可用性是分布式系统的关键特征。在服务器完全故障的情况下,这不会影响用户体验,因为负载均衡器只会将客户端请求发送到运行正常的服务器。

· 我们可以在负载均衡器中使用预测性分析来确定流量瓶颈,然后再进行处理。它可以帮助您制定业务决策。

· 负载均衡可确保多个设备执行可承受的工作量,而不是由单个资源执行大量工作。

· 负载均衡器的另一项任务是保护系统免受分布式拒绝服务(DDoS)攻击。软件负载均衡器可以提供针对DDoS攻击的有效且低成本的保护。

服务器选择:

我们知道负载均衡器会从多个服务器中选择一个后端服务器。如何选择服务器?负载均衡器在将客户端请求转发到服务器之前要考虑两个主要因素:

· 首先,负载均衡器需要确保所选服务器具有响应能力; 表示它正在响应其请求。

· 其次,负载均衡器使用一种预先配置的算法从一组响应正常的服务器中选择一个。

运行状况检查:负载均衡器需要将流量转发到运行状况良好或响应迅速的后端服务器。 为了监视健康,负载均衡器不断尝试连接到后端服务器,以确保服务器正在侦听。 如果服务器无法通过运行状况检查进行ping操作,则会将其从池中删除,并且直到再次响应之前,请求都不会转发到该服务器。

76daee9e8150a200e554f616a2743de5.png

负载均衡技术:

有多种类型的负载均衡方法。 每种类型出于不同目的使用不同的算法。 这些技术实际上是服务器选择策略的不同类型。 以下是负载均衡技术的列表:

· 随机选择:在这种方法中,服务器是随机选择的。 选择服务器时没有计算其他因素。 某些服务器可能处于闲置状态,而某些服务器因这种技术而被请求超载。

· Round Robin:这是最常见的负载平衡方法之一。这是一种方法,LB会按一定顺序在一组服务器之间重定向传入的流量。检查图2;列出了五台服务器;第一个请求发送到服务器1,第二个请求发送到服务器2,依此类推。当LB到达列表的末尾时,它将从服务器1的开头重新开始。它几乎均匀地平衡了服务器之间的流量。但是在这种方法中,不考虑服务器规格。服务器必须具有相同的规格,此方法才有用。否则,处理能力低的服务器可能与处理能力高的服务器具有相同的负载。

688a49461919099bb2355d19ed658b3d.png

> Figure 2: Round Robin Method for load balancing (Image By Author)

· 加权循环法:这是先前描述的循环法的更新版本。它比上一个更加复杂。此方法旨在处理具有不同特征的服务器,这在常规轮询中是个问题。权重分配给每个服务器。该权重可以是根据服务器的处理能力而变化的整数值。更高处理服务器获得更多连接,以利用其更强大的资源。因此,此处的流量重定向取决于服务器的处理能力。

· 最少连接:负载平衡器在收到客户端请求时将活动连接最少的服务器发送到服务器。如果服务器忙于长时间计算,并且客户端和服务器之间的连接保持较长时间,则此方法很有用。

· 响应时间最短:此算法将活动连接最少,响应时间最短(平均)的客户端请求发送到服务器。 响应最快的后端服务器接收下一个请求。

· 源IP哈希:通过这种方法,将生成客户端IP地址的哈希,用于为客户端选择服务器。即使连接断开,客户端的下一个请求仍将发送到同一服务器。因此,可以在需要将客户端连接到断开连接后仍处于活动状态的会话的情况下使用此方法。它可以最大化我们的缓存命中率并提高性能。

结论

负载均衡器的任务是在多个后端服务器之间分配传入的客户端流量。负载平衡减少了用户的等待时间。在缩放系统时,在水平缩放的情况下,它是至关重要的组件。我们添加或删除的服务器越多,拥有负载平衡器将有助于保持更改。当添加新服务器或从服务器池中删除服务器时,需要更新负载均衡器;否则,可能会浪费资源,或者可能无法处理某些请求。在设计系统时,我们需要根据系统需求选择服务器选择策略。

(本文由闻数起舞翻译自Yasmine Hejazi的文章《System Design Basics: Getting started with Load Balancer》,转载请注明出处,原文链接:https://codeburst.io/system-design-basics-load-balancer-101-adc4f602d08f)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值