`
loveqinghe
  • 浏览: 15044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

我看小米抢购——纯技术分析贴

 
阅读更多
这几天分析小米抢购机制的帖子网文很多。我也来浅析一下,小米具体的没看,但原理相通。
鄙人曾在某知名网站做技术。做了一个很复杂的抢票系统,至今在用。
需求是这样的,网站会跟商业公司合作做一些推广,送出一些演出门票,数码产品什么的让网友来抢。
第一次上线抢票,只放了一张门票,送个数码相机,再送飞机票。数据库里只放一条记录,第一个网友进来了就立即删除。其他网友全部提示“没抢到”,但也让网友留信息。第一次成功了。 客户很满意,尤其看到了很多热心网友留的信息。
第二次放20张门票,还沿用第一次的系统设计,放20条记录,在网友抢走了几张票后,后台数据混乱了,票超发了(放出去了不到30张),客户也认了。(这种故障12年的淘宝双十一也出现过) 。
后来分析,不能在一开始就让所有请求都操作数据库,直接连库MySQL扛不住,主从就超发,加缓存超发估计会更严重。
解决办法:
1.让用户分流,让部分用户直接返回“没抢到”,不请求数据库 。
2.如果还不行就,错开峰值 ,高峰期全部用户都不请求数据库,全部返回“没抢到”。
分流我们的办法比小米高明,网友猜测不到,每一个请求分配一个随机数,跟编辑设置的“阀值”比较,比阀值大就请求数据库,再判断奖品还有没有。小米傻到直接在页面上上空链接。大傻。
错开峰值,就是抢票刚开始时,其实库里奖品数量是0,全部返回“没抢到”,过了高峰期再放出来抢。(小米这次20分钟抢完,估计也是这样的)
分布部署,我们直接用于前端响应的server大概有20台,直接挂在F5上的,修改配置,让其中的n台程序就不访问数据库,直接返回“没抢到”。

现状:编辑可以自由的控制奖池中奖品的数量,设置“阀值”大小改变抢中的概率,分不同时段放票,来维持活动的热度。
====================================================================================
我的另两篇文章,大型网站设计及大型网站动态应用。
http://loveqinghe.iteye.com/blog/1969733
http://loveqinghe.iteye.com/blog/1969777
20
9
分享到:
评论
44 楼 windshome 2013-10-26  
没有人自居是高尚的程序员,我们只是不那么卑鄙而已。


说到方案,让老板拿钱换更好的服务器和数据库。非常简单。没钱?没钱出来混个啥,回家抱孩子吧!!

赚了钱胡吃海喝,在正经事上总是抠门省钱,这种老板,大不了我不跟他混。
43 楼 javatozhang 2013-10-26  
高尚的程序员们还真不少,希望拿出高尚的解决方法,愿闻其详洗耳恭听!
42 楼 ququjioulai 2013-10-25  
我到觉得是这样的,比如虽然是卖10W台,实际后台有个队列只有5000个位置,最先进去的5000人最容易抢到,然后当前面进去的用户做某一个步骤就退出了一个位置,然后所有人就都去抢空出来的那个位置。
41 楼 zhenjw 2013-10-25  
只能说太无耻了,我还能说什么呢,给做程序的人丢人啊,如果需求是这样那没有办法,但是如果需求是我们大家理解的需求,要这样做只能说你太牛X了,我听过一个清华的人经常说用工程化的方法,就跟你的做法差不多,让人很无语,你们是师兄弟吗?
40 楼 tianyaluke 2013-10-25  
hardPass 写道
技术水平低,不是你的错。
但是“抢票”不是基于“先到先得”的原则,程序员的节操碎了一地。


22楼正解,玩技术哪是这样玩的
39 楼 liujia229 2013-10-25  
不想着怎么克服问题。再说另辟蹊径也不是这么玩的。对自己的东西一点要求都没有
38 楼 canon99 2013-10-25  
知道了太多了,所以拼命刷新页面的,希望刷新到与系统阀值相同的值
37 楼 donlianli 2013-10-25  
你说的这种方案,很想12306的做法啊
36 楼 zera 2013-10-25  
职业素养!!!
35 楼 Jack_ljk 2013-10-25  
我只能说,你让小伙伴们知道的太多了
34 楼 xiangjie88 2013-10-25  
各种坏味道,没有好的解决方案,就靠投机取巧,程序员的悲哀
33 楼 sj853 2013-10-25  
“抢” 和 “抽” 有本质的区别  一个是先到就先得   一个是随机      这样只能是 抽 不是抢
32 楼 humtiger 2013-10-25  
wzarx 写道
windshome 写道
原来是在骗客户啊!我向来不喜欢这么做,做IT的,不能为了别的东西,泯灭自己的良知啊!抢买手机倒也罢了,但是如果你是为了一个非常需要的事情,在医院网站预约挂号,总挂不上,后来得知医院的后台是这么处理的,导致没有挂上号耽误了病情,你不愤怒吗??

为了生存,为了利益,去选择做事情的方法,都没有争议和非议,唯一需要说的是,做任何事情,搞IT、扫大街都需要良知。

其实提高系统高并发下运行的方法有很多种。完全没有必要这么做。又要多多赚钱,又死死的压低投入。

我觉得楼主的办法,从概率的角度每个人获奖的概率根本没有任何影响,也没什么不好吧

排队买车票和排队买彩票怎么能一样呢
31 楼 windshome 2013-10-25  
昨天北京地铁10号线故障,让我想起“良知”这个概念,如果楼主这种方式去做,一定是“撞死人拉倒”,“撞车”。

我是做信息安全的,深感“做安全要靠良知”,或者说“职业素养”,因为自己一个图省事,带来的代价不定有多大,不可有一丝的轻忽大意。偶尔会有bug,有漏洞,但是如果发现了会及时修正,更不会自己作假欺骗别人。

至于欺骗了别人还拿出来炫耀,我认为是一种可耻的事情。
30 楼 beidou566 2013-10-25  
提高并发有很多办法

结论:
1、无良程序员
2、无实力的公司

坚决抵制
29 楼 vcok 2013-10-24  
把请求先放入队列排好队后再依次访问数据库不好吗?
28 楼 dopic 2013-10-24  
你不这不是在设计抽奖系统吗,忽悠客户还行
27 楼 hacker47 2013-10-24  
看了你的分析,哥笑了!我相信小米的程序员技术应该也很牛B
26 楼 windshome 2013-10-24  
一些无良厂商和运营商这么做了我也没有办法,也惹不起,但是我能够做的是,尽量不这么做。
25 楼 gxz1989611 2013-10-24  
hardPass 写道
技术水平低,不是你的错。
但是“抢票”不是基于“先到先得”的原则,程序员的节操碎了一地。


同意,抢票还是要基于先到先得,如果12306要是用你这种“投机取巧”的策略来放票,那全国人民都不会答应的啊。
个人认为可以在使用一些内存级别的缓存来代替mysql,类似redis、memcached都是一种尝试。

相关推荐

    产品分析:小米有品——品质电商的发展之路.docx

    产品分析:小米有品——品质电商的发展之路.docx

    圣道小米抢购神器5.0中文绿色免费版

    圣道小米抢购软件是一款免费高效的小米抢购秒杀工具。软件采用P2P加速技术,抢购更迅速,更稳定,更高速,更高效。软件绿色便捷,永久免费,是小米抢购神器。 圣道小米抢购软件 功能特点 1.高速抢购 P2P加速技术,...

    小米抢购源代码

    小米抢购源代码, using System; using System.Threading.Tasks; using System.Windows.Forms; using System.Timers; using Newtonsoft.Json; using System.Text.RegularExpressions; using System.Configuration; ...

    小米商城——Node后端.zip

    【小米商城——Node后端.zip】是一个包含有用于构建小米商城后端服务的源代码压缩包。这个项目可能使用了Node.js,一个基于Chrome V8引擎的JavaScript运行环境,为服务器端编程提供了一个强大而高效的平台。Node.js...

    寒战小米抢购软件v0.0819中文绿色免费版

    寒战小米抢购软件是一款目前为止最新发布的小米手机预约抢购软件,已有人成功抢购,有兴趣的朋友可以试试这款小米抢购软件。 使用方法 如果点击抢购,出现说明获取验证码渠道正常,小米官方没有更改验证码机制,...

    享受代码的快乐--小米抢购前端代码分析

    通过分析博主黄之锐在iteye博客上分享的文章,我们可以了解到小米抢购页面的前端实现细节以及相关技术的应用。 首先,我们来看看www.xiaomi.com.html,这很可能是小米官网抢购页面的源代码副本。在这个文件中,我们...

    小米抢购页面脚本研究

    标题“小米抢购页面脚本研究”涉及到的是对小米官网抢购页面的分析,特别是其中的脚本技术。这项研究可能关注的是如何通过编程手段理解并自动化抢购过程,以提高用户成功购买到热门产品的概率。在IT领域,这种行为...

    小米抢购技巧

    【小米抢购技巧详解】 在科技日新月异的今天,小米手机因其高性价比而备受消费者喜爱,然而,每次新品发布时的抢购大战总是让人望而却步。以下是一些有效的抢购策略,帮助你提高成功购买小米手机的可能性。 首先,...

    小米抢购插件源码(Chrome)

    【小米抢购插件源码(Chrome)】是一款专为抢购小米产品设计的Chrome浏览器扩展。这款插件的核心功能是帮助用户在小米官网的抢购活动中提高成功率,通过自动化的方式快速填写信息并提交购买请求。它的工作原理是利用...

    小米产品抢购软件

    【小米产品抢购软件】是一种专门针对小米公司热门产品的在线抢购辅助工具,它旨在帮助用户提高购买小米手机、智能设备等热门商品的成功率。在众多消费者对小米新品的追捧中,由于库存有限,抢购变得极具竞争性,而这...

    小米抢购软件 源码 学习使用

    【小米抢购软件源码分析】 本资源包含的是小米抢购软件的源代码,对于学习自动化脚本编写、网络请求处理以及多线程技术的开发者来说,这是一个极具价值的学习材料。下面将对其中可能涉及的知识点进行详细阐述。 1....

    西域小米抢购助手小米抢购软件v1.43破解绿色版

    如果用来抢购小米官网活动请保持默认即可,建议同一个账号开多个页面,这样能提高抢购成功率。 使用方法:(压缩包中含详细图文教程) 关键字模式介绍: 关键字说白了其实就是网页中可点击按钮的文字(当然这里是指...

    小虫抢小米(小米抢购神器)v4.0绿色特别版

    你可以在工作繁忙的时候进行小米手机抢购的伴侣,软件集成小米手机抢购攻略。小虫抢小米辅助工具是最专注小米抢购开发的一款抢购红米软件,可以帮助你,在速度最快的情况下抢到小米手机3与红米手机。 小虫抢小米辅助...

    案例分析让“猪”在风口上飞——小米手机互联网思维商业模式分析.zip

    《案例分析:让“猪”在风口上飞——小米手机互联网思维商业模式分析》 这篇案例分析深入探讨了小米手机如何运用互联网思维构建独特的商业模式,使其在短短几年内迅速崛起,成为全球知名的智能手机品牌。小米的成功...

    小米抢购器 新版-源码

    【标题】"小米抢购器 新版-源码"指的是一个专为参与小米产品抢购而设计的自动化工具的新版本的源代码。源码是软件开发的基础,它包含了程序的所有指令,可以让程序员深入理解软件的工作原理,并进行修改、优化或二次...

    纪念我曾经发烧的青春——小米手机历届发布回顾ppt模板.zip

    这份名为"纪念我曾经发烧的青春——小米手机历届发布回顾ppt模板.zip"的压缩包,显然是一份用于回顾小米手机发展历程的PPT模板,旨在帮助用户了解小米的成长历程,同时唤起对过去岁月的回忆。 小米手机的历届发布会...

    安卓Android源码——小米系列之小米录音机.zip

    在安卓系统开发中,源码分析是提升技术深度和理解操作系统工作原理的重要途径。本文将以“安卓Android源码——小米系列之小米录音机”为主题,深入探讨小米录音机的源码实现,帮助读者了解安卓录音功能的底层机制和...

    全自动抢购小米教程下载加软件下载视频

    【标题】:“全自动抢购小米教程下载加软件下载视频”所涉及的知识点主要集中在自动抢购技术、软件开发以及互联网营销策略。 在自动抢购技术方面,小米手机因其性价比高,常常在开售时遭到消费者的疯抢,因此,出现...

    前端项目——小米官网首页

    在本项目中,“前端项目——小米官网首页”旨在模拟实现小米官网的主页,采用的是基础的HTML、CSS技术,特别强调了对div和css的运用。这个项目对于初学者来说是一个很好的实践机会,因为它不涉及复杂的JavaScript...

    互联网时代优秀企业文化构建——以小米公司为例.pdf

    小米提倡员工不断学习、提升自我,以适应不断变化的市场环境和技术发展。这种对学习的重视不仅能够提高员工的技能水平和创新能力,还能够激发员工的潜能,促进企业内部的知识更新和知识共享。 小米公司的企业文化...

Global site tag (gtag.js) - Google Analytics