今天去面实习,面试官出了一个问题:
我们是做电商的,现在也是10月份了,正在准备双11活动大促的一系列测试.....balabala......现在让你来设计一套用于双11大促的系统。先给你一组数据,pv 1W+ ,uv 4k+,根据我们的运营同志统计,今年双11的时候流量很有可能翻3倍。假设我们现在的系统是单机系统(允许扩展成多台服务器)——db和文件服务器以及应用都跑在一台服务器上,你该如何设计这套系统来应对双11的流量?
今天去面实习,面试官出了一个问题:
我们是做电商的,现在也是10月份了,正在准备双11活动大促的一系列测试.....balabala......现在让你来设计一套用于双11大促的系统。先给你一组数据,pv 1W+ ,uv 4k+,根据我们的运营同志统计,今年双11的时候流量很有可能翻3倍。假设我们现在的系统是单机系统(允许扩展成多台服务器)——db和文件服务器以及应用都跑在一台服务器上,你该如何设计这套系统来应对双11的流量?
预估并发量
假设这1w+pv 80%的请求集中在5小时内(夜里很少人上网),那么每秒 0.44 次请求,双11为1.32次。
极端一点,请求全部集中在1小时内,那么每秒 2.77次请求,双11为 8.31 次。
(这点并发量我觉得单机没什么压力吧)
缓存
根据二八原则,80%的请求打在20%的数据上,所以加缓存,过滤80%的db查询。
CDN
加上CDN,减少服务器带宽压力。
压测
最后使用工具来几次压测。
db和文件服务器以及应用都跑在一台服务器上,就是说不能分库了。
按照回答套路:素材(css、js、图片)cdn加速,负载均衡,session放memcached,其他缓存放redis,最重要的应该就是优化数据库了,分表、索引、优化sql语句。优化业务结构,付款之后的其他附加功能,比如微信提醒、短信通知全部都放队列,用任务去跑。
0
不到一个月的时间,做大的改造不太可能.
先评估一下目前的情况,能承受多高的qps之类的,业务估计3倍,你按5倍来准备.或者弹性云之类的.反正硬件比人便宜:(
web服务该负载的负载,资源类该加速的走CDN,数据库类的该集群的集群,再考虑一下读写分离/分表分库之类的.能走队列的任务都查一查,抽出来走队列.网络带宽也要考虑进去.
请求几个主要的业务页面,把最慢的东西找出来,做做前端/后端/数据库的优化.把慢日志之类的查一次,严重影响性能的一定要查出来优化,不然就是慢的越慢把快的都卡住了.
注意一下从单机到集群时,那些常见的问题要处理好.比如session的同步,文件的分发机制之类的.
如果有特殊的业务也要查一下,比如一些高并发的秒杀,流量集中的聊天室之类的,要特殊考虑.
最后还是要做几次压力测试,尽量保证核心业务稳定.
暂时想到这么多....
预估下业务最大并发的用户数,网站最大并发的访问数,这个从以往的日志分析得到,算下单机可抗并发多少,应用和文件系统肯定要分开部署,db服务器, 文件服务器,cdn服务器,这些的都上云,有现成的第三方,全部上云,方便快捷的部署,另外,一个月时间,顶多优化下性能,没有几年实操的经验就别想自己塔了。这些可不是1个人就全部搞定的。
13 回答12.9k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2.1k 阅读
2 回答1.1k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
1、先问他目前单机可抗的并发数是多少
2、把应用、文件分别布署到不同的服务器,然后根据预计并发数算出需要的服务器台数
3、瓶颈肯定会在db上,如果团队有能力做分布式数据库服务就自己搭,没能力做就直接上云分布式数据库服务
总之就是先调性能,性能调完还撑不住就用硬件堆