12306 一崩再崩,作为程序员你最想优化哪个功能?

[复制链接]
gxggxy103 发表于 2023-10-7 16:56:39|来自:北京 | 显示全部楼层 |阅读模式
抢票的痛苦,抢过都知道。
各位程序员大佬,不知道你们怎么看。有哪些经验和教训,可以让 12306 的程序员们参照看看。
全部回复5 显示全部楼层
金迅网络 发表于 2023-10-7 16:56:56|来自:北京 | 显示全部楼层
作为程序员表示,工程上看这货就是个天坑。
优化?碰都不想碰....
抢票挂了就多点几下挺简单的事情不是吗...
macroblue 发表于 2023-10-7 16:57:14|来自:北京 | 显示全部楼层
作为软工毕业的售票员,看到一大堆回答延迟退款的,你们真的只是从自身角度出发而已。
用几个问题引出我以下的答案。
1.三四线城市的老头老太太去一线城市看儿女/看病。
此时赶上清明/五一/十一/中秋/小高峰不好买票,让儿女/朋友代买。
这种事非常常见,因一些自身原因需要退票/改签重新购票的也有。退款延迟1周到账?
2.现在最大的黄牛是什么?
不是以前那种你要去哪给你弄上票跟你多要100/200元的单独作案的闲散人员/客运内部漠视法律的投机分子。
现在最大的黄牛,或者说严重扰乱正常购票秩序的,是各种代注册/登陆/绑定12306账号的所谓抢票网站。
互联网时代的人,常常上网的你我,总觉得世界上其他人和我们差不多。
但是现实中有很多老年人,受教育程度低的人,接触新事物适应慢的人,因为各种原因不会使用12306:
不知道从哪里下载/搜索不到/被引流其他网站(某度出来背锅);
下载之后被复杂的注册流程搞得头大,注册失败;
奇怪的UI(现在改善很多)操作流程不流畅。
这些人不会用12306。
还有一些年轻人,被一些互联网会套近乎/会营销的App套近乎。觉得12306垃圾。我就要用X程,X哪,X行,X团,X友,买票,甘愿贡献自己的身份信息手机信息以及自己的12306账号。
这些代注册网站,使用小白鼠们的信息在12306注册马甲号,你提交的信息和这些网站提交在12306的不一样,其实小白鼠并不知道自己的12306账号,这些黄牛们批量注册账号批量访问12306批量预约抢票。
现在他们抢到票了,发信息告诉你还没抢到,让你买加速包/求转发帮加速/营销保险(毕竟人家是要恰饭的嘛)
每天在窗口处理抢注都能看出来这些代注册网站的账号命名规则:单字母/名字缩写加手机号、ac_手机号,姓名全拼音字母加5位随机数。留的预留邮箱全都是垃圾域名邮箱。旅客过窗口一核对,手机号和注册预留手机号都对不上。
这些网站在春暑运抢票高峰最少占据了80%的12306的服务器负载,搞得普通用户连接不上服务器,刷新票额失败,登陆错误重新登录等。
如果知道回形针视频搞得那个网络解密的话就应该知道,科技才是第一生产力。

现在12306最大的敌人也就是近乎ddos式似得刷票额/提交订单,增加服务器负载。

总结下来就是20世纪计算机领域以及ai领域的终极问题:

图灵测试

要从app层面就判断出用户是人还是机器。
今年春节12306app的一个变化就是,在选完乘车人信息后,点击确定提交订单变成了右滑提交订单。

总之守到北京时间到抢票点,如果网络不出太大意外,这个右滑都让我从12306上买到了票。
但战斗不会就此结束。如果让我决定12306app的走向,那就是:
1.积极营销12306下载安装的渠道,避免用户被引流。
2.优化注册流程,增加更多的提示和错误反馈提示。
3.招更多的逆向工程人员去逆向三方购票的抢票策略,识别验证策略,优化迭代自己的验证模式,把购票的机会全部都还给旅客。
至于提前排队预分配位置之类的意见,暂时还只能小范围实验,不能盲目上线,扰乱现有流程,毕竟用户学习新事物是需要一个过程的,现阶段电子客票就是个例子。

