跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
负载均衡设计
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:负载均衡设计}} == 概述 == '''负载均衡'''(Load Balancing)是一种将网络流量或计算任务分配到多个服务器或计算资源的分布式系统技术,目的是优化资源使用、最大化吞吐量、最小化响应时间,并避免单点故障。它是高可用性架构的核心组件,广泛应用于Web服务、数据库、微服务等场景。 == 核心目标 == * '''提高性能''':通过并行处理减少单个节点的压力 * '''增强可靠性''':避免单点故障导致服务中断 * '''实现可扩展性''':支持水平扩展应对流量增长 * '''资源优化''':根据服务器能力动态分配负载 == 技术分类 == === 1. 基于网络层次的分类 === {| class="wikitable" |- ! 类型 !! OSI层 !! 典型协议 !! 特点 |- | '''DNS负载均衡''' || 应用层 (L7) || DNS || 地理分散但更新延迟高 |- | '''HTTP/HTTPS负载均衡''' || 应用层 (L7) || HTTP/1.1, HTTP/2 || 支持内容感知路由 |- | '''TCP/UDP负载均衡''' || 传输层 (L4) || TCP, UDP || 高性能低延迟 |} === 2. 基于调度算法的分类 === <mermaid> pie title 常用负载均衡算法占比 "轮询 (Round Robin)" : 35 "加权轮询 (Weighted RR)" : 25 "最少连接 (Least Connections)" : 20 "IP哈希 (IP Hash)" : 15 "其他算法" : 5 </mermaid> == 详细算法说明 == === 轮询算法 (Round Robin) === 最简单的分配方式,依次将请求分发给后端服务器。 <syntaxhighlight lang="python"> servers = ['server1', 'server2', 'server3'] current = 0 def round_robin(): global current server = servers[current % len(servers)] current += 1 return server # 示例输出 print(round_robin()) # server1 print(round_robin()) # server2 print(round_robin()) # server3 print(round_robin()) # server1 </syntaxhighlight> === 加权轮询算法 === 为性能不同的服务器分配不同权重,数学表达: <math> W_i = \frac{w_i}{\sum_{j=1}^n w_j} </math> === 最少连接算法 === 动态跟踪服务器当前活跃连接数,选择压力最小的节点。 == 系统架构示例 == <mermaid> graph TD A[客户端] --> B[负载均衡器] B --> C[Web服务器1] B --> D[Web服务器2] B --> E[Web服务器3] C --> F[(数据库集群)] D --> F E --> F </mermaid> == 健康检查机制 == 负载均衡器通过定期检查确保后端可用性: * '''主动检查''':发送HTTP HEAD/GET请求 * '''被动检查''':监控TCP连接失败率 * '''混合模式''':结合两者优势 == 实际案例 == === 案例1:电商大促 === 某电商在"双11"期间: * 使用L7负载均衡根据URL路径分流(/api/ 到应用服务器,/static/ 到CDN) * 自动扩展组配合负载均衡器动态增减EC2实例 * 峰值时处理每秒50万请求 === 案例2:游戏服务器 === 多人在线游戏采用: * UDP负载均衡降低延迟 * IP哈希保持玩家会话一致性 * 地理分区负载均衡(亚洲/欧美服务器组) == 进阶话题 == === 一致性哈希 === 解决传统哈希在节点变化时的大规模数据迁移问题: <math> h(key) \mod 2^{32} \rightarrow \text{虚拟节点环} </math> === 弹性负载均衡 === 云服务商(AWS ALB/NLB)提供的特性: * 自动证书管理 * WAF集成 * 跨可用区容灾 == 常见问题 == {{Collapse|title=Q: 如何选择L4还是L7负载均衡?| * '''L4''':需要高性能(如视频流、游戏) * '''L7''':需要内容感知(如HTTP头/URL路由) }} {{Collapse|title=Q: 会话保持如何实现?| * Cookie插入 * 源IP绑定 * 应用层会话令牌 }} == 性能指标 == 关键监控指标包括: * 请求速率 (RPS) * 平均延迟 * 错误率 (5xx) * 后端利用率 == 延伸阅读 == * 《Scalability Rules》- Martin L. Abbott * AWS Elastic Load Balancing 白皮书 * Nginx负载均衡配置指南 [[Category:系统设计]] [[Category:分布式系统]] [[Category:计算机科学]] [[Category:面试技巧]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Collapse
(
编辑
)