项目-设计秒杀系统

1、引述

本质是在很短的时间,面对巨大的请求流量,将有限的库存商品分发出去,并完成交易操作;

特点是:库存是有限的,瞬时流量大,且都在请求相同的资源,造成数据库的并发读写冲突及资源锁请求冲突严重;

思路:设计至简,减少对环境的依赖,数据路径越长出问题的环节越多,保证系统的可靠性,即使有某环节出现问题,依然能够保障核心的用户体验正常;

2、系统设计

  • 静态资源预部署在第三方的CDN服务上;
  • 接入层,负载均衡、用户身份鉴权、结果缓存
  • 核心业务层,商品分发、异步处理、系统降级;保障可靠性包括数据预处理、水平分库、多级缓存、精简RPC调用、过载保护等
  • 性能和保活监控
3、优化方案
目标:保障关键流程在应对大量请求时稳定运行;

数据预处理(服务启动时加载)
  • 静态资源部署在CDN上,加速客户端访问;
  • 用户或商品公用信息加载本地缓存中;
精简RPC调用
  • 记录订单和用户的关系,异步消息操作订单流程;
  • 本地缓存的使用,减少调用其他数据系统或者数据库;
并发请求处理(单台2万QPS)
  • 分布式锁或者数据库锁,不会出现脏数据,数据一致性有保障;缺点是只有一个请求成功,其他失败,效率低;
  • 开发请求排队调度模块,调度模块根据FIFO策略动态调度,中心节点统一管理资源,对系统的可控性强,可深度定制;缺点是中心节点参与所有请求流量,效率必然比分布式无中心系统低,中心节点很容易成为整个系统的瓶颈;
  • redis分布式序号生成器,负载均衡将请求分组(分而治之),每组有独立的数据库和redis节点。每组的业务独立,redis存储该组可分发商品号段,redis自减特性实现分布式商品ID生成器,服务通过此获取当前商品,落地持久化再独立的数据库(相当于水平分库);分组优势,高内聚低耦合,突发流量可线性扩容;
过载保护
  • 超过性能上线阈值的流量,快速返回特定的页面结果,保障已经接受的有效流量可以正常处理;
完善监控
  • 观测服务接口QPS及总的响应时间;
  • 系统健康度,包括总的性能指标、接口返回耗时、逻辑错误日志等
  • 网络状况,包括服务器的网卡流量、redis节点的流量、数据库节点流量、入口带宽的占用情况;(及时发现某条线路出现过高流量)
  • 服务基础设施,包括CPU、内存、磁盘IO、缓存数据、数据库数据以及连接数、链接时间、资源消耗检测数据等预警信息;
服务降级
       当服务器压力剧增时,如果某些依赖的服务设施或者基础组件超出了工作负荷能力发生故障,需要根据当前业务运行情况对系统服务有策略的降级运行措施,使得核心业务流程顺利进行,并且减轻服务器资源的压力,当压力减小一定程度时,可自动回复原工作机制;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值