每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。

介绍负载均衡模式、负载均衡器的类型、云负载均衡器、开源负载均衡器,最后是负载均衡器的选择策略。
今天互联网上的任何现代网站都会收到数千次点击,如果不是数百万次的话。如果没有任何可扩展性策略,网站要么崩溃,要么性能显着下降——这是我们希望避免的情况。众所周知,添加更强大的硬件或垂直扩展只会延迟问题的出现。但是,如果没有经过深思熟虑的方法,添加多台服务器或水平扩展可能无法充分发挥其优势。
在任何领域创建高度可扩展系统的秘诀是使用经过验证的软件架构模式。软件架构模式使我们能够创建具有成本效益的系统,可以处理数十亿个请求和 PB 级数据。本文描述了称为负载平衡的最基本和流行的可伸缩性模式。负载均衡的概念对于任何在云中构建高流量站点的开发人员来说都是必不可少的。文章首先介绍了负载均衡器,然后讨论了负载均衡器的类型;接下来是云中的负载均衡,然后是开源选项,最后是选择负载均衡器的一些建议。
什么是负载均衡器?
负载均衡器是一种流量管理器,可将传入的客户端请求分布到所有可以处理它们的服务器上。该模式通过最小化请求处理时间和最大化容量利用率来帮助我们实现云计算的全部潜力。流量管理器仅将请求分派给可用的服务器;因此,该模式适用于可扩展的云系统。每当将新服务器添加到组中时,负载均衡器就会开始分派请求并扩大规模。相反,如果服务器出现故障,调度程序会将请求重定向到组中的其他可用服务器并缩小规模,这有助于我们节省资金。
负载均衡器的类型
在了解了负载均衡器的基础知识之后,接下来就是熟悉负载均衡算法。大致有两种类型的负载平衡算法。
1. 静态负载均衡器
静态负载均衡器根据算法平均分配传入流量。
- Round Robin是执行负载平衡的最基本和默认算法。它将流量按顺序分配到组中的服务器列表。该算法假定应用程序是无状态的,并且可以隔离地处理来自客户端的每个请求。每当有新请求进入时,它都会转到序列中的下一个可用服务器。由于该算法是基本的,因此不适用于大多数情况。
- 加权循环法是循环法的一种变体,管理员可以在其中为服务器分配权重。具有更高容量的服务器将接收比其他服务器更多的流量。该算法可以解决一个组具有不同容量的服务器的场景。
- Sticky Session,也称为 Session Affinity 算法,最适合来自客户端的所有请求都需要由特定服务器提供服务的情况。该算法通过识别来自特定客户端的请求来工作。可以通过使用 cookie 或 IP 地址来识别客户端。该算法在数据、内存和使用缓存方面效率更高,但如果服务器开始陷入超长会话,则性能可能会严重下降。此外,如果服务器出现故障,会话数据将丢失。
- IP 哈希是另一种将请求路由到同一服务器的方法。该算法使用客户端的 IP 地址作为散列密钥,并根据密钥调度请求。此算法的另一个变体使用请求 URL 来确定哈希键。
2. 动态负载均衡器
顾名思义,动态负载平衡器会考虑每个服务器的当前状态并相应地分派传入请求。
- Least Connection将流量分派给连接数最少的服务器。假设所有服务器都是平等的,具有最少连接数的服务器将拥有最多可用资源。
- 加权最少连接是最少连接的另一种变体。它为管理员提供了为具有更高容量的服务器分配权重的能力,以便可以根据容量分配请求。
- 最少响应时间考虑响应时间和连接数。请求被分派到具有最少连接和最短平均响应时间的服务器。原则是确保为客户提供最好的服务。
- 自适应或基于资源分配负载并根据资源(即服务器上可用的 CPU 和内存)做出决策。专用程序或代理在每台服务器上运行,用于测量服务器上的可用资源。负载均衡器查询代理来决定和分配传入的请求。
云中的负载平衡
一个成功的云策略是将负载均衡器与 Auto Scaling 结合使用。通常,监控云应用程序的网络流量、内存消耗和 CPU 使用率。这些指标和趋势可以帮助定义扩展策略以动态添加或删除应用程序实例。云中的负载均衡器会考虑动态调整大小并根据可用服务器分派流量。以下部分描述了云中一些广为人知的解决方案:
AWS:弹性负载平衡 (ELB)
Amazon ELB是一种高度可用且可扩展的负载均衡解决方案。它非常适合在 AWS 中运行的应用程序。以下是可供选择的 Amazon ELB 的四种不同选择:
- 应用程序负载均衡器用于 HTTP 和 HTTPS 流量的负载均衡。
- 网络负载均衡器用于对 TCP、UDP 和 TLS 流量进行负载均衡。
- Gateway Load Balancer 用于部署、扩展和管理第三方虚拟设备。
- Classic Load Balancer 用于跨多个 EC2 实例进行负载平衡。
GCP – 云负载平衡
Google Cloud Load Balancing是 Google 提供的一种高性能且可扩展的产品。它可以支持每秒高达 100 万次以上的查询。它可以分为两大类,即内部和外部。每个主要类别根据传入流量进一步分类。以下是一些负载均衡器类型。
- 内部 HTTP(S) 负载平衡
- 内部 TCP/UDP 负载平衡
- 外部 HTTP(S) 负载平衡
- 外部 TCP/UDP 网络负载平衡
可以在Google 负载平衡器页面上找到比较所有可用负载平衡器的完整指南。
微软 Azure 负载均衡器
Microsoft Azure 负载平衡解决方案提供三种不同类型的负载平衡器:
- 标准负载均衡器 - 公共和内部第四层负载均衡器。
- 网关负载均衡器 - 用于第三方网络虚拟设备的高性能和高可用性负载均衡器。
- Basic Load Balancer - 小型应用程序的理想选择。
开源负载均衡解决方案
尽管默认选择始终是使用供应商特定的云负载均衡器,但也有一些开源负载均衡器选项可用。下面是其中的两个。
NGINX
NGINX 提供NGINX Plus和NGINX现代负载均衡解决方案。有许多流行的网站,包括 Dropbox、Netflix 和 Zynga,都使用 NGINX 的负载均衡器。NGINX 负载均衡解决方案具有高性能,可以帮助提高高流量网站的效率和可靠性。
Cloudflare
Cloudflare是另一种流行的负载平衡解决方案。它提供不同层次的负载均衡器以满足特定的客户需求。定价计划基于所提供的服务、健康检查和安全性。
- 零信任平台计划
- 网站和应用程序服务计划
- 开发者平台计划
- 企业计划
- 网络服务
选择负载均衡器
从上面的部分可以明显看出,负载均衡器可以对应用程序产生很大的影响。因此,选择正确的解决方案至关重要。以下是做出决定的一些注意事项。
- 确定企业的短期和长期目标有助于推动决策。业务需求应有助于确定预期流量、增长区域和服务区域。业务考虑因素还应包括可用性级别、加密的必要性或任何其他需要解决的安全问题。
- 市场上有充足的选择。确定应用程序的必要功能有助于选择正确的解决方案。例如,负载均衡器应该能够处理应用程序的传入流量,例如 HTTP/HTTPS 或 SSL 或 TCP。另一个例子是用于内部流量的负载均衡器与外部负载均衡器有不同的安全问题。
- 云供应商提供各种支持层和定价计划。因此,对总拥有成本、功能和支持层进行详细比较有助于确定项目的正确选择。
大多数专家都认为使用负载均衡器来管理流量是最佳实践,这对云应用程序至关重要。通过使用负载均衡器,应用程序可以更好地满足请求并节省成本。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.