12306 自动分配无座这个逻辑是真的合理吗?

2018-09-27 12:54:19 +08:00
 v2410117

国庆打算回家,无奈已经无二等座票(有无座票),上班无事拿着手机在 12306 客户端刷票,叮,出现 2 张二等座,我立马点进去提交订单,这是这个让人无语的逻辑出来了,提交提示我二等座无票,自动分配无座票,根本都不问我是不是要无座,自动就分配了,只有一个确定按钮,点了就生成订单让我去付款,我只能取消啊,取消又提示我一天只能取消 3 次,这是搞毛???? 然后我又继续刷,第二次又刷到一张票,点进去,尼玛,依旧跟上回一样,二等座无票,自动分配无座并生成订单,取消就只剩一次机会了。

我就很纳闷,我就是要二等座,你自动给我分配个无座是啥意思,你可以提示我,二等座卖完了,是否需要分配到无座,你让我自个选啊,你为啥要自动给我生成个订单,取消还得给我算次数,添加一个按钮有那么难吗????

就好比我去菜市场买牛肉,你给我说有,我给了钱,你去仓库里发现卖完了,就说一声卖完了我给你换成同等价值的猪肉,也不管我要不要,就扔给我,但这根本不是我想要的啊,这哪说理去????

我不信这个问题没有人遇到过,我网上搜了一圈,这问题好像出现的时间也不短了,也不是现在才出现,12306 为啥就不改呢?难道就为了多拉个人多赚钱?强行卖无座票????

16818 次点击
所在节点    程序员
132 条回复
GavinJ
2018-09-27 16:45:08 +08:00
因为, 无座票价 = 有座票价。 他们认为你上车了就得买票,只是先来的有座,后来的无座。

同样是 站票 为何要跟有座的出一样的钱, 那是一个道理,找谁说理去。
mytsing520
2018-09-27 16:47:00 +08:00
铁路涉及到交易的部分其实比重不大,比重大的在于查询。至于交易这部分,铁路交易的逻辑和淘宝交易的根本不一样(每成交一次交易,买票也好,改签也好,退票也好,都涉及这条路线上所有关系的变化,可以说是牵一发而动全身),不然当年马云和 IBM 也不会说根本做不了这种话。
现在 12306 自身的云平台主要负责的是交易,由阿里云承担大部分查询功能,查票这种稍微简单点的逻辑一般人还是能做的。

核心问题是,你要求人家一夜之间满足所有人,这……
ooee2016
2018-09-27 16:50:55 +08:00
等你抢票的时候你又觉得干嘛要让我点直接分配无座不就好了
swulling
2018-09-27 16:51:28 +08:00
@helionzzz 静态页面、查询功能这种难度就太低了。从 lz 可以看到 12306 的余票不是实时的,是有 cache 的,这样别说百万并发了,亿万都没有什么难度。退票的限制太多,真正的退票请求也很少。

最难的就是订单处理。
Lanke0
2018-09-27 16:54:22 +08:00
感觉你们搞错了点问题。

你去买票,最低期望是至少能买到票,所以自动随机分配到无座是合理的。
但是得有个选项,我不希望买到无座票。至于难度什么的,这个尽量去实现出来当然是最好的
galikeoy
2018-09-27 16:55:23 +08:00
@dremy 不,这是一个按钮的事,是否自动分配无座
wolfie
2018-09-27 16:57:29 +08:00
12306 官网没什么体验。

不过你这个提的问题,还真觉得属于正常,换你会怎么设计。
romisanic
2018-09-27 17:00:31 +08:00
@swulling 曾经有一波人也这么觉得,在 12306 刚推出来当年春运高峰抢票崩溃之后收罗了一大波人要自己做一套秒杀 12306 的系统,结果在设计阶段就 GG 了,因为真正去做的时候才能意识到真正的复杂和面临的各种技术上的压力。
可以去搜一下,主要发起人在项目失败之后还专门做了分析并发表出来了。
凭想象是解决不了问题的。
kimqcn
2018-09-27 17:00:32 +08:00
这个按钮,需要 100 个人,2 个月,3000 万来改.改完了还要上电视:12306 体贴民情,升级系统...
Bingbing
2018-09-27 17:06:45 +08:00
今儿给同事抢票也遇到了,后来因为取消订单次数过多只能明天接着刷票了。。。
ThirdFlame
2018-09-27 17:29:29 +08:00
12306bypass 或者 智行 。 智行的话 不用加加速包,得到抢到了让你付款 会强行加 20,这个时候登录 12306 付款 即可,不用付 20 了。
iPhone8
2018-09-27 17:33:33 +08:00
我也怀疑为什么高铁北方就没无座票,南方一堆无座票
passerbytiny
2018-09-27 17:34:49 +08:00
楼主,以及楼上提供解决方案的和分析技术原因的,你们要么是无意,要么是刻意忽略一个事实:铁路卖的是票,不是座,二等硬座票跟无座票是同一档次的票。要行政法规明示的火车票价,怎么可能出现票价相同但档次不同的票。

