设为首页 收藏本站
查看: 1368|回复: 0

[经验分享] 原创:谈谈12306铁路客运售票系统的架构问题(二)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-1-22 11:11:47 | 显示全部楼层 |阅读模式
就一个软件系统而言,业务需求是根本,是软件系统的基因和灵魂。

       下面我们来简要的分析一下铁路客运售票系统和道路客运售票系统的主要业务需求。

       首先,铁路客运售票系统的业务需求主要有:(1)要建一个全国集中式的铁路客运售票系统,要把全国所有火车站及票务资源都要收入其中。(2)单次运输载客人数较多。以动车组为例,短编组的动车组有8个车厢,610个座位,长编组的动车组有16个车厢,1220个座位。(3)路途较长,途径站点多,区间段内上下客多。(4)铁路客运售票系统的车票库必须支持动态生成,要能够根据旅客购票情况实时拆分、动态生成。举例来说,一列从广州开往北京的动车组,在正式售票前,票务库里可能只有1220张“广州-北京”的车票。当然,实际情况更可能是为沿线的几个大站预先生成若干车票,这样乘客购票时系统可以直接出售而无须拆分,只有短途票、或者在一些小站发车、或者预先生成的票全部售完等情况才需要动态生成,这里为了举例说明而做了简化处理。现在我们来分析一下车票是怎样动态拆分的。假设有A旅客买了一张“广州-长沙”的票(一端为起点),那么票务库应当立刻取一张“广州-北京”的票将其一拆为二,一张是“广州-长沙”,卖给A旅客,另一张是“长沙-北京”,保存到车票库里。假设有B旅客买了一张“武汉-郑州”的票(中间段),那么票务库应当立刻取一张“广州-北京”的票将其一拆为三,一张是“武汉-郑州”,卖给B旅客,其余两张“广州-武汉”及“郑州-北京”的票则保存到车票库里。实际在拆分时还会涉及到很多优先级算法,例如旅客要买短途票,那么系统是优先拆长途车票、还是优先拆短途车票?旅客要买长途票,但车票库里已经没有符合条件的长途票,只有一些很零碎的车票了,那么能不能把几张很零碎的车票拼起来卖给旅客?……诸如此类,要考虑很多细致的算法,这样才能保证将尽可能多的车票卖出去,降低列车座位的空座率,减少浪费。

       而道路客运刚好相反,(1)立足本市建设道路客运售票系统,只要把本市的汽车站和票务资源收录其中即可。(2)单次运输载客人数较少。一般大型客车的核载人数不超过45人,比火车动辄数百上千人要少很多。交通运输部门对营运车辆的超载行为抓得很严,车站卖票不可能卖的比座位数还多。(3)路途长短不一,有省际客运,也有省内客运,但多数都是直达车,经停某站并上下客的比例很少。所以每辆车的车票数量是有限的(不超过核定载客数),车票的起讫站是固定的并且起点站均为本市客运站,客车票是静态的,根本不需要拆分和动态生成,完全可以在售票之前由系统自动生成好。

       从以上业务需求中我们可以看出来,集中式的铁路客运售票系统要比分布式的道路客运售票系统,在系统设计上要复杂的多。而且这些让人一看就头大的业务需求,显然使用集中式架构进行开发的工作量要稍小一些。现在我们假设12306.cn是采用道路客运那样每个市建一个数据库,那实现起来要考虑的问题就太多了!除了程序算法以外,还必须要考虑全国三四百个城市中的数据库与12306.cn的联网问题。最起码要搞一个“部省联网工程”吧,光是这一个工程建设就得两三年。连上之后,出于对实时性的考虑,售票系统必须要能实时连接全国这三百多个数据库,旅客买一张票,售票系统就得立即连接到始发站所在城市数据库进行操作,拆分生成的新车票还要插入另一个始发站城市数据库,这些城市数据库跟12306.cn之间的网络链接是否可靠?带宽及性能如何? 如何保证事务一致性?网络通道的安全性如何?……很多现实的技术问题从一开始就摆在所有人面前,工程竣工遥遥无期。所以为了系统能尽快上线,选择集中式架构进行建设,可能也是迫不得已的一种选择。

       很多人拿“双11”期间的淘宝、京东、腾讯等平台跟春运期间12306.cn比,并以此为依据批评12306.cn铁老大作风,这里我要替12306.cn说一句公道话。众所周知,淘宝、京东、腾讯等电商平台从最初上线发展到今天,都已经有十余年的历史了。十年前它们最初上线时根本没多少用户量,系统里可销售的商品数也有限,那个时候也没有什么“双11”和“秒杀”的概念,它们都是从小到大一点一点逐渐成长起来,数据量级也都是从万级到百万级再到亿级这样一步一步走过来的,历史留给了他们不断向上、不断完善的时间。但12306.cn没有,几乎是从它诞生那一刻起,就面对了全国的用户,没有一个逐渐发展的过程。并且电商平台也没有这么动态分分合合的复杂业务逻辑,一件商品与另一件商品数据之间几乎没有关联,数据量虽大,但可以采取各种技术手段将其水平拆分,分布到多台服务器上。所以拿电商平台与12306.cn直接比较,对后者而言并有失公平。尽管如此,12306.cn仍然要努力加快自身的改造,毕竟这个平台关系到广大旅客的切身利益,人民群众热切盼望你们能够超常规发展啊!

       那么12306.cn的架构有没有可以优化的地方呢?有,具体如何优化,请看下文《原创:谈谈12306铁路客运售票系统的架构问题(三)》。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-14482-1-1.html 上篇帖子: 原创:谈谈12306铁路客运售票系统的架构问题(三) 下篇帖子: 原创:谈谈12306铁路客运售票系统的架构问题(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表