概述
大厂的qps有多少?
瓜子qps=2000-
国美 美团qps=5000+
JD/淘系(垃圾请求每天10几T) /腾讯游戏 无上限
淘宝大秒系统设计
其他的高并发场景
- 秒杀、
- 机器考试交卷
硬件配置
Redis
混合存储:内存占用超90%会将冷数据逐出存至硬盘
单机内存qps12万,
单机硬盘冷数据 冷热随机访问1.5万,20%热5.4万,1%高热11.4万
阿里云集群双副本:
- 总内存: 64G或128G
- 8*2 8分片的主从又副本
- 吞吐量:qps=80万 每秒创建连接数=5万 最大连接数8万 带宽=384M/s
4216G qps=40万
redis单次操作理论RT<5ms
ehcache单次操作RT<0.5ms
RDS
8核32G
最大连接数:4千 IOPS:8K
QPS:8万
TPS: 内存命中时4K, 磁盘IO时450
ECS
以4核16G机器为例:
单机Nginx的最大QPS=5-10万并发
单机tomcat最大QPS=50K (内部无业务代码实现) ,真实场景下单tomcat的并发数不超过200
如果接口RT=20ms, 单机tomcatQPS=200*(1000/20) = 1万qps
1Nginx+8Tomcat=12万Qps
10万的qps需要2Nginx+8Tomcat
软件系统
前端
前后端分离
静态缓存和部分缓存
网络
- 单独域名 单独nginx部署如 seckill.qq.com
- CDN 缓存静态资源/少量一致性要求低的动态缓存 ( 与服务端数据一致性问题)
- 10分钟更新一次的 如 搜索结果页 列表页
- job十分钟更新一次 (大型项目几百-几万个job,job使用非常频繁)
- WAF流量清洗
openresty软防火墙 (nginx+lua+redis )
lua是胶水语言,可以和任何语言粘合使用。
WAF软防火墙 流量清洗
验证码验证 单点登录token验证
整合缓存系统 输出动态页面/JSON结果
nginx单机(8核):Worker数量*每Worker连接数(65536) = 15万并发 真实场景单机Nginx5万qps
服务端
分布式事务 数据一致性
缓存
服务管理与监控
服务高可用
架构与设计
秒杀系统的核心思想
- 过滤请求
- 分层过滤
- 前端过滤无效点击
- oprenresty过滤redis黑名单、单ip请求频繁的、无token的用户和评定为高风险的请求
- 分流 将一部分请求导流到其他地方(如静态页面显示秒杀失败)
- 限流
- 风控防刷
- 分层过滤
- 多级缓存
- cdn缓存
- 分布式redis缓存
- 本地内存/硬盘缓存
- 削峰填谷
- 异步
- 令牌桶
多级缓存架构
- 流量接入缓存层
- HTTPDNS
- Waf
- 全网CDN
- 硬防火墙
- 完成流量清洗、分发
- 应用接入缓存层
- Nginx静态文件缓存
- Nginx动态数据缓存
- Lua-resty-lrucache
- URL定向缓存请求转发
- Kafka异步日志分析
- 单点登录系统
- 应用缓存层
- Redis Cluster集群
- Kafka 集群
- Zookeeper 集群
- JVM EHcache
- 应用业务层
- SpringCloud
- Flink
- Spark
- 数据持久层
- Mysql 集群
- MyCat
参考资料
马士兵亿级流量多级缓存架构
- 1-5 流量接入层
- 6:CAP/日志/监控 -> 4.md