原文地址:    https://mp.weixin.qq.com/s/ecU_CjTluQUX-420v3nWTQ

今天读了《小米网抢购系统开发实践》这篇文章,感受如下:

首先文章介绍了一个实际的案例,就是2014年的米粉节。2014年4月9日凌晨,我和同事们对小米网的抢购系统做了最后的检查与演练。几个小时后,小米网今年开年来最重要的一次大型活动“米粉节”就要开始了。这次米粉节活动,是小米电商的成人礼,是一次重要的考试。小米网从网站前端、后台系统、仓储物流、售后等各个环节,都将接受一次全面的压力测试。10点整,一波流量高峰即将到来,几百万用户将准点挤入小米网的服务器。而首先迎接压力冲击的,就是挡在最前面的抢购系统。而这个抢购系统是重新开发、刚刚上线不久的,这是它第一次接受这样严峻的考验。系统能不能顶住压力?能不能顺畅正确地执行业务逻辑?这些问题不到抢购高峰那一刻,谁都不能百分百确定。9点50分,流量已经爬升得很高了;10点整,抢购系统自动开启,购物车中已经顺利加入了抢购商品。一两分钟后,热门的抢购商品已经售罄自动停止抢购。抢购系统抗住了压力。我长舒一口气,之前积累的压力都消散了。我坐到角落的沙发里,默默回想抢购系统所经历的那些惊心动魄的故事。这可真是一场很少人有机会经历的探险呢。可以看出来作者的担心,以及这次人数的巨大,比较好的是服务器最后还是撑住了。

我们可以看一下抢购系统的原理图:

系统基本原理:在PHP服务器上,通过一个文件来表示商品是否售罄。如果文件存在即表示已经售罄。PHP程序接收用户抢购请求后,查看用户是否预约以及是否抢购过,然后检查售罄标志文件是否存在。对预约用户,如果未售罄并且用户未抢购成功过,即返回抢购成功的结果,并记录一条日志。日志通过异步的方式传输到中心控制节点,完成记数等操作。最后,抢购成功用户的列表异步导入商场系统,抢购成功的用户在接下来的几个小时内下单即可。这样,流量高峰完全被抢购系统挡住,商城系统不需要面对高流量。

对于抢购系统来说,最大的不同就是一天要经历多轮抢购冲击,而且有多种不同商品参与抢购。我们之前的抢购系统,是按照一周一次抢购来设计及优化的,根本无法支撑米粉节复杂的活动。而且经过一年多的修修补补,第一版抢购系统积累了很多的问题,正好趁此机会对它进行彻底重构。

第二版遇到了遇到了HTTP层Go程序内存消耗过多的问题。

我们的解决办法如下。在无法优化Go语言中GC机制时,要避免“雪崩效应”就要尽量避免服务占用的内存超过限制(50%),在处于这个限制内时,GC可以有效进行。可通过增加服务器的方式来分散内存压力,并尽力优化服务占用的内存大小。同时Go 1.3也对其GC做了一定优化。我们为抢购这个特定服务场景定制了新的HTTP包,将TCP连接读缓存大小改为1KB。在定制的HTTP包中,将缓存池的大小改为100万,避免读写缓存的频繁申请和销毁。当每个请求处理完成后,通过设置Response的Header中Connection为close来主动关闭连接。通过这样的改进,我们的HTTP前端服务器最大稳定连接数可以超过一百万。第二版抢购系统顺利完成了米粉节的考验。

总结:技术方案需要依托具体的问题而存在。脱离了应用场景,无论多么酷炫的技术都失去了价值。抢购系统面临的现实问题复杂多变。从这个时间可以看出,需求的增加就会迫使程序的变化,只有与时俱进才能蒸蒸日上,

转载于:https://www.cnblogs.com/qilin20/p/10910359.html

