12306 是不是现在世界上业务逻辑最复杂的系统之一?

2019-12-24 11:20:14 +08:00
 justrand

光想想这并发量头就发麻,不像天猫双十一是短时间并发,12306 是一出票就双十一。

29225 次点击
所在节点    问与答
256 条回复
badcode
2019-12-24 12:31:58 +08:00
@Raymon111111
表示同意,
下车时看到几乎整车厢的下车和上车
maskerTUI
2019-12-24 12:32:44 +08:00
我觉得,火车票的逻辑比单纯一件商品的逻辑要复杂很多,就一条路线来说,其中一段行程的票被卖出去之后其它所有票都得重新计算,要考虑卖出去的是在哪一段(头部 /中间 /尾部),其它部分路段票数要不要减少,这样下来计算量是很大的;而淘宝的商品,大家各买各的,卖出去一件就库存减一。从个人观点来看,考虑到中国人口数量,我觉得是。
Raymon111111
2019-12-24 12:33:52 +08:00
@badcode 我买票一致都是多花钱直接买到终点站,甚至都不用抢,慢悠悠的买就可以,我家那一站貌似就只有一两张票,刚出来就没了
dodo2012
2019-12-24 12:34:55 +08:00
真是无知者无畏啊,看 ls 一些估计连逻辑都不清楚,还来个不如个小电商的秒杀的理论了
justrand
2019-12-24 12:35:37 +08:00
@Raymon111111
如果每个站对应每趟列车的每个区间网络售卖的票是固定的话,那逻辑确实很简单了。那么很疑惑 12306 的问题或者难点在哪里呢?
momooy
2019-12-24 12:36:11 +08:00
不要轻易对自己不懂的领域做评论,会被业内人笑话的
Vegetable
2019-12-24 12:36:28 +08:00
说 12306 不是最复杂的没问题,但是说什么就是一个小电商水平的,有点没过脑子吧
czb
2019-12-24 12:39:17 +08:00
这个不能只看并发 也要看逻辑复杂度 双十一并发的确很大 但是逻辑也比较简单 12306 需要把座位利用率最大化就需要尽可能每一个区间乘客数量最大化 这中间的逻辑才是复杂的
janus77
2019-12-24 12:42:36 +08:00
看了下那位发言记录,戾气挺重的,先保平安
hiya5
2019-12-24 12:44:55 +08:00
所以 V2 没有在 12306 的程序员吗
nevin47
2019-12-24 12:45:06 +08:00
V 站的下限再次公开刷新了……
woodensail
2019-12-24 12:46:38 +08:00
@eason1874 看清楚前提,我说的是单节点单 sku 在 shadring 后的抗压能力,而非系统抗压能力。所以你后面的话就显得很没有意义。
justrand
2019-12-24 12:50:03 +08:00
@Raymon111111
我想了下,你的逻辑优点说不通,如果固定分配的,那岂不是有可能出现有些座位明明有票但是卖不出去的情况?<br>
比如举个极端例子:<br>
a-b-c 一共三站共 20 张票,固定分配 a-b 5 张 a-c 10 张 b-c 5 张 ,很特殊,a-c 这段区间乘客特别多,所以 a-c 一下子卖完了还剩下很多人买不到,但是正好没有 a-b 和 b-c 这样需求的购买人,那岂不是这列车卖出了 10 张票后其他票卖不出去了。这样的逻辑不行吧,如何保证座位利用率,车票应该是动态调整调配才符合逻辑吧,当然我也是瞎猜的
ybbswc
2019-12-24 12:53:25 +08:00
民科。我上我也行。😂
gdrk
2019-12-24 12:53:58 +08:00
不会真有人觉得全球最大的票务系统简单吧,别恶心我。
woodensail
2019-12-24 12:55:20 +08:00
@justrand 额,说的没错,所以 12306 的区间限售从非互联网时代起有一个令人诟病的点,就是全程票很足,区间票很少。导致很多人被迫买长乘短。

12306 的想法是先满足全程乘坐的乘客,如果全程票多出来了,再在后面的批次分配给区间。然而大家不会真等到二次分配时再去买区间票,而是都去抢全程票了,毕竟如果全程票卖完了,也就不会再调剂给区间了……
whp1473
2019-12-24 12:57:03 +08:00
12306 的业务很复杂,如果评的话,肯定能进中国前几名的复杂业务之一了。
(1)高并发,虽然时段是拆分的,但是考虑到中国假期时间段,其实走和来一般都是开始和结束那几天,这 13 亿人都会参与的业务,每个人又有 N 个操作,N 次重复。
(2)N 多刷票软件一直不停的刷,爬虫首要集中的业务
(3)准确性要求极高,一旦出现超买、错买,会导致很严重的社会问题。不像有的小系统,数据错了,我再修修就好了。就问你敢修,一个逻辑写错了会同时面临新老逻辑交替,错误数据不断产生,在系统中蔓延
(4)复杂业务,分布式事务、票务冲突、候补、区间车次买票、退票、改签、最大购票次数限制、如何合理分配票务和区间、如何保障各个节点尽可能利益最大化,这些都是系统要考虑的,点击一次买票不简单只是买票。

这个业务一点也不简单!完全可以说是民用复杂业务之一,其他能比的估计就是股票高频交易、淘宝双 11 这类的了
ifxo
2019-12-24 13:09:33 +08:00
就让腾讯或阿里做肯定没问题,所谓复杂不过是借口罢了
woodensail
2019-12-24 13:14:04 +08:00
顺带一提,其实现在 12306 已经做得很不错了。
读写分离,秒级更新,既保证数据正确性,同时可无限平行扩展,只要服务器够,哪怕全球一起刷都刷不挂。
交易请求进队列,同时限制队列长度,既保证业务服务器稳定,又避免队列爆炸。当然缺点就是有人反馈明明看到有票,缺提示队列满。
今年基本上也就候补功能出了些幺蛾子,考虑到候补售票是新上功能,首次抗压出点问题也可以理解。
Counter
2019-12-24 13:17:13 +08:00
并发是很重要的问题,但是不是唯一重要的问题

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

https://www.v2ex.com/t/631787

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

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

© 2021 V2EX