qps20w背后的设计:秒杀\抢券项目——深度分析与总结
2016-08-16 16:38
369 查看
之前参与一个峰值qps达到20w多的电商促销项目,现在做一些总结与思考,可能存在纰漏,欢迎交流探讨。本人长期专注于服务层,文中对前端以及运维的理解可能不够深入。
欢迎各位有理有据的交流探讨。
对于这个促销系统的部署完全与主站的其他系统隔离开,避免大流量冲击下对其他系统造成影响,甚至雪崩。
域名隔离 使用独立的域名对请求做隔离
应用隔离 使用独立的集群机器部署前端应用与服务端应用
数据隔离 使用独立的Redis集群、mysql集群处理数据
页面静态数据缓存 浏览器缓存静态数据、CDN缓存静态数据。
业务流程削峰 通过使用验证码或者问答,拉车秒杀时间,放缓瞬时并发。
实现无锁设计(数据库的部分根据业务场景用乐观锁):
图片较大,我希望用一张图描述我想说的,请点击右键单独放大查看。
tps(transaction per second)=事务数/响应时间(事务 比如接口指有个clientSend
并且clientReceive的过程)
如何 根据服务日调用次数 计算每天峰值的qps?
单节点qps
通常最大线程数<=最大连接数
平均响应时间通常要求100ms左右
根据峰值qps与单节点qps计算节点个数?
示例:
每天300w 调用量的接口,这个接口需要满足到多少QPS?
单机QPS是58,需要结果节点来支持?**
欢迎各位有理有据的交流探讨。
架构隔离
在开始具体细节时,先说说架构隔离。对于这个促销系统的部署完全与主站的其他系统隔离开,避免大流量冲击下对其他系统造成影响,甚至雪崩。
域名隔离 使用独立的域名对请求做隔离
应用隔离 使用独立的集群机器部署前端应用与服务端应用
数据隔离 使用独立的Redis集群、mysql集群处理数据
前端流控
基本校验 一些简单的资格校验,如登陆等等页面静态数据缓存 浏览器缓存静态数据、CDN缓存静态数据。
业务流程削峰 通过使用验证码或者问答,拉车秒杀时间,放缓瞬时并发。
反向代理缓存
在反向代理(Varnish,Nginx)中缓存静态页面,对页面请求直接返回。服务端设计
服务端是本文重点,也是我关注的地方。实现无锁设计(数据库的部分根据业务场景用乐观锁):
图片较大,我希望用一张图描述我想说的,请点击右键单独放大查看。
扩容
没有机会做,但是思考了下这种方案可取。还是用一张图分库分表
待续缓存击穿问题解决
待续集群性能常用计算公式
qps(query per second)=并发数/响应时间(通常要求0.1s左右)tps(transaction per second)=事务数/响应时间(事务 比如接口指有个clientSend
并且clientReceive的过程)
如何 根据服务日调用次数 计算每天峰值的qps?
( 日调用次数 * 80% ) / ( 24*3600 * 20% ) = 峰值时间每秒请求数(QPS)
单节点qps
最大连接数/平均响应时间()=qps
通常最大线程数<=最大连接数
平均响应时间通常要求100ms左右
根据峰值qps与单节点qps计算节点个数?
峰值接口需要的QPS / 单节点的QPS = 需要的节点实例
示例:
每天300w 调用量的接口,这个接口需要满足到多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
单机QPS是58,需要结果节点来支持?**
139 / 58 = 3
相关文章推荐
- 《大型网站技术架构:核心原理与案例分析》拜读总结,第十二章——秒杀系统架构设计案例分析
- 分享D瓜哥最近攒的资料(架构方面)、架构分析与设计、知名网站架构分析:Amazon网站架构学习总结、探索Google App Engine背后的奥秘、Facebook图片存储架构、优酷网架构、YouTube架构
- 【个人项目】项目记录:github链接、设计实现、单元测试、性能分析与改进、PSP完成表格、总结反思
- 东方有线项目分析设计阶段遇到的问题及总结
- 基于web信息管理系统的权限设计分析和总结(理论)
- 【转载】同事对项目UI问题案例分析培训的总结
- 《播客》项目总结——web标准页面设计方面
- 《播客》项目总结——web标准页面设计方面(转)
- Vs2005报表设计器XML分析总结
- 项目设计中关于权限,角色,操作功能三者之间的探讨总结(2009-03-14)
- 系统需求分析与OOP——系统设计开发总结(初稿)
- 数据库分析与设计中总结出来的14个技巧
- 应用架构设计与分析相关资料的收集、总结与复习(动态更新)
- 软件项目需求分析总结[转载]
- WebService性能测试回顾版-结果分析和项目总结
- 关于编码、开发、分析、设计、项目管理的一些随笔
- TrueLove 项目感悟(一)功能分析、数据库设计
- 分析PetShop 4.0 的项目架构和分布式数据库设计
- 软件需求分析方法收集(公司项目经理总结)
- Asp.net项目经验总结之一 设计与规划