【分布式架构理论3】分布式调用(1):负载均衡

news/2025/2/6 15:15:48 标签: 分布式, 架构, 负载均衡

文章目录

零、三种不同的负载均衡

  1. DNS 负载均衡: 以客户端请求应用服务器为例,如下图所示,客户端会将请求的 URL 发送给 DNS 服务器,DNS 服务器根据用户所处的网络区域选择最近机房为其提供服务,这个选择过程就是 DNS 负载均衡
  2. 硬件负载均衡:每个网络区域都会存在一个或者多个服务器集群,这里会通过硬件负载均衡器(例如 F5)将请求负载均衡到具体的服务器集群,这个过程就是硬件负载均衡
  3. 软件负载均衡:最后,在集群内通过 Nginx 这样的软件负载均衡器将请求分配到对应的应用服务器,就完成了整个负载均衡的过程。

在这里插入图片描述

在这三类负载均衡中,软件负载均衡是我们接触最多的,其他两类只有在特定的场景下才会存在,本文暂时只关注软件负载。

 

分布式系统架构中,负载均衡起着至关重要的作用,决定了请求如何被分配到后端实例,从而影响系统的公平性与正确性。常见的负载均衡方案可分为无状态负载均衡有状态负载均衡,其中不同行业通常采用不同的策略。


 

一、常见行业负载均衡方案

1. 电商与互联网服务

  • Nginx + 轮询或权重轮询:前端流量通常通过 Nginx 进行负载均衡,采用轮询或权重轮询策略,适用于高并发环境。
  • CDN(内容分发网络):在流量高峰时减少原服务器压力,提升页面加载速度。

2. 金融与支付系统

  • 一致性 Hash 负载均衡:确保用户请求落在相同的后端实例,减少数据同步开销。
  • 全状态负载均衡(中央路由调度):通过统一网关管理请求,确保交易一致性。

3. 云计算与分布式存储

  • 最少连接数策略:优先选择当前连接最少的实例,平衡系统负载。
  • 服务网格(Service Mesh):如 Istio,增强服务间通信的灵活性。

 

二、负载均衡策略概述

1. 无状态负载均衡(强调公平性)

无状态负载均衡意味着后端实例彼此对等,一个请求无论被分配到哪个实例,都能得到相同且正确的处理结果。常见的策略包括:

  • 轮询策略:请求按照顺序依次分配给不同实例,适用于处理能力均衡的实例。
  • 权重轮询策略:基于实例的处理能力赋予不同权重,以更合理地分配请求。
  • 随机策略、最少连接数策略:用于实例性能无明显差异的情况。

2. 有状态的负载均衡(强调正确性)

有状态负载均衡确保请求被分配到正确的后端实例,防止数据不一致或错误。主要策略包括:

  • Hash 负载均衡:基于用户 ID 或 IP 进行 Hash 计算,确保同一用户请求落在同一实例。
  • 一致性 Hash 负载均衡:解决 Hash 方案扩容时的迁移问题。
  • 全状态负载均衡:使用中央索引服务管理后端实例 ID 和状态信息,实现精确路由。

 

三、 总结

  • 电商、金融、云计算行业负载均衡各有侧重点,如 Nginx 轮询、Hash 策略、最少连接数等。
  • 无状态负载均衡适用于大多数互联网业务,如轮询、权重轮询等。
  • 有状态负载均衡适用于需要数据一致性的场景,如支付系统、分布式数据库。
  • 扩容 Hash 路由的 MySQL 集群时,可采用一致性 Hash、预分片、流量切换等方案

通过合理的负载均衡策略,可大幅提升系统的性能、可用性和扩展能力,为高并发业务提供稳健支撑。

 


http://www.niftyadmin.cn/n/5843116.html

相关文章

前端开发中的“原生模块化”——深入解析ES模块(ESM)的使用与优化

随着前端开发技术的不断演进,模块化的概念已不再是新鲜话题。然而,前端开发者仍然面临如何选择和使用模块化工具和规范的问题。近年来,ES模块(ESM,ECMAScript Modules)作为一种原生支持的模块化机制&#x…

DRGDIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)

一、引言 1.1 研究背景与意义 在医疗领域的改革进程中, DRG/DIP 2.0 时代,医院成本管理的重要性愈发凸显。新的医保支付方式下,医院的收入不再单纯取决于医疗服务项目的数量,而是与病种的分组、费用标准以及成本控制紧密相关。这…

防孤岛保护装置在分布式光伏并网中的应用

什么是光伏的“孤岛效应” 孤岛islanding 包含负荷和电源的部分电网,从主网脱离后继续孤立运行的状态。孤岛可分为非计划性孤岛和计划性孤岛。 孤岛效应的危害 当电网侧停电检修,若并网光伏电站的逆变器仍在继续供电,维修人员不一定…

2024年Web前端最新Java进阶(五十五)-Java Lambda表达式入门_eclipse lambda(1),面试必备

对象篇 模块化编程-自研模块加载器 开源分享:【大厂前端面试题解析核心总结学习笔记真实项目实战最新讲解视频】 Arrays.sort(players, sortByName); // 1.3 也可以采用如下形式: Arrays.sort(players, (String s1, String s2) -> (s1.compareTo(s2))); ??其…

华水967数据结构2024真题(回忆版)

一、 选择[10道) (20分). 1、数据结构中,从逻辑结构上可以把数据结构分为() 答案:线性结构和非线性结构 2、给了一个二叉树的中序遍历,求二叉树的后序遍历 解析: 要根据中序遍历的结果来推导后序遍历,需要知道二叉…

TiDB 分布式数据库多业务资源隔离应用实践

导读 随着 TiDB 在各行业客户中的广泛应用 ,特别是在多个业务融合到一套 TiDB 集群中的场景,各企业对集群内多业务隔离的需求日益增加。与此同时,TiDB 在多业务融合场景下的资源隔离方案日趋完善,详情可参考文章 《你需要什么样的…

学习threejs,pvr格式图片文件贴图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️PVR贴图1.2 ☘️THREE.Mesh…

实时波形与频谱分析———傅立叶变换

实时波形与频谱分析:一个交互式动画演示 在信号处理领域,时域波形和频域频谱是理解信号特性的重要工具。通过时域波形,我们可以直观地观察信号随时间的变化,而频域频谱则揭示了信号中所包含的频率成分及其幅值。为了帮助大家更好…