《小米网抢购系统开发实践》读后感相关推荐

  1. GC13:XO独占游戏《神鬼寓言传奇》公布

    作者: 来源: www.bts668.com 微软日前公布了<神鬼寓言传奇>(Fable Legends),该游戏是此系列作品的新作,将作为Xbox One游戏出现. 这款由狮子头工作室开 ...

  2. Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇

    作者 | 伍杏玲 出品 | CSDN (ID:CSDNnews) 2018 年底,微软"王者归来",时隔 16 年市值重返全球第一.人们纷纷用"力挽狂澜"&qu ...

  3. 乔布斯去世衍生多种周边产品(支持乔布斯请顶)

    各种乔布斯肖像 乔布斯公仔 乔布斯立体纸人 不管你是不是狂热的苹果粉丝,是不是拥有n多的苹果产品,苹果帮主乔布斯都应该值得我们纪念. "为什么说乔布斯改变了世界?没有 iPhone,就不会有 ...

  4. 一战封神!“中国飞人”苏炳添跑出9秒83到底有多牛?

    公众号后台回复"图书",了解更多号主新书内容作者:CDA数据分析师来源:CDA数据分析师 [导读] 在刚刚结束的东京奥运会百米飞人大战上,中国选手苏炳添在半决赛跑出9秒83,刷新了 ...

  5. 乔布斯导演的最后一幕

    连作者也说,他仅仅是这本书的写作者,真正的作者是乔布斯."中信出版社总编辑潘岳近日分享了<史蒂夫·乔布斯传>幕后的故事.这本传记预定期已达100万册,预估最终销量将达到500万册 ...

  6. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全

    史上最牛的Linux内核学习方法论   点击下载 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux ...

  7. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...

    史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命 ...

  8. 养成励志的习惯,一生励志——文指星终极励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  9. 养成励志的习惯,一生励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  10. 【转】乔布斯经典语录

    2011年8月25日消息,乔布斯辞去了苹果公司CEO的职务.10月6日,传来了他去世的消息.在此缅怀乔帮主的同时,与大家分享乔布斯在世时的经典语录.(来自于<乔布斯传>--神一样的传奇的附 ...

最新文章

  1. 细节详解 | Bert,GPT,RNN及LSTM模型
  2. 配置免密码登录Linux服务器
  3. 如何用工匠精神突破创新?
  4. python详细基础教程-Python基础教程,Python入门教程(非常详细)
  5. 【BZOJ1801】【DTOJ2004】 [Ahoi2009]chess 中国象棋 【DP】
  6. POI 使用替换字符方式进行模板生成word
  7. Qt调用dll中的功能函数
  8. VMware内存回收与分配机质
  9. Docker镜像和容器常用命令
  10. Hadoop框架:HDFS简介与Shell管理命令
  11. 元素(洛谷-P4570)
  12. 精通Android自定义View(十三)事件分发简述
  13. 代码风格研究:左花括号 是否换行???
  14. 华为 AppGallery Connect 构建游戏分发能力,赋能游戏全生命周期
  15. yarn在vscode里启动报错
  16. main函数中argc和argc参数解释
  17. 这不是海市蜃楼,这是平地雾
  18. HTML制作虾米音乐,最新虾米音乐电台调用代码
  19. 2022年HGAME中REVERSE的Flag Checker
  20. 运维常用工具命令/知识总结

热门文章

  1. 如何把一个整数转化成数组_「leetcode891」给定一个整数数组 A,考虑 A 的所有非空子序列...
  2. ajax+++fc,06. 实做AJAX(SEFC)
  3. rcnn代码实现_轻松学Pytorch实现自定义对象检测器
  4. python与matlab哪个更容易学-详解python和matlab的优势与区别
  5. textarea统计剩余字数(动态提示)
  6. @Async异步功能
  7. java循环1000000000_Java11比Java8快多少,不是测试人员一眼也能看懂
  8. 心情有些复杂,不知道还能做多久,未来也不知道该如何选择
  9. 移动端API接口优化的术和结果
  10. Zabbix部署(一)