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

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

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

29176 次点击
所在节点    问与答
256 条回复
mrchi
2019-12-24 11:37:44 +08:00
我觉得并不是。

12306 一到整点的时候验证码和手机扫码的二维码都刷不出来。都是 post 请求,竟然直接 302 去 get error.html 页面,Nginx 就能做,都进不到业务系统哪来的并发呢?

即使你侥幸提前登录上了,也能莫名奇妙的把你踢出来让你重新登录,但高峰一过,你就发现自己还是登录着的,惊喜不?
woodensail
2019-12-24 11:46:37 +08:00
不是,12306 这个也就是个普通小电商秒杀的水平。很简单的一点,12306 的业务是非常容易分割到分布式服务器上的。
最核心的交易流程甚至可以分割到一台服务器只管一个车次。一个车次总共才多少车牌,能有多大并发。
eason1874
2019-12-24 11:50:17 +08:00
@mrchi #1 并发太高,后端处理不过来,高峰期前端把一部分请求扔掉了,没到后端所以就没有返回正确状态,高峰期过了,全部请求都能通过,就流畅。

@woodensail #2 你真的没见识,你随便去抓个刷票软件的包你就知道并发多大了,我敢说 12306 春运期间至少有 10 天时间超过双 11 天猫淘宝高峰。
zy8848
2019-12-24 11:53:53 +08:00
@mrchi 秒杀类应用丢弃一些请求不是常识么?被你窥探到常识后就突然就没技术含量了?
woodensail
2019-12-24 11:54:31 +08:00
说别人没见识的时候自己查查数据吧。
天猫公布 2019 年双十一时每秒成交量最高达到 55 万单。
12306 只有 2015 的数据,峰值时每秒 1000 单,考虑到列车运力有限,现在估计也不会超过每秒 2000 单。
这都是官方公布数据,差距明明白白的摆着
helionzzz
2019-12-24 11:56:07 +08:00
笑看楼上的一些大佬,真是高手在民间,我上我也行~
woodensail
2019-12-24 11:58:18 +08:00
说白了,大促考验在哪里,一个是单节点抗压能力,这个压力主要看同一个商品有多少少人抢,12306 同时抢同一个车次一般不会超过 1 万人,而电商秒杀 1 万人是小意思。
第二点则更重要,就是整个系统的抗压能力,考验各子系统的性能,以及降级策略,还有整个网络价格,这个指标基本上就是看秒成交量,而上面说了,官方数据显示,天猫秒成交量峰值超过 12306 百倍。
BlackSas
2019-12-24 11:58:27 +08:00
12306 跟淘宝可不一样。12306 同一班车这么多站,每个人起始站跟终点站都不同,这么多人一起抢同一班车。我觉得不容易。
icyalala
2019-12-24 12:00:44 +08:00
并发请求很高,这个没的说。
不过单就 "复杂度" 来说,应该到不了 "最复杂" 的那种程度,我更倾向于认为这属于特定问题。
woodensail
2019-12-24 12:04:12 +08:00
@BlackSas 其实不难,因为一个车次视为一个整体,也才 1000 张票,压力不大。
而且由于以前人工售票的历史原因,12306 习惯于把票分拆后分配给各个区间,各个区间只能卖自己区间的票。一个区间的卖完了,哪怕其他的票一张都卖不出去,你也没法借过来用,只能等下一次分配。
passerbytiny
2019-12-24 12:07:19 +08:00
@woodensail #5 电商成交本质上就是 CRUD, 而火车票是票务系统,而且是动态排座的票务系统,所以:请不要搞笑。
NerverLibis
2019-12-24 12:09:04 +08:00
民科又来忽悠人了 快跑
findmyself
2019-12-24 12:12:29 +08:00
@passerbytiny 真是笑 skr 人了 哈哈哈
optional
2019-12-24 12:12:36 +08:00
12306 虽然请求了高,但是业务是天然可以 sharding 的,最后具体到一班车的并发度并不高。
jun0205
2019-12-24 12:13:29 +08:00
没做过票务系统的就不要说业务简单了。
kop1989
2019-12-24 12:18:18 +08:00
单说面向用户这端其实并不复杂,是有一些技术难题,比如高并发。

但其实出票这整个流程是极其复杂的。也就是说其复杂是复杂在票务上,并不复杂在抢购上。
eason1874
2019-12-24 12:18:46 +08:00
@woodensail #5 笑死人,成交量跟并发是一回事吗?

12306 高峰期单日 PV 能超过 1500 亿次,平均每秒超过 173 万次,你告诉我有哪个小电商秒杀能承受这个量级?别说余票这种复杂查询,就是你说的秒杀场景,全国能扛得起这个请求数的网站也屈指可数。
bequt
2019-12-24 12:24:15 +08:00
这个感觉不是单独的秒杀吧, 秒杀都知道有黑号概念, 黑号直接没有资格参与秒杀
12306 可是没有设置黑号的啵
Raymon111111
2019-12-24 12:27:38 +08:00
并发量不高,错峰抢票

而你觉得线路上这么多站要加锁很复杂,其实并不是,每个站的票都是预先设定好的

假设沿线 A, B, C 三个站,现实是会分给 A -> C 10 张票,A -> B 5 张票,A -> B 这个买完后就算 A -> C 可以继续也买不到 A -> B 的,虽然实际上这么乘车是没问题的
limingjie138
2019-12-24 12:30:41 +08:00
说不难的只考虑一节列车一个服务器,不考虑一个大区间有 N 多小区间?如果要整体区间来看全部满负荷,那么多小区间的分票算力就很费了好吧。还要考虑人工站点售票,两套系统操作一套 DB,系统如果系统难度还算可控,DB 这里怎么说。

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

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

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

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

© 2021 V2EX