请问小米抢购软件nte增强板在哪抢购

“米粉节”背后的故事——小米网抢购系统开发实践
发表于 16:53|
来源《程序员》|
作者韩祝鹏
摘要:今年4月的“米粉节”对小米网来说意义非凡,是其彻底重构后迎来的一次全面压力测试,涉及网站前端、后台系统、仓储物流、售后等各环节。高并发的负载能力、稳定性、准确性等已不是问题,灵活性与可运营性成为关键。
2014年的米粉节日凌晨,我和同事们对小米网的抢购系统做了最后的检查与演练。几个小时后,小米网今年开年来最重要的一次大型活动“米粉节”就要开始了。这次米粉节活动,是小米电商的成人礼,是一次重要的考试。小米网从网站前端、后台系统、仓储物流、售后等各个环节,都将接受一次全面的压力测试。10点整,一波流量高峰即将到来,几百万用户将准点挤入小米网的服务器。而首先迎接压力冲击的,就是挡在最前面的抢购系统。而这个抢购系统是重新开发、刚刚上线不久的,这是它第一次接受这样严峻的考验。系统能不能顶住压力?能不能顺畅正确地执行业务逻辑?这些问题不到抢购高峰那一刻,谁都不能百分百确定。9点50分,流量已经爬升得很高了;10点整,抢购系统自动开启,购物车中已经顺利加入了抢购商品。一两分钟后,热门的抢购商品已经售罄自动停止抢购。抢购系统抗住了压力。我长舒一口气,之前积累的压力都消散了。我坐到角落的沙发里,默默回想抢购系统所经历的那些惊心动魄的故事。这可真是一场很少人有机会经历的探险呢。抢购系统是怎样诞生的时间回到2011年底。小米公司在这一年8月16日首次发布了手机,立刻引起了市场轰动。随后,在一天多的时间内预约了30万台。之后的几个月,这30万台小米手机通过排号的方式依次发货,到当年年底全部发完。然后便是开放购买。最初的开放购买直接在小米的商城系统上进行,但我们那时候完全低估了“抢购”的威力。瞬间爆发的平常几十倍流量迅速淹没了小米网商城服务器,数据库死锁、网页刷新超时,用户购买体验非常差。市场需求不等人,一周后又要进行下一轮开放抢购。一场风暴就等在前方,而我们只有一周的时间了,整个开发部都承担着巨大的压力。小米网可以采用的常规优化手段并不太多,增加带宽、服务器、寻找代码中的瓶颈点优化代码。但是,小米公司只是一家刚刚成立一年多的小公司,没有那么多的服务器和带宽。而且,如果代码中有瓶颈点,即使能增加一两倍的服务器和带宽,也一样会被瞬间爆发的几十倍负载所冲垮。而要优化商城的代码,时间上已没有可能。电商网站很复杂,说不定某个不起眼的次要功能,在高负载情况下就会成为瓶颈点拖垮整个网站。这时开发组面临一个选择,是继续在现有商城上优化,还是单独搞一套抢购系统?我们决定冒险一试,我和几个同事一起突击开发一套独立的抢购系统,希望能够绝境逢生。摆在我们面前的是一道似乎无解的难题,它要达到的目标如下:只有一周时间,一周内完成设计、开发、测试、上线;失败的代价无法承受,系统必须顺畅运行;抢购结果必须可靠;面对海量用户的并发抢购,商品不能卖超;&一个用户只能抢一台手机;用户体验尽量好些。设计方案就是多个限制条件下求得的解。时间、可靠性、成本,这是我们面临的限制条件。要在那么短的时间内解决难题,必须选择最简单可靠的技术,必须是经过足够验证的技术,解决方案必须是最简单的。在高并发情况下,影响系统性能的一个关键因素是:数据的一致性要求。在前面所列的目标中,有两项是关于数据一致性的:商品剩余数量、用户是否已经抢购成功。如果要保证严格的数据一致性,那么在集群中需要一个中心服务器来存储和操作这个值。这会造成性能的单点瓶颈。在分布式系统设计中,有一个CAP原理。“一致性、可用性、分区容忍性”三个要素最多只能同时实现两点,不可能三者兼顾。我们要面对极端的爆发流量负载,分区容忍性和可用性会非常重要,因此决定牺牲数据的强一致性要求。做出这个重要的决定后,剩下的设计决定就自然而然地产生了:技术上要选择最可靠的,因为团队用PHP的居多,所以系统使用PHP开发;抢资格过程要最简化,用户只需点一个抢购按钮,返回结果表示抢购成功或者已经售罄;对抢购请求的处理尽量简化,将I/O操作控制到最少,减少每个请求的时间;尽量去除性能单点,将压力分散,整体性能可以线性扩展;放弃数据强一致性要求,通过异步的方式处理数据。最后的系统原理见后面的第一版抢购系统原理图(图1)。图1 &第一版抢购系统原理图系统基本原理:在PHP服务器上,通过一个文件来表示商品是否售罄。如果文件存在即表示已经售罄。PHP程序接收用户抢购请求后,查看用户是否预约以及是否抢购过,然后检查售罄标志文件是否存在。对预约用户,如果未售罄并且用户未抢购成功过,即返回抢购成功的结果,并记录一条日志。日志通过异步的方式传输到中心控制节点,完成记数等操作。最后,抢购成功用户的列表异步导入商场系统,抢购成功的用户在接下来的几个小时内下单即可。这样,流量高峰完全被抢购系统挡住,商城系统不需要面对高流量。在这个分布式系统的设计中,对持久化数据的处理是影响性能的重要因素。我们没有选择传统关系型数据库,而是选用了Redis服务器。选用Redis基于下面几个理由。首先需要保存的数据是典型的Key/Value对形式,每个UID对应一个字符串数据。传统数据库的复杂功能用不上,用KV库正合适。Redis的数据是in-memory的,可以极大提高查询效率。Redis具有足够用的主从复制机制,以及灵活设定的持久化操作配置。这两点正好是我们需要的。在整个系统中,最频繁的I/O操作,就是PHP对Redis的读写操作。如果处理不好,Redis服务器将成为系统的性能瓶颈。系统中对Redis的操作包含三种类型的操作:查询是否有预约、是否抢购成功、写入抢购成功状态。为了提升整体的处理能力,可采用读写分离方式。所有的读操作通过从库完成,所有的写操作只通过控制端一个进程写入主库。在PHP对Redis服务器的读操作中,需要注意的是连接数的影响。如果PHP是通过短连接访问Redis服务器的,则在高峰时有可能堵塞Redis服务器,造成雪崩效应。这一问题可以通过增加Redis从库的数量来解决。而对于Redis的写操作,在我们的系统中并没有压力。因为系统是通过异步方式,收集PHP产生的日志,由一个管理端的进程来顺序写入Redis主库。另一个需要注意的点是Redis的持久化配置。用户的预约信息全部存储在Redis的进程内存中,它向磁盘保存一次,就会造成一次等待。严重的话会导致抢购高峰时系统前端无法响应。因此要尽量避免持久化操作。我们的做法是,所有用于读取的从库完全关闭持久化,一个用于备份的从库打开持久化配置。同时使用日志作为应急恢复的保险措施。整个系统使用了大约30台服务器,其中包括20台PHP服务器,以及10台Redis服务器。在接下来的抢购中,它顺利地抗住了压力。回想起当时的场景,真是非常的惊心动魄。第二版抢购系统经过了两年多的发展,小米网已经越来越成熟。公司准备在2014年4月举办一次盛大的“米粉节”活动。这次持续一整天的购物狂欢节是小米网电商的一次成人礼。商城前端、库存、物流、售后等环节都将经历一次考验。对于抢购系统来说,最大的不同就是一天要经历多轮抢购冲击,而且有多种不同商品参与抢购。我们之前的抢购系统,是按照一周一次抢购来设计及优化的,根本无法支撑米粉节复杂的活动。而且经过一年多的修修补补,第一版抢购系统积累了很多的问题,正好趁此机会对它进行彻底重构。第二版系统主要关注系统的灵活性与可运营性(图2)。对于高并发的负载能力,稳定性、准确性这些要求,已经是基础性的最低要求了。我希望将这个系统做得可灵活配置,支持各种商品各种条件组合,并且为将来的扩展打下良好的基础。图2 &第二版系统总体结构图在这一版中,抢购系统与商城系统依然隔离,两个系统之间通过约定的数据结构交互,信息传递精简。通过抢购系统确定一个用户抢得购买资格后,用户自动在商城系统中将商品加入购物车。在之前第一版抢购系统中,我们后来使用Go语言开发了部分模块,积累了一定的经验。因此第二版系统的核心部分,我们决定使用Go语言进行开发。我们可以让Go程序常驻内存运行,各种配置以及状态信息都可以保存在内存中,减少I/O操作开销。对于商品数量信息,可以在进程内进行操作。不同商品可以分别保存到不同的服务器的Go进程中,以此来分散压力,提升处理速度。系统服务端主要分为两层架构,即HTTP服务层和业务处理层。HTTP服务层用于维持用户的访问请求,业务处理层则用于进行具体的逻辑判断。两层之间的数据交互通过消息队列来实现。HTTP服务层主要功能如下:进行基本的URL正确性校验;对恶意访问的用户进行过滤,拦截黄牛;提供用户验证码;将正常访问用户数据放入相应商品队列中;等待业务处理层返回的处理结果。业务处理层主要功能如下:接收商品队列中的数据;对用户请求进行处理;将请求结果放入相应的返回队列中。用户的抢购请求通过消息队列,依次进入业务处理层的Go进程里,然后顺序地处理请求,将抢购结果返回给前面的HTTP服务层。商品剩余数量等信息,根据商品编号分别保存在业务层特定的服务器进程中。我们选择保证商品数据的一致性,放弃了数据的分区容忍性。这两个模块用于抢购过程中的请求处理,系统中还有相应的策略控制模块,以及防刷和系统管理模块等(图3)。图3 &第二版系统详细结构图在第二版抢购系统的开发过程中,我们遇到了HTTP层Go程序内存消耗过多的问题。由于HTTP层主要用于维持住用户的访问请求,每个请求中的数据都会占用一定的内存空间,当大量的用户进行访问时就会导致内存使用量不断上涨。当内存占用量达到一定程度(50%)时,Go中的GC机制会越来越慢,但仍然会有大量的用户进行访问,导致出现“雪崩”效应,内存不断上涨,最终机器内存的使用率会达到90%以上甚至99%,导致服务不可用。在Go语言原生的HTTP包中会为每个请求分配8KB的内存,用于读缓存和写缓存。而在我们的服务场景中只有GET请求,服务需要的信息都包含在HTTP Header中,并没有Body,实际上不需要如此大的内存进行存储。为了避免读写缓存的频繁申请和销毁,HTTP包建立了一个缓存池,但其长度只有4,因此在大量连接创建时,会大量申请内存,创建新对象。而当大量连接释放时,又会导致很多对象内存无法回收到缓存池,增加了GC的压力。HTTP协议是构建在TCP协议之上的,Go的原生HTTP模块中是没有提供直接的接口关闭底层TCP连接的,而HTTP 1.1中对连接状态默认使用keep-alive方式。这样,在客户端多次请求服务端时,可以复用一个TCP连接,避免频繁建立和断开连接,导致服务端一直等待读取下一个请求而不释放连接。但同样在我们的服务场景中不存在TCP连接复用的需求。当一个用户完成一个请求后,希望能够尽快关闭连接。keep-alive方式导致已完成处理的用户连接不能尽快关闭,连接无法释放,导致连接数不断增加,对服务端的内存和带宽都有影响。通过上面的分析,我们的解决办法如下。在无法优化Go语言中GC机制时,要避免“雪崩效应”就要尽量避免服务占用的内存超过限制(50%),在处于这个限制内时,GC可以有效进行。可通过增加服务器的方式来分散内存压力,并尽力优化服务占用的内存大小。同时Go 1.3也对其GC做了一定优化。我们为抢购这个特定服务场景定制了新的HTTP包,将TCP连接读缓存大小改为1KB。在定制的HTTP包中,将缓存池的大小改为100万,避免读写缓存的频繁申请和销毁。当每个请求处理完成后,通过设置Response的Header中Connection为close来主动关闭连接。通过这样的改进,我们的HTTP前端服务器最大稳定连接数可以超过一百万。第二版抢购系统顺利完成了米粉节的考验。总结技术方案需要依托具体的问题而存在。脱离了应用场景,无论多么酷炫的技术都失去了价值。抢购系统面临的现实问题复杂多变,我们也依然在不断地摸索改进。作者韩祝鹏,小米公司程序员。早期负责MIUI系统发布与运营,后带领小米网系统组设计与开发小米网抢购系统。更多精彩详见,欢迎。
推荐阅读相关主题:
为了更好地推进云计算大数据的技术创新,展示国内外云计算大数据的产业成果,交流云计算大数据的应用经验,第七届中国云计算大会将于-5日北京国家会议中心举办。此次会议将承续前六届大会的成功经验,邀请国内外知名专家出席会议并作演讲。以更加前瞻性视野,分享国内外云计算大数据的技术趋势和实践经验,推动云计算大数据的发展和进步。
相关热门文章&&&& 5.5寸高清大屏红米Note增强版 现货无需预约899元
5.5寸高清大屏红米Note增强版 现货无需预约899元
精益求精完美设计的值得选择,今天为大家介绍这款小米是一款掌控机型展现设计的手机,并且该款手机装备一块5.5英寸IPS多点触控屏幕,同时该款手机机身背部安置一颗1摄像头,并有LED补光灯,功能丰富。目前【PChome电脑之家推荐经销商&冠冠手机通讯&
QQ 】处有现货,促销899元(购机赠送优惠券100元 可当天使用)。若需要可以和商家联系。
性能方面: 红米Note(增强版)采用的是联发科MT6592八核处理器,主频为1.Hz(标准版)/1.7GHz(增强版),RAM内存为1GB(标准版)/2GB(增强版)。机身内置8GB存储空间,另支持Micro SD扩展卡,最高容量可达32GB。红米Note支持TD-S/双卡双模,内置一块可拆卸式3200mAh电池,搭载Android 4.2系统,支持蓝牙4.0、无线WIFI、USB OTG技术。
编辑点评:小米 红米NOTE性能方面,红米Note采用的是联发科MT6592八核处理器,主频为1.7GHz(增强版),RAM内存为2GB(增强版),更加出色,小米 红米NOTE一直深受大家欢迎,该机在硬件配置方面也是非常出众。同时该机还在有最新的MIUI系统,这也是的根本所在。
商品型号:红米note增强版(4G)
商品原价:899元(购机赠送优惠券100元 可当天使用)
关注PChome-广州站微信,这里有搞笑的IT段子;实时的IT资讯;每个星期的手机、笔记本齐全参考报价;更有每个月精心编写的当月新品发布总结;还有激动人心的抽奖活动和团购活动。请拿起你的手机扫描下方的二维码!进入我们PChome-广州站微信的大家庭!
[商家名称]:冠冠手机通讯。 & & & & &&
[咨询电话]:
[联系 QQ]:
[商铺地址]:广州市越秀区海印广场2楼44 &
{网店链接}:
消费者权益维护投诉热线:5
最新广州文章
手机类型4G网络
搜索关键词&& 三剑其发 小米发布路由器新品抢头条
三剑其发 小米发布路由器新品抢头条
两款路由+小米盒子增强版发布
首先发布的新品则是在网络上曾一度曝光的小米路由器,、采用主频为1GHz的Boardcom BCM4709处理器,支持2.Hz+5GHz双频WiFi以及802.11ac协议,内置1TB SATA硬盘、256MB DDR3内存,配备2X2双频双天线和波束成形技术。
小米路由器
小米路由器不仅硬件出色,系统及方面更是支持蹭网提示、网址拦截、入侵检测及防止DNS劫持等功能,内置迅雷,支持多设备连接,用户可通过App控制路由器、连接小米,管理家居产品,打造家庭一体式服务器概念。
小米路由器售价
对于价格,很多人猜测应该会在1500元左右,发布会上雷军也给出了关于这些配置的平均成本。但是,另人震惊的是小米路由器的售价仅仅为699元,打破了双频AC智能路由价格底线,小米路由器于当日18:00开放预约,并且在周五开售。
小米路由器mini
第二款新品是在配置和体验上相对偏低的小米路由器mini版,该产品同样属于AC级别,虽然主打低配,但小米路由器mini依然支持802.11ac协议、22.4GHz/5GHz真双频天线、miwifi智能家居控制中心等方面这款Mini版路由器却却一应俱全。
小米路由器mini版发布
小米路由器mini版售价
并且与标准版不同的是,小米路由器mini支持白、黑、橙、红、蓝、黄多大6种颜色可选,雷军表示mini的存在就是让永不不再把路由器放在角落,而是大胆的拿出来展示它靓丽的色彩与精致的外观,其售价仅仅为129元,并在周五开始公测。
小米路由器mini版对比果壳路由器
小米盒子增强版
如今电视屏幕从1080p上升到2K与4K级别,此次推出的小米盒子增强版则是目前首款支持4K+2K分辨率,支持双频AC的互联网电视机顶盒。
小米盒子增强版
硬件方面增强版搭载Cortex-A9架构的四核2G处理器和6+2核Mali-450MP6 图形处理器,相比小米盒子原有的CPU和图形处理器,小米盒子增强版的性能均提升至原有基础的3倍水平。同时RAM由原来的1G提升至2GB DDR3 双通道内存,ROM为4GB eMMC高速闪存,同时支持SD扩展最高可达64G,小米盒子增强版的售价为399元。
小米盒子增强版售价
总结:不算小米盒子,路由器是小米科技全新的产品线,通过miwifi,小米通过这两款产品重新定义了智能路由与家用服务器的概念,而699与129元的售价搅乱了路由器还算良好的价格市场,通过手机App能够远程遥控家里所有智能电器这一点就可以想象未来是否会出现小米冰箱、微波炉、热水器等等呢?届时雷军的小米帝国将会铺满用户日常生活起居的任何地方。
提示:试试键盘 “← →” 可以实现快速翻页
最新手机中心文章
手机类型4G网络
搜索关键词
最热最新推荐小米官网今日小米平板红米手机1S红米note增强版等开放购买(附抢购地址)(齐齐乐手游网)
当前位置:&>&&>&&>&
小米官网今日小米平板红米手机1S红米note增强版等开放购买(附抢购地址)
小米官网今日小米平板红米手机1S红米note增强版等开放购买(附抢购地址)
购买时间:
日星期二中午12点
预约时间:
6月24日至6月30日中午12点
预约时确认收货信息:
为防黄牛,保护米粉利益,预约过程需填写您的姓名/电话/详细地址等信息,一经填写将不可更改,且成为您最终的收货地址,请慎重填写。
开放购买产品:
红米手机1S 移动版&699,联通版/电信版 &799 点击了解红米手机1S参数
红米note 1.4GHz标准版&799/1.7GHz增强版 &999点击了解红米Note参数
小米盒子增强版 &399 点击了解小米盒子
小米平板 16GB白色版 &1499 点击了解小米平板
小米电视2 &3999(含Soundbar及低音炮) 点击了解小米电视2
小米电视2开放城市:
上海、杭州、深圳、珠海、东莞、厦门、成都、北京、武汉、沈阳、
南京、苏州、重庆、天津、广州、无锡、合肥、惠州、佛山、石家庄、
保定、嘉兴、大连、福州、青岛、济南、中山、常州、郑州、唐山。
查看详细配送范围
了解小米电视2配送及售后服务细则:
发货时间:
小米网将参照支付顺序在7个工作日左右发货。(实际发货时间可能因用户所在地、物流第三方、支付延迟等多种因素而调整。我们将尽量保证发货时间与发货顺序,但实际中可能无法严格按支付顺序发货,请您谅解。)
小米电视2的订单支付后地址信息最终还会通过人工审核,未符合配送要求的订单,将取消订单,并进行退款处理。
如何购买:
预约后,请在开放购买当天12:00准时访问小米网购买,建议适当提前一点访问并提前登陆。开放购买开始后点击【立即购买】按钮,按提示购买。成功购买用户请在2小时内下单,下单后2小时内支付,未成功购买用户,将在2小时内清空您得购物车
温馨提示:
由于配送问题,暂不支持小米电视与其它商品一起下单,如需同时购买小米电视与其它商品,请将小米电视与其它商品,分开加入购物车,下单购买。
请您仔细选择购买的产品版本及颜色,提交后将不可修改。
在您成功支付之前,请勿将手机从购物车中删除或取消手机订单,否则将导致您无法下单支付。
如何支付:
小米网支持使用支付宝、财付通或银行网银进行在线支付。
成功购买用户请在2小时内下单,下单后2小时内支付,未成功购买用户,将在2小时内清空您得购物车
温馨提示:
由于支付宝平台本身问题,暂不支持使用支付宝帐号的过程中更换其它支付宝帐号支付,如遇到类似问题,建议用户尝试【财付通】平台或者【信用卡支付】通道支付; 手机端:建议用户尝试【银联】支付。
分享微博,赢免单资格:
分享微博赢红米免单:
预约或购买成功红米手机后,分享新浪微博带有 #我爱红米手机# 话题, @红米手机 ,并说出选择红米手机或红米note的理由,就有机会赢取红米免单资格。(备注:红米手机及红米Note微博分享中奖共享一个免单名额)
分享微博,赢小米盒子:
预约或购买成功小米盒子后,分享新浪微博带有 #我爱小米盒子# 话题, @小米手机,并说出选择小米盒子的理由,就有机会赢取1台小米盒子免单。
分享小米平板,赢小米平板免单:
预约或购买成功小米平板后,分享新浪微博带有#我爱小米平板#话题,并@小米平板 及一位微博好友,即有机会赢取买小米平板免单资格
分享小米电视2微博,赢小米路由器:
预约或购买成功小米电视2后,分享新浪微博带有 #我爱小米电视2# 话题, @小米电视2,并说出选择小米电视2的理由,就有机会赢取1台小米路由器。
中奖名单公布:
中奖名单将在开放购买结束后5个工作日内,通过小米公司官网微博公布。中奖税费将由中奖用户自理,并由小米公司代扣代缴。请中奖用户在收到小米公司微博私信7天内与小米网联系,逾期未联系将视为放弃免单资格。
限购数量:
每位用户限购手机、平板、电视、路由器及盒子各1台
防范黄牛:
为保护米粉利益,打击黄牛。小米网将保留取消恶意订单的权利。
Copyright (C) 2010 - . All Rights Reserved
齐齐乐-手机游戏网 版权所有 赣ICP备号-2 商务合作QQ:6657294&& 2014米粉节8日开幕 小米红米现货出售
2014米粉节8日开幕 小米红米现货出售
2014年米粉节于4月8日上午10点正式开幕,此次科技拿出旗下众多产品现货抢购回馈广大米粉,除了产品现货出售外小米配件也可5折低价售卖。小米官网最新公告表示,将免预约发售,包括小米3、小米、红米及红米Note,小米3与S供货40万台,红米及红米Note供货60万台。
小米米粉节
在数量和价格上,此次米粉节提供了红米手机纯白色版,小米3 6版由2499将至2299元。抢购时间为早上10点至晚上10点共12个小时,每次抢购间隔为2小时。与此同时,小米科技还拿出5000台小米与10万台小米盒子参与本次抢购。
此次米粉节参加抢购的机型
笔者点评:从本次米粉节的主题&爽爆了&可以看出小米科技在这个全国米粉节日的诚意,几乎囊括全部产品线所有系列都参与其中,现货限时限购也让米粉在购买心仪机型时的几率大大增加,但笔者认为在此次节日中不免会有大量黄牛混入其中,希望小米科技能够通过有效的方法减少黄牛党得手的几率。
最新手机中心文章
手机类型4G网络
搜索关键词
最热最新推荐

我要回帖

更多关于 小米抢购软件 的文章

 

随机推荐