提到秒杀抢购,众说纷纭的有两类,那些趾高气扬的人总把抢购失败者当傻子,好兜售些"假黑科技",要么还有一类人,他们展示各种你根本听不懂的服务器后端技术,CDN,锁单,Redis缓存之类。

说网速,手速的,其实也是在说运气,你网速不好,手速慢,隔壁大概率也好不到哪去,这不是问题的根本。菊花转半天出来一个无库存,这实际上是一个错误的设计并不是你的问题,大家陷入细节,没人看得到而已,更别说改进。

你不得不接收菊花转半天给你个没有库存的结论,但同时,你也有成功的概率,概率有多大,全靠运气。

我的方法就是不参加抢购,如果非要参加,我宁可避开高峰而去捡漏。

具体做法就是抢购前5分钟只点击一次,听天由命,若失败不会再试,或者仅再试两三次,但肯定不会太多。然后去做自己的事,闲暇时,再试一次两三次,若失败不再试,继续做自己的事。没事试一下,成功的概率就会比较大。

几乎所有商户,从12306到小区门口小超市,都不会一次性放量所有商品,一般会分好几批,每一批都会故意留一些“漏”。比如1000双皮鞋,8点开抢,商家会放480双,然后5分钟或10分钟或20分钟后再放20双,12点时放280双,5分钟或10分钟后再放20双…几乎你用过的平台,差不多都是这个路数。

捡漏不仅基于分批放量,还有一点,总会有人付款失败的,手机没电的,断网的,退货的。

不要拼手速重复点击是关键,在你们给服务器带来DDoS的同时,你们也把自己DDoS了,如果你折腾一二十分钟到手抖,心情极差,你一天的正常工作还能做好吗?

现在说下后端设计。

网购只是线上服务的一种,近年来的相关技术都集中在树木而非森林,大家花大量的精力去优化一个锁,却忘了真正重要的是“让用户快速成功,否则快速失败!”。

快速成功否则快速失败在均匀流量下根本不是问题,服务并未过载,P999成功率显然很高,但系统负载有个或弹性或确切的阈值,一旦过载,哪怕只是稍微过载,失败率就大大增加,体现到业务指标,就是用户体验下降。

这个问题的根源在于线上服务完全模拟了线下服务,这是不对的。

线下服务可以平滑地天然限流,比如商场促销,你花在路上的时间,堵车,停车,等红绿灯,这些限流是自然的,但线上服务不同,任意数量的请求允许在任意时间到达任意服务器,所谓的限流只是将过载的请求丢掉,但重试马上就会到来。

网络协议栈在多个层次都会重试,比如TCP的SYN丢了,马上就会过来一个新的SYN,TCP并不知道是过载了,重试报文会加剧过载,最终让系统有效处理能力指数级下降,如果TCP知道是过载导致丢包,源抑制会让系统处理更多有效请求而不是处理过载。

交换节点和服务器对拥塞缺乏源抑制,这是线上服务很容易过载且很难恢复的根源,拥塞反馈到源需要RTT级别的时间,这段时间对于抢购这种模式的突发流量而言,足以让事情不可收拾,轻则大量用户失败,重则服务器被打垮。

用户的重试行为加剧了过载。虽然很多前端限制了同一用户在固定时间段的重试次数,但模棱两可的错误提示还是会触发用户在解除限制后重新碰碰运气,因为他们不知道自己已彻底失败。

用户等了好久却被告知失败,这种很差的体验不是因为服务器真的在“努力判断”。全局上看,服务器早就知道你失败了,只是没告诉你而已,为什么没告诉你,因为服务器架构都是基于微服务交互的, 每一个微服务交互的不是你这个终端APP,而是它的上游或下游微服务,这就是我说的为什么根源在只见树木,不见森林。

问题不是不好解决,只是没人在乎。如果后端的一切处理逻辑都以用户体验为基,事情就好办。抢购只给每个请求一次机会,在服务端处理的任何环节失败即出局,不再重试该环节,不再等待,第一时间直接向用户反馈“彻底失败”。至于每个请求一次机会造成的没有卖出去的东西,加入后续的放量,这样既提升了用户体验,也使售卖更加平滑,降低了突发。

最后,谈一个有效的措施,搭建隧道。

请看下面的图:

如果你有一条明确的更好的线路到达服务器,那就通过那条线路搭隧道或建代理,它肯定比通过公共互联网要好,哪怕接入了CDN,你要知道那个CDN也不是你独享的。一切以RTT,bandwidth测量为准。

最近买东西成了问题,团购,肉菜,抢啤酒,很多人毕其一天干这个事,严重影响了工作和生活,我的观点是即便买不到东西,也不能影响正常工作和生活,没有什么任何是必须完成的,生活要柔性,生活要能接受有损。关于抢购,写一点自己的经验。

浙江温州皮鞋湿,下雨进水不会胖。

