chagee限流问题说开去
昨天郑钦文获得中网历史上首位本土单打冠军,同时也是继李娜之后,第二位夺得WTA1000级别赛事单打冠军的中国网球选手。
于是霸王茶姬来个买一送一的活动.于是今天霸王茶姬的小程序就彻底崩了. 大家就开始各种吐槽了.
这种活动我不知道是不是一拍脑袋的,但是看小程序里写的买一赠一还有小字提醒需要加入购物车两杯,那明显是有人知道,并处理,并更新文案的.
看来是霸王茶姬的技术不懂限流了?
这个就需要从2个层面来看这个问题了.
- 系统设计的时候是否有考虑过这个问题.
- 如何快速扩容
我理解他们系统设计的时候肯定是考虑过这个问题的.因为我在系统偶尔刷新的时候还是可以看到有些门店的排队数的. 但是很明显这个考虑的并不完整,导致后面的崩溃.
- 用户打开小程序的时候哪些信息是必须动态获取,哪些是放一个静态页面就可以的.这个可能都没有想好.
- 用户完全不需要看到跟自己不相关地址的门店排队情况,你说你给我展示密云,大兴的门店是什么意思.
- 限流不分前后,现象就是好不容易进去,结果点单的时候又碰到各种限流,付款的时候又是各种限流,连查看历史订单都会限流.
我就大概分析一下这第三点,前面两点应该是业务方要明确的.
线下门店的话好比一些奢侈品店的排队逻辑, 限额100人在店里, 超过100人就排队,出来多少就放进去多少. 这样一直持续到店里人数低于100人,那就不会产生限流了.
但是线上限流大家默认的逻辑是超过了人数就把你踢走,这个有些场景是可以的,但是像定奶茶这种场景是否合理呢? 你不让我进来,我就继续点点点,点到能进来为止.这样就产生了无谓的重试流量.而霸王茶姬是区分不出来哪些是重试的,哪些就是随便看看的. 毕竟线上排队的代价很低啊.
这个我们可以看下当初小米耍猴的年代,他们的逻辑是所有人同时进来,但是我在最外层是有排队机制的.同时可能每3分钟会唤醒一次看看你还来不来.这样米粉们就不会再做无谓的重试请求.那这个队伍可以无限长吗? 这个当然不是的,比如你这个店一天最多1000杯,那排队超过10000人就完全没有意义啊, 具体什么数字是合理的,那完全可以通过分析日常订单请求就可以分析出来的.
这里的排队还分几种机制,第一种是请求量完全超过我系统设计的上限了,那我就直接丢. 第二种是超过了我对应门店的库存数, 那就看排队是不是长,太长就也丢弃掉.但是这种丢弃也是需要给客户明确的提示, 而不是直接网络发个reset就结束了.
限流是一个部分, 高峰时期的降级也是需要考虑的.比如哪些功能这个时候就直接暂停了,把资源留给点单这样的业务.
技术就是在这种并发场景下才会提升,就跟天猫双十一才造就了阿里的数据库团队一样. 慢慢来,希望下次有活动别这样狼狈就行.