小米网抢购系统开发实践阅读心得
时间回到2011年底。小米公司在这一年8月16日首次发布了手机,立刻引起了市场轰动。随后,在一天多的时间内预约了30万台。之后的几个月,这30万台小米手机通过排号的方式依次发货,到当年年底全部发完。
然后便是开放购买。最初的开放购买直接在小米的商城系统上进行,但我们那时候完全低估了“抢购”的威力。瞬间爆发的平常几十倍流量迅速淹没了小米网商城服务器,数据库死锁、网页刷新超时,用户购买体验非常差。
市场需求不等人,一周后又要进行下一轮开放抢购。一场风暴就等在前方,而我们只有一周的时间了,整个开发部都承担着巨大的压力。
小米网可以采用的常规优化手段并不太多,增加带宽、服务器、寻找代码中的瓶颈点优化代码。但是,小米公司只是一家刚刚成立一年多的小公司,没有那么多的服务器和带宽。而且,如果代码中有瓶颈点,即使能增加一两倍的服务器和带宽,也一样会被瞬间爆发的几十倍负载所冲垮。而要优化商城的代码,时间上已没有可能。电商网站很复杂,说不定某个不起眼的次要功能,在高负载情况下就会成为瓶颈点拖垮整个网站。
这时开发组面临一个选择,是继续在现有商城上优化,还是单独搞一套抢购系统?我们决定冒险一试,我和几个同事一起突击开发一套独立的抢购系统,希望能够绝境逢生。
HTTP服务层主要功能如下:
进行基本的URL正确性校验;
对恶意访问的用户进行过滤,拦截黄牛;
提供用户验证码;
将正常访问用户数据放入相应商品队列中;
等待业务处理层返回的处理结果。
业务处理层主要功能如下:
接收商品队列中的数据;
对用户请求进行处理;
将请求结果放入相应的返回队列中。
用户的抢购请求通过消息队列,依次进入业务处理层的Go进程里,然后顺序地处理请求,将抢购结果返回给前面的HTTP服务层。
商品剩余数量等信息,根据商品编号分别保存在业务层特定的服务器进程中。我们选择保证商品数据的一致性,放弃了数据的分区容忍性。
技术方案需要依托具体的问题而存在。脱离了应用场景,无论多么酷炫的技术都失去了价值。
转载于:https://www.cnblogs.com/andibier/p/11055459.html
小米网抢购系统开发实践阅读心得相关推荐
- 小米网抢购系统开发实践和我的个人观察
本文个人观察部分,为自己的一点看法. 正文内容,转载于 <程序员>2014年11月刊:电商峰值系统架构设计 http://www.csdn.net/article/2014-11-04/2 ...
- 《小米网抢购系统开发实践》读后感
原文地址: https://mp.weixin.qq.com/s/ecU_CjTluQUX-420v3nWTQ 今天读了<小米网抢购系统开发实践>这篇文章,感受如下: 首先文章介绍了 ...
- 读《小米网抢购系统开发实践》有感
这周我们来学习一下小米的抢购系统开发实践. 小米公司在2011年8月16日首次发布了手机,立刻引起了市场轰动.随后,在一天多的时间内预约了30万台.之后的几个月,这30万台小米手机通过排号的方式依次发 ...
- 秒杀(小米网抢购系统开发实践--“米粉节”背后的故事)
摘要:今年4月的"米粉节"对小米网来说意义非凡,是其彻底重构后迎来的一次全面压力测试,涉及网站前端.后台系统.仓储物流.售后等各环节.高并发的负载能力.稳定性.准确性等已不是问题, ...
- 小米网抢购系统开发实践
2014年的米粉节 2014年4月9日凌晨,我和同事们对小米网的抢购系统做了最后的检查与演练.几个小时后,小米网今年开年来最重要的一次大型活动"米粉节"就要开始了. 这次米粉节活动 ...
- 升讯威微信营销系统开发实践:订阅号和服务号深入分析( 完整开源于 Github)...
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- 升讯威微信营销系统开发实践:(3)功能介绍与此项目推广过程的一些体会( 完整开源于 Github)...
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- 升讯威微信营销系统开发实践:(4)源代码结构说明 与 安装部署说明( 完整开源于 Github)...
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
- 升讯威微信营销系统开发实践:(1)功能概要与架构设计( 完整开源于 Github)...
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction因为个人精力时间有限,不会再对现有代码进行更新维护,不过微信接口比较稳定,经测试至 ...
最新文章
- 从一个面试题看程序员的几项基本功
- PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法
- [数据库] Oracle单表查询总数及百分比和数据横向纵向连接
- qsort()函数详解
- SSH服务--Linux学习笔记
- linux mysql关闭启动不了了,linux启动或关闭mysql失败的解决办法
- XFire报错:org.codehaus.xfire.fault.XFireFault
- windows2003配置
- Elasticsearch--进阶-term_keyword查询---全文检索引擎ElasticSearch工作笔记015
- linux DISPLAY变量
- linux /etc/security/limits.conf的相关说明
- AIR如何实现窗口顶置
- 物联网和工业物联网有什么区别?
- Excel表Ctrl+v和Ctrl shift+v有什么区别_Excel表格操作技巧,超实用
- zoj 2975 Kinds of Fuwas(数学题)
- 白鹭引擎egret打包成微信小游戏
- HTML利用posotion属性定位 小技巧
- 利用iframe跨域请求
- 正确卸载Visual Studio 2015
- 迈普路由器访问控制列表配置命令_cisco访问控制列表acl所有配置命令详解