排版乱了一些,先答这么多,有空再更。
xcy3239 发表于 2023-10-7 16:58:13|来自:北京 | 显示全部楼层
越是懂技术的越不敢喷12306,越是没水平的喷的越凶。
有人说和淘宝比,我只能说车票比秒杀可复杂多了去了
静静的顿河 发表于 2023-10-7 16:59:07|来自:北京 | 显示全部楼层
干掉第三方接口
封禁高频访问账号
公开各区间锁票时间及放票量
优化候补排队购票
wang4444 发表于 2023-10-7 17:00:04|来自:北京 | 显示全部楼层
我说一下个人看法,12306的客户端虽然做的一般,但12306的服务器端其实做的挺好了。中国每年春运都是数以亿计的集中抢占的各种服务请求,试问这个世界上除了面向过年的中国人民,应该很少有峰值时期需要承受如此负载压力的服务端。
然而铁路也不可能总是保持这种“巅峰”服务状态,因为峰值时间持续很短,一年365天里可能只有分散的十来天需要承受“大范围人类迁徙”造成的巨大负载压力。比如铁总有N台服务器来处理买票业务的请求,但是在少见的峰值时间段,服务请求可能会瞬间提升数量级。比如(纯假设)平时平均每分钟铁总只需要处理一万个请求,开抢年30票的时候可能每分钟就有上千万甚至上亿个请求过来。这样铁总的N台服务器肯定是不够用的,理论上比如(纯假设)需要增加至1000N台服务器才能满足需求。那你觉得铁总哪里平白瞬间增加一千倍的机器(/虚拟机)预算?
虽然我不知道铁总具体是怎么操作的,有内部知道的如果不保密可以分享一下。但我猜测(纯猜)铁总不可能平日里就买够1000N个机器备用,这样成本太高。日常使用就备够N台就行了,在快到大小峰值来临时(各大节日),迅速大范围从各大官方有合作的云服务商那里租用计算资源,快速部署后上线服务。在峰值过去后再还回去。
但是即便如此,中国人民过年30的热情还是非常高涨,能租来的计算资源应该也是勉强够用,达不到绰绰有余的地步,所以还是会有客户端请求得不到服务的现象。特别是集中不间断抢票请求大范围爆发的时候。
对于解决方式,可能有人说让铁总买更多的机器不就得了?反正他们拿人民的钱,应该为人民做好服务。但事实不是这么简单,钱也不是大风刮来的,计算资源也不是,都有上限。
如果在服务资源上不能再有更多可观的文章,那只能在客户服务请求上做文章了。比如引入预约请求,来拉长处理窗口的时间。每个人在春运抢票前输入自己可接受的始发地和目的地,输入可接受的出发时间段,输入优先偏好的车次或车型(K, T, G, D, C等),输入人数以及是否必要连坐等。预约输入后提交后,由服务器后续排队计算给出可以乘坐的车次和座位,服务端先为用户reserve下车票,让用户在限定时间内(比如一小时)付款确认。这样可以避免集中抢票时的过载请求,要知道用户在付款前每一次查询车次、退出、重查、刷新等操作都会造成请求,在服务端负载本来就过载的情况下,这些查询、刷新等非最终确定买票的请求其实是浪费计算资源,而预约可以有效在峰值时段避免这些请求的大量涌入,将计算资源集中用于票和座位的分配上。
还有一个拉长处理的方法是政策是过年的法定假期多给几天(调配过来也行),然后在不影响过年的前提下分不同时段放假。让旅客可以分批次从年28~30分开回家,从年初五到年初八分开回来,总之分而治之也是一个办法……就像一些城市为了避免早高峰,让一部分人8:00上班,一部分人8:30,一部分人9:00上班一样,一天都理论上工作8小时。
但是不管怎么说,我们也是在这里自说自话,铁总或政策的改动需要考虑更多因素。以上纯属个人拙见,很多属于个人猜测,不必过于当真。愿大家都能过个好年。
<hr/>补充:没想到大家对这个话题这么感兴趣。我想说的是,一个萝卜一个坑,我们可以通过调度优化让一个坑争取在可接受时间内为四五个萝卜服务。但是一口气同时来一万个萝卜是怎么也排不开的,即使排开,那时间上也接受不了。就像告诉你十年后第一万个萝卜才能排上,这样“排”就没有意义了。所以硬性条件(火车和铁路)的不足必然会引发“抢”,再怎么优化程序也只是想办法尽量让抢的行为更有序一些,避免不必要的混乱,但避免不了“抢”的现实。
所以还请大家理性抢票,尽早准备充足的预案,安全回家过年。也提前祝大家新年快乐~

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则