论系统负载均衡设计方法

题源类型未标注
年份/批次
适用项目某互联网公司线上商品交易与运营平台
主题概念负载均衡的核心是把访问请求或处理任务按照一定策略分摊到多个服务器、服务实例或数据节点上,以提高系统吞吐能力、响应速度和资源利用率
常见方法服务集群负载均衡、反向代理与 CDN、数据库读写分离、缓存分流和分布式存储等
已选论文点反向代理与 CDN 分流 / 服务集群负载均衡 / 读写分离与缓存分流
编辑主题 查看原文
背诵模式

论文点

新建论文点
反向代理与 CDN 分流 排序:1 编辑
项目位置/技术/需求在系统入口层,我们采用反向代理与 CDN 分流来满足活动期间多入口高并发访问的要求
解决的问题该平台既有移动端用户访问,也有 Web 端和运营后台访问,如果所有请求都直接进入后端应用节点,热门活动开始时容易出现连接数过高、响应变慢甚至节点不可用的问题
解决的方法为解决这一问题,我们在外部访问入口前部署 Nginx 和 Spring Cloud Gateway,用户请求先经过 Nginx 分发到多个网关实例,再由 Gateway 完成认证、限流、路由和访问日志记录
具体的实现对于活动页面、商品图片和规则说明等内容,我们提前发布到 CDN 和前端缓存中,尽量由边缘节点直接响应
例子以用户打开活动页并提交订单为例,浏览类请求优先命中 CDN 或缓存节点,真正需要交易处理的下单请求才进入后端网关
效果通过反向代理与 CDN 分流,系统能够把集中到达的访问压力分散到入口节点和边缘节点,减少核心应用在活动开始瞬间承受的压力
服务集群负载均衡 排序:2 编辑
项目位置/技术/需求在业务服务层,我们采用服务集群负载均衡来满足服务横向扩展和故障隔离的要求
解决的问题平台中的商品、订单、库存和支付等业务能力调用频繁,如果每类服务只部署一个实例,一旦该节点负载过高或发生故障,就会影响对应业务流程;如果调用方直接指定具体服务器地址,也不利于活动前快速扩容
解决的方法为解决这一问题,我们将核心业务服务部署为多个实例,并通过 Nacos 管理服务注册和健康状态,服务调用时由 Dubbo 或 OpenFeign 根据实例状态选择可用节点,并结合超时、重试和熔断策略控制故障扩散
具体的实现为解决这一问题,我们将核心业务服务部署为多个实例,并通过 Nacos 管理服务注册和健康状态,服务调用时由 Dubbo 或 OpenFeign 根据实例状态选择可用节点,并结合超时、重试和熔断策略控制故障扩散
例子以用户提交订单为例,订单相关请求会被分发到多个订单处理实例,订单模块在校验商品和库存时,也通过注册中心选择可用服务实例完成调用
效果通过服务集群负载均衡,项目组可以在活动前增加订单、商品和库存服务实例,活动结束后再回收资源,提高了系统并发处理能力和资源利用率
读写分离与缓存分流 排序:3 编辑
项目位置/技术/需求在数据访问层,我们采用读写分离与缓存分流来满足高频查询和核心写入隔离的要求
解决的问题线上商品交易中,商品展示、活动规则读取、订单查询和运营报表会产生大量读请求,如果全部访问 MySQL 主库,就会影响下单、支付确认和库存处理等核心写操作
解决的方法为解决这一问题,我们将核心交易写入仍放在主库完成,把历史订单查询、运营报表和部分商品查询引导到只读库或汇总数据;同时把热点商品信息、活动规则和库存快照放入 Redis,减少高频读请求对数据库的直接访问
具体的实现为解决这一问题,我们将核心交易写入仍放在主库完成,把历史订单查询、运营报表和部分商品查询引导到只读库或汇总数据;同时把热点商品信息、活动规则和库存快照放入 Redis,减少高频读请求对数据库的直接访问
例子以运营人员查看活动销售情况为例,报表中心优先读取定时汇总后的数据,不直接扫描交易明细;用户查询近期订单时,也尽量读取缓存或只读库
效果通过读写分离与缓存分流,系统既保障了交易写入稳定,也提高了查询响应速度,使数据库层不再成为整体性能瓶颈