抢购为什么难,需要怎么做?相关推荐

  1. 视角 | 多容器环境下的日志管理难?有人做起了这个生意

    本文讲的是视角 | 多容器环境下的日志管理难?有人做起了这个生意, [编者的话]本文介绍了一个新的工具SPM,它用于解决在多容器环境下日志管理所遇到的问题,同时它整合了多种功能,避免了以往需要安装多种 ...

  2. python做数据分析难么_做统计学习,数据分析应该学Python还是R?

    如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者 ...

  3. 计算机毕业设计太难不会做怎么办?

    通过这个话题,详细和大家聊聊计算机毕业设计以及如何选题.复习.和制作才能无压力通过. 对于大学生而言,毕业设计是完成本科教育的最后一场考验,而且随着毕设越来越严格,很多高校通过率也是逐步下滑,那对于计 ...

  4. Selenide太难?这样做简洁又高级,学会了工资翻一倍

    01.什么是 Selenide? Selenide是由Selenium WebDriver二次封装的Web自动化框架,具有以下优点: 简洁流畅的API Ajax支持 强大的选择器 简单的配置 您无需考 ...

  5. [北京昌平] 企名片寻找合适的伙伴,一起做数据,让数据不再难找难应用,做全球企业数据服务商...

    企名片是什么 北京企名片科技有限公司(qimingpian.com)是一家借助大数据与人工智能技术的创新高科技公司,旗下产品企名片定位于一级市场的 wind,提供金融数据服务,拥有最新最全的企业投融资 ...

  6. 越想越难,越做越简单,电磁兼容性设计

    电磁兼容性设计基于以下三个方面:隔离.去耦.屏蔽 电磁兼容性设计从设计阶段开始,贯穿于电路原理图设计.印制板图设计.元器件选用.印制板安装引线等一些列环节中,主要采取下列措施: 1)对 IC尽量采用单 ...

  7. Java是先难后易吗_做题先易后难,干活先难后易

    1 事儿难长智慧, 事儿易生愚昧. 2 诞生容易,做好人难: 说话容易,把话说好难: 走平道容易,上天入地都难: 吃饭容易,种地掙钱都难: 学过的容易,没学的都难: 事做起来容易,不做都难: 吃胖容易 ...

  8. 【书影观后感 十四】左晖-做难而正确的事

    距离上一本完整读完的书<李自成>及据此而作的读后感[书影观后感 十三]甲申三百七十八年祭已经接近一年时间了,最近心血来潮读了李翔的访谈形式系列<详谈>的第一本<左晖-做难 ...

  9. 数控CNC加工行业“做模具难还是做产品难”?

    数控机床CNC生产加工制造行业"做磨具难還是做商品难"? 闻道有先后,术有专攻. 许多年青人都喜爱做着天马行空的一夜成名梦,我觉得没有1个挣大钱,做大事儿的人是平白无故从从天而降出 ...

  10. 企业SaaS商怎么转型做企业服务商

    申明:我是把过去的碎碎念记录整合了一下,留给自己存档.看不懂者,请自便. 一些企业SaaS(软件)商想转型做企业电商服务(不想再走做软件卖软件盈利模式了),甚至想转行自己做B2B电商或产业互联网络. ...

最新文章

  1. 将整数拆分为2的幂次方
  2. Windows不能在本地计算机启动MongoDB,错误代码 100
  3. 从0到100——知乎架构变迁史
  4. buildroot的使用简介【转】
  5. 为什么c语言乘除法优先级低,C语言训练题.docx
  6. android system_server中的dump_Android 10.0系统启动之SystemServer进程(二)
  7. php和r关系,R和php之间的集成
  8. XShell切换全屏快捷键
  9. 差分相干解调 matlab,2DPSK差分相干解调器Simulink仿真.doc
  10. 2010年中国城市人均GDP排名
  11. 可孚医疗的数字化突围
  12. 网站建设经验分享:如何设计及运营网站
  13. SqlServer2005使用top 100 PERCENT 无法排序的问题
  14. 基于Java Web的房屋出租管理系统
  15. 计算机打字测速,5款打字测速软件分享,打字练习、测速两不误
  16. 设计模式——简单工厂模式之女娲造人
  17. 婚庆APP开发解决方案
  18. JSONNull的判断问题
  19. 制作网上投票链接制作可以投票的链接制作制作一个投票链接
  20. 更改进程优先级c语言,进程优先级调整工具(Process Lasso Pro)64位

热门文章

  1. linux查cer证书信息,openssl 查看证书
  2. 分享几个蛋白质互作网站——String (二)多基因蛋白互作
  3. 管理hiberfil.sys文件与pagefile.sys文件释放C盘
  4. css ico图标不显示,网站后台ico图标不显示的解决方法
  5. Python修改Word文件设置所有图片都居中对齐
  6. html开发一个月多少钱,html5前端开发工资一般是多少
  7. Js逆向教程-05明确js逆向的目标
  8. 苹果8a1660是什么版本_苹果a1660是什么版本
  9. C/C++编程笔记:浪漫流星雨装b表白程序
  10. 高效的睡眠——睡眠革命