美文网首页
搭一个10万并发的秒杀系统到底需要多少服务器

搭一个10万并发的秒杀系统到底需要多少服务器

作者: 肥兔子爱豆畜子 | 来源:发表于2021-04-08 18:12 被阅读0次

以下都是作者的假想,未经实战,仅作参考。

一些个假定或者说经验值:
这个系统业务逻辑假定并不复杂:用户进来就是查一下某种公共资源的库存、然后下订单预约,完事儿。每个用户每个手机号只能预约一次。

假设同时10万人使用,而且使用频度不低。一方面不会每个用户一直不停的操作,另一方面一个操作可能会产生多个请求并发;所以这里只是估计。我们假设平均一个用户操作触发1个请求,然后每秒10万用户中有5万多人同时进行了操作。这样真正给到系统的并发是5万/秒。

我们看看按照上面的设想,这个10万级别秒杀系统需要准备些什么?

主机: 6台,8c16g, 其中1台部署nginx、 5台部署应用服务器;
说明,这里按照1个nginx处理5万/秒的请求,而每个应用服务器负责处理1万/秒的请求(在nginx与每个应用服务器之间维持100个连接,每个请求耗时10ms、则1连接1秒可处理100请求,100连接1秒可处理1万请求。)。关于硬件配置,参考了https://kiswo.com/archives/349 ,这篇文章。怕不够,还增强了一下配置。

网络:每个请求按照10KB算、每秒5万个请求488MB/s, 3.9Gbps的带宽。4个1Gbps带宽的网络设备做接入。实际这么搞肯定不行,图片和js什么的要使用cdn以及客户端缓存,就算是从服务端拿的json报文、如果是每次用户只需要从后台拉一次的话要使用客户端缓存、下次直接访问客户端本地缓存就行了。一般服务器外网带宽也就150MB的居多、1Gbps,称为千兆网卡。

数据库:sql优化得当,并且添加应用层缓存,那么假设20%的请求真正落到数据库。 1万的综合tps。(跟sql和事务处理逻辑有关,但是1万tps没啥应该感到吃惊的,数据库已经不是千把tps就会压垮的时代了。具体可见 https://zhuanlan.zhihu.com/p/339996719 猜测测试的数据库是16核64G以上配置,阿里云rds这个配置的最大连接数给的是1万刚好、1年9万价格)。
btw,阿里云rds目前顶配mysql的配置是:
90核 720GB(独占物理机) 1000GB (本地SSD盘)
最大连接数:150000 ; IOPS:140000
1台 77万元/年

按照经验,我们设定一些个公式:
注册用户除以10 = 日活(这里指一般系统来说,微信这种太特殊,注册用户基本跟日活一个数量级)
日活除以10 = 同时在线人数 ,峰值=2*同时在线人数

我们认为秒杀系统在线的用户很大部分都会在活动时段都会同时操作。一次用户操作,我们假设会触发2个请求。
综上,10万并发可认为是5万用户同时操作,同时在线人数30万、即同时在线人数的三分之一。

那么5万并发意味着什么? 相当于最高峰10万在线人数。

综上、对10万级别的秒杀系统的接入层、服务层、数据库,网络做了大概的一个空想。永远抱着学习的态度,欢迎指正。

扩展阅读:
如何设计一个亿级消息量的IM系统: https://xie.infoq.cn/article/19e95a78e2f5389588debfb1c

相关文章

网友评论

      本文标题:搭一个10万并发的秒杀系统到底需要多少服务器

      本文链接:https://www.haomeiwen.com/subject/ucpvkltx.html