负载均衡
负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,是指将请求/数据均匀分摊到多个操作单元上执行
常见互联网分布式架构如上,分为客户端层、反向代理nginx层、站点层、服务层、数据层。
【客户端层】到【反向代理层】的负载均衡,是通过DNS轮询实现的:DNS-server对于一个域名配置了多个解析ip,每次DNS解析请求来访问DNS-server,会轮询返回这些ip,保证每个ip的解析概率是相同的
【反向代理层】到【站点层】的负载均衡,是通过nignx实现的,修改nginx.conf,可以实现多种负载均衡策略:
1)请求轮询
2)最少连接路由:哪个web-server的连接少,路由到哪个web-server
3)ip哈希:ip哈希均衡方法可以使同一个用户的请求固定落到同一台web-server上
【站点层】到【服务层】的负载均衡,是通过服务连接池实现的。
【数据层】的负载均衡,分为数据的均衡与请求的均衡
常见的水平切分方式有:
(1)按照range水平切分
每一个数据服务,存储一定范围的数据
优点:
(1)规则简单,service只需判断一下uid范围就能路由到对应的存储服务
(2)数据均衡性较好
(3)比较容易扩展
缺点:
(1)请求的负载不一定均衡
(2)按照id哈希水平切分
优点:
(1)规则简单,service只需对uid进行hash能路由到对应的存储服务
(2)数据均衡性较好
(3)请求均匀性较好
缺点:
(1)不容易扩展,扩展一个数据服务,hash方法改变时候,可能需要进行数据迁移
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)