抢购为什么难,需要怎么做?
提到秒杀抢购,众说纷纭的有两类,那些趾高气扬的人总把抢购失败者当傻子,好兜售些"假黑科技",要么还有一类人,他们展示各种你根本听不懂的服务器后端技术,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测量为准。
最近买东西成了问题,团购,肉菜,抢啤酒,很多人毕其一天干这个事,严重影响了工作和生活,我的观点是即便买不到东西,也不能影响正常工作和生活,没有什么任何是必须完成的,生活要柔性,生活要能接受有损。关于抢购,写一点自己的经验。
浙江温州皮鞋湿,下雨进水不会胖。
抢购为什么难,需要怎么做?相关推荐
- 视角 | 多容器环境下的日志管理难?有人做起了这个生意
本文讲的是视角 | 多容器环境下的日志管理难?有人做起了这个生意, [编者的话]本文介绍了一个新的工具SPM,它用于解决在多容器环境下日志管理所遇到的问题,同时它整合了多种功能,避免了以往需要安装多种 ...
- python做数据分析难么_做统计学习,数据分析应该学Python还是R?
如果你是数据分析领域的新兵,那么你一定很难抉择--在进行数据分析时,到底应该使用哪个语言,R还是Python?在网络上,也经常出现诸如"我想学习机器语言,我应该用哪个编程语言"或者 ...
- 计算机毕业设计太难不会做怎么办?
通过这个话题,详细和大家聊聊计算机毕业设计以及如何选题.复习.和制作才能无压力通过. 对于大学生而言,毕业设计是完成本科教育的最后一场考验,而且随着毕设越来越严格,很多高校通过率也是逐步下滑,那对于计 ...
- Selenide太难?这样做简洁又高级,学会了工资翻一倍
01.什么是 Selenide? Selenide是由Selenium WebDriver二次封装的Web自动化框架,具有以下优点: 简洁流畅的API Ajax支持 强大的选择器 简单的配置 您无需考 ...
- [北京昌平] 企名片寻找合适的伙伴,一起做数据,让数据不再难找难应用,做全球企业数据服务商...
企名片是什么 北京企名片科技有限公司(qimingpian.com)是一家借助大数据与人工智能技术的创新高科技公司,旗下产品企名片定位于一级市场的 wind,提供金融数据服务,拥有最新最全的企业投融资 ...
- 越想越难,越做越简单,电磁兼容性设计
电磁兼容性设计基于以下三个方面:隔离.去耦.屏蔽 电磁兼容性设计从设计阶段开始,贯穿于电路原理图设计.印制板图设计.元器件选用.印制板安装引线等一些列环节中,主要采取下列措施: 1)对 IC尽量采用单 ...
- Java是先难后易吗_做题先易后难,干活先难后易
1 事儿难长智慧, 事儿易生愚昧. 2 诞生容易,做好人难: 说话容易,把话说好难: 走平道容易,上天入地都难: 吃饭容易,种地掙钱都难: 学过的容易,没学的都难: 事做起来容易,不做都难: 吃胖容易 ...
- 【书影观后感 十四】左晖-做难而正确的事
距离上一本完整读完的书<李自成>及据此而作的读后感[书影观后感 十三]甲申三百七十八年祭已经接近一年时间了,最近心血来潮读了李翔的访谈形式系列<详谈>的第一本<左晖-做难 ...
- 数控CNC加工行业“做模具难还是做产品难”?
数控机床CNC生产加工制造行业"做磨具难還是做商品难"? 闻道有先后,术有专攻. 许多年青人都喜爱做着天马行空的一夜成名梦,我觉得没有1个挣大钱,做大事儿的人是平白无故从从天而降出 ...
- 企业SaaS商怎么转型做企业服务商
申明:我是把过去的碎碎念记录整合了一下,留给自己存档.看不懂者,请自便. 一些企业SaaS(软件)商想转型做企业电商服务(不想再走做软件卖软件盈利模式了),甚至想转行自己做B2B电商或产业互联网络. ...
最新文章
- 将整数拆分为2的幂次方
- Windows不能在本地计算机启动MongoDB,错误代码 100
- 从0到100——知乎架构变迁史
- buildroot的使用简介【转】
- 为什么c语言乘除法优先级低,C语言训练题.docx
- android system_server中的dump_Android 10.0系统启动之SystemServer进程(二)
- php和r关系,R和php之间的集成
- XShell切换全屏快捷键
- 差分相干解调 matlab,2DPSK差分相干解调器Simulink仿真.doc
- 2010年中国城市人均GDP排名
- 可孚医疗的数字化突围
- 网站建设经验分享:如何设计及运营网站
- SqlServer2005使用top 100 PERCENT 无法排序的问题
- 基于Java Web的房屋出租管理系统
- 计算机打字测速,5款打字测速软件分享,打字练习、测速两不误
- 设计模式——简单工厂模式之女娲造人
- 婚庆APP开发解决方案
- JSONNull的判断问题
- 制作网上投票链接制作可以投票的链接制作制作一个投票链接
- 更改进程优先级c语言,进程优先级调整工具(Process Lasso Pro)64位
热门文章
- linux查cer证书信息,openssl 查看证书
- 分享几个蛋白质互作网站——String (二)多基因蛋白互作
- 管理hiberfil.sys文件与pagefile.sys文件释放C盘
- css ico图标不显示,网站后台ico图标不显示的解决方法
- Python修改Word文件设置所有图片都居中对齐
- html开发一个月多少钱,html5前端开发工资一般是多少
- Js逆向教程-05明确js逆向的目标
- 苹果8a1660是什么版本_苹果a1660是什么版本
- C/C++编程笔记:浪漫流星雨装b表白程序
- 高效的睡眠——睡眠革命