秒杀系统的核心优化点有哪些?
秒杀系统的应急预案如何制定?
除了高并发,秒杀还有哪些隐藏的挑战
几百万的用户 并发访
XXXX性能现状
XXXX网站的正常流量情况
- 并发(单台),高峰期<10;
- 吞吐量(TPS, 单台) 高峰期, <60;
- CPU负载Load高峰期,,大部分服务器<1;
- CPU使用率,一般只占1颗核,平均60%左右;
- 服务器平均响应时间高峰期,<150ms;
- 图片总流量带宽1.8G(各网站总合)。
高并发下的风险
- 网络带宽耗尽
- 服务器Load飙高, 停止响应。
- 数据库瘫痪
高并发下的事故
- 事故:网站运营推广页面弹出1兆大图片导致带宽耗尽
- 增加审核机制:运营推广增加的图片流量不能超过现有流量的30%
- 合作媒体推广:迅雷, 暴风影音浮出广告, 导致ZZ集群Crash。
秒杀
- xxXx.com开业88小时不间断秒杀活动
高并发会对网站性能造成哪些影响?
高并发实例:XXXX.com开业秒杀活动
商业需求
- 为庆祝XXXX.com开业退出88小时不间断秒杀活动。
- 每小时整点推出8款商品......
- 每款商品供168件,每人限批3件,成交人数56人.
- CCTV黄金广告时间, 各种网络, 平面媒体轰炸, 总广告费:1.5亿。
- 接到运营通知,距秒杀开始仅仅5天时间.
技术挑战
- 瞬间高并发
- 8000并发:预估秒杀在线人数可达8000人。
- 风险:带宽耗尽。
- 服务器:崩溃,可以理解成自己给自己准备的D.D.O.S攻击。
- 秒杀器
-
第一种:秒杀前不断刷新秒杀页面,直到秒杀开始,抢着下单。
-
第二种:跳过秒杀页面,直接进入下单页面,下单。
-
XXX.com秒杀系统:服务器和网络准备
服务器准备(距秒杀开始仅五天时间来不及采购)
- style服务器( Lighttpd集群):5台
- 图片服务器(Nginx集群):5台
- 静态服务器( Apache集群):10台
- 交易服务器(JBoss动态集群):10台
带宽准备
- 图片出口带宽上限:2.5G(出口带宽支持10G,但图片服务器集群的处理能力:图片服务集群最大并发处理能力X网站平均图片大小=2.5G)
- CDN准备: China cache沟通; 借用CCCC CDN
开发一个小系统 比维护一个老系统要容易的多的多的多的多
XXXX.com秒杀系统:设计原则
静态化
- 采用JS自动更新技术将动态页面转化为静态页面
并发控制,防秒杀器
- 设置阀门,只放最前面的一部分人进入秒杀系统
简化流程
- 砍掉不重要的分支流程,如下单页面的所有数据库查询
- 以下单成功作为秒杀成功标志。支付流程只要在1天内完成即可。
前端优化
- 采用YSLOW原则提升页面响应速度
xxx秒杀系统 静态化
计数器的实现 参考TT计数器(全局的缓存)
如何保证不超卖
三层阀门 1000 > 100 > 10 10个人才能去下单 这个时候不会出现超卖
当js文件由空 变成 内容填充时 秒杀开始
三道阀门的设计
应急预案
域名分离,独立域名,不影响XXXX原有业务。
- Style集群:style.XXXX.china.XXXX.com
- 图片服务器集群:img.XXXX.china.xxxx.com
- 静态页面集群:page.xxxx.china.xxxx.com
- 出问题直接把XXXX相关域名卡掉,所有请求跳到万能出错页面。
机动服务器10台,备用。
拆东墙补西墙战略
- 5天时间来不及采购服务器,因此SA待命,随时准备将非核心应用集群的冗余服务器下线,加入到秒杀集群。
壁虎断尾策略
- 所有办法均失效的情况下,例如流量耗尽。
- 非核心应用集群统统停止服务,如资讯,论坛,博客等社区系统。
- 保住首页,OfferDetail, 旺铺页面等核心应用的可用性。
万能出错页面:秒杀活动已经结束
- 任何出错都302跳转到此页面
- 位于另外集群