既然是同一档票,那么因为并发环境出票的时候正好没有座了,自然是直接给你出无座票。你要觉得无座票不好,你有退的自由。你要是觉得别人可能会退票,你想现在不出票等一会看看,不好意思,你后面还排着队呢,你去重新排队吧,但是你排过来的时候可能无座票都没了。你要是觉得网上能够随机抢,不好意思,曾经有这想法的人太多导致资源严重浪费,所以我们屏蔽了这种手段。

你们应该吐槽的是,无座票为什么跟二等硬座票的价格是一样的。这两者票价要不一样,12306 绝对不敢这么出票。

楼主举得买牛肉例子就是扯淡,买菜从来是钱货同时或者先货后钱,哪个 13 回先钱后货。另外就算买牛肉先钱后货,那类比到火车票上也是没新鲜牛肉的时候,跟你换成冰箱里存的牛肉。
ChopinWong
2018-09-27 17:36:29 +08:00
海外用户表示根本没办法买票。end of story。
就不说 他没有英文界面和收据这种东西了。我们的财务也很头疼啊。
zarte
2018-09-27 17:50:38 +08:00
应该是像 93 楼说的那样,如果有这个功能很多人会一直抢有座的票导致队列很长,尤其是抢票软件。
passerbytiny
2018-09-27 18:04:52 +08:00
关于楼主的这句话:“关键是我不要无座啊,如果确实一直抢不到二等座,我可以坐飞机,坐大巴,还有备选项嘛”,不支持这种操作的原因,可能只是纯技术原因,就是为了减小资源浪费。

铁路这种大体量的系统,应该是分布式并且异步的,购票流程类似这样:
一、购票人查询是否有二等座 /无座这一档次的票
二、购票人确认有票后下单
三、下单时锁票
三 A、如果有座,锁座票,跳到四
三 B、如果有无座票,锁无座票,跳到四
三 C、如果无座票也没有了,跳到分支 A
四、提示下单成功
五、支付
六、购票完成

分支 A 一、提示下单失败,提示已经没有票了,高级一点的再给个哪里还有票的友情提示
中间可能还有未支付、取消订单等其它分支,但是加上一天取消不能超过三次这种限制后所有分支加起来,一个人一天的购票过程中,能走到锁票步骤的,不会超过十次。

如果要满足楼主的需求,那就要改锁票过程了,加一个判断:如果只有无座票,那么跳刀分支 X ——提示无座,再跳回到一,然后循环。重点是这个循环,有了这个循环,一个人一天的购票过程中,就有无数次的可能会走到锁票这个步骤。别提加循环次数限制,要是限制次数,这个功能等于没用,所以不如直接不提供功能。

查询过程可以通过 CQRS、缓存等,压力并不大,但是锁票过程,涉及到跟票务库存之间的强一致性,压力是很大的。
loveour
2018-09-27 18:13:10 +08:00
@passerbytiny #96 感觉有个出发点的问题,就是铁路部门会默认用户更希望买到票,它自己也更倾向售出票。因为其实如果从更人性化角度来看,不需要复杂的逻辑,只需要用户提前选择没有座位的时候是否买无座就好了,不需要改锁票流程。选了就是不要无座的没有有座票就直接跳到失败就行了。
jmk92
2018-09-27 18:36:57 +08:00
1、加一个选项,到底要不要无座,根据每个用户自定义设置,这并没有那么复杂,直接的跳出,并不会影响强一致性。
2、复杂的在于,如果区分了无座和有座,那么整体的结构要改动的比较多,比如:
查票的时候就要区分,避免用户再次进入订单逻辑
进入订单逻辑的时候,也要把二等座和硬座的情况单独处理,分成两种情况
最终扣票的时候,如果没有有座的票了,也要分两种情况
3、这个需求,相较于整体来说,算是比较小的一个功能了,但是往往牵一发而动全身,这也是必然。
4、你说这个功能超级复杂,根本实现不了,这个我不信,拿出来对付抢票软件的五分之一的精力也实现了。
关键还是在于想不想做,很多用户才不会关心这些事,他们只关心为何总是无座,无座一次也就罢了,无座了 3 次今天连票都买不了了,能不吐槽吗?继续无视,那这个矛盾只会继续下去,咱们讨论有意义吗?
当然,这换做是阿里、腾讯,任何一个私企,我相信被骂个几次,早就改了,不会留到现在。
rocketman13
2018-09-27 18:40:42 +08:00
因为价钱是一样的,被看成是同一款产品了
passerbytiny
2018-09-27 18:44:42 +08:00
@loveour 你的出发点可不是只买一次并且只买有座票,而是尝试多次并且只买有座票。
如果是前者,现在已经实现了,给了你三次取消订单的机会。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/493117

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX