12306架构设计方案

老李_beijing 发布于 2012/09/27 21:52
阅读 2K+
收藏 3

先分析场景:

铁道部网关 -A- 12306服务器 -B- WWW

A为铁道部为12306提供的接入网关,带宽有限

B为12306对外提供的互联网服务

瓶颈应该在A处,库存等信息统统由铁道部内部网关提供,所受限制比较多,且每次查询等非实质购票行为都要去请求网关。

就像一条大河突然变窄了,或者是钱塘江大潮类似吧,或者是千军万马过独木桥。最后就是你也打不开、我也打不开。

所以12306今年设计了排队系统,类似于排队过桥。但是,只是从问题的表面入手,根本没有理解问题的本质。于是今年的问题就是网页是能够打开了,可是票还是买不到啊。当然,他们可能从来不会考虑这个问题,他们肯定是有票的,只要网站不挂,就可以了。

那么我们来分析一下如何解决这个问题。首先还是要从问题的最本质入手,12306的问题最本质是什么?或者说12306网站的目的是什么呢?我的理解是:卖更多的票。

怎样才能卖更多的票呢?

 假设网关A一分钟最多处理一次请求,那么就算12306再牛X,他也只能卖1张票。这个大家都容易理解,那么既然知道了瓶颈在哪,但是又不能水平扩展(不能说铁道部再多开几个网关给我吧) ,只能是从业务上开源节流,尽量让通过网关额请求更有效率。

排队就是最容易想到的办法,只是跑偏了,又被骂了。

 

加载中
1
漫步在云端
漫步在云端
貌似是数据库的问题吧
0
f
findyouthme

凡是技术问题最终都可以解决,但是人心的问题都比较难办。

0
白明辉
我觉得不能走常规时时买票,应该是拍号定时发票或摇号。从用户心理和技术上应该可以好 解决
0
打雷要下雨LEO
打雷要下雨LEO
剩下多少票难道不能缓存?只能说明除了网站还有其它出票渠道,这是人的问题不是技术的问题
老李_beijing
老李_beijing
肯定啊,网购的火车票有个圆圈的网字,代售点卖的票有个圆圈售字,只有火车站卖的票才没有圆圈,全部都走一个库存,只是给网购的票开个接口罢了
0
chenli118
chenli118

 

如果铁道部花的3亿元,货真价实的话,搞一套弹性分配的子系统解决并发问题,可行性有多高?


 

用户下单后,调度系统根据线路和车次,把用户请求分配到指定的子系统内处理。


 

每个子系统只卖指定的几个车厢的票。每个子系统都有结算和出票的功能。


 

原理是:根据起点和终点分配车厢,车厢分散在各个子系统内,只有重现身体证排重时,异步校验可解。


 

现在虚拟技术这么成熟,随时招唤多少系统都是可有的。

 

http://cio.yonyou.com/space.php?uid=192633&do=blog&id=41423

返回顶部
顶部