不刷验证码!12306混合云架构详解

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

1、描述12306系统与大型电商交易系统的主要差异并说明此差异为何需要巨大的计算资源来支撑。

2、进一步探讨12306混合云设计的考量-安全性和系统资源扩展性,并说明为何只将“余票查询业务”放在阿里云提供服务。

3、以论证的方式“推测”12306两地三中心的混合云架构设计。

1.112306网站与电商交易系统业务逻辑的差异

1.212306系统主要瓶颈-余票计算与配票规则

由上面所述,每张火车票的销售状态变化(买票,退票,改签),都会影响到整条路线火车站点可销售的余票量;例如,某条火车路线有100个车次,每个车次可承载1000人,有100个一等座,900个2等座,另外还有50个火车停靠站,这有多少个排列组合?从理论上来说,余票计算是在解答数学模型的难题。

在整个客票系统里,有数十条行车路线,有3000多个车次(G,D,K,Z,C,..),5000多个火车站点,有不同的席次(硬座,硬卧,软座,软卧,无座),座位等级(商务,一等,二等),和车票等级(一般,军人,学生等)等因素,将这些参数放在数学模型上,至少有数千亿条排列组合。而目前的客车运量有限,每天不超过1000万名旅客。如何将1000万张车票分配到数千亿条的排列组合里面呢?并且还要考虑公正,公平的合理分配。

如果将整条路线的所有车票都放在起始站出售的话,乘车距离最远的先购票,创造的利润最大,但是下游站点就买不到票,违背了公正和公平的分配原则。所以,每个站点的余票计算并不是简单的两站之间算好的票数,做加加减减的计算。

每一个特定的余票查询,都会触发余票计算,每班车次的余票计算都有上万条规则需要匹配,所有经过“乘车区间”的车次都需要做余票计算;全国有3000多个车次,5000多个站点,这些分配规则总数可能达千万条级别。例如,以沪宁线为例,在春运尖峰期间,经过“上海到南京”区间的车次达300多班次,每次查询需要计算300多班车次的余票量。

一般的商业活动都有旺淡季之分,在旺季时烦恼是否有足够的库存,以免错失商机,在淡季时就要想办法促销,降低库存。使成本最小化,利润最大化,是市场经济的商业法则。12306互联网售票系统,也面临节假日和非节假日高高低低的需求,12306在春运售票高峰期间的访问流量(PV值)和平时访问流量高达上千倍的差异。如果按原来的系统架构,要解决春运时高流量高并发的问题,可能需要扩充“数十倍”或数百部的Unix服务器才能满足需求。如果12306自建系统,在春运以后,又该如何处理服务器过剩的问题,才不会造成资源浪费呢?

2.1混合云托管考虑因素

根据百度百科对混合云的定义,“混合云是融合公有云和私有云,是近年来云计算的主要模式和发展方向。企业用户出于安全考虑,更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到既省钱又安全的目的”。

由上面的定义,混合云服务模式应该是12306最佳的选项,可以将“有计划,难预测,暂时性”需要巨大资源的业务放在公有云提供服务。如果12306采用混合云的服务模式,有哪些重要因素需要考虑?

2.2混合云的规划

按需弹性扩展改造

信息安全和业务子系统托管的选择原则

下面进一步探讨如何选择“业务子系统”放在公有云提供服务,主要考虑两点因素,一为个人信息保护,二为需要“短暂”且强大计算机资源支持的子系统业务。

1.购票流程和个人信息:

2.主要服务器集群和个人信息:

3.最耗用网络资源

4.最耗用服务器资源

5.售票高峰期访问量振幅最大业务

综合以上的分析,余票查询/计算业务符合安全性考虑和售票高峰期访问量振幅最大,最耗系统资源。其他适合放在公有云提供服务有三大服务器集群,Web服务器集群,应用服务器缓存集群,和余票查询/计算集群。

互联网有一篇关于2015年春运12306用户体验报导,中国铁道科学研究院电子计算技术研究所副所长、12306网站技术负责人朱建生说,为了应对2015年春运售票高峰,该网站采取5项措施:一是利用外部云计算资源分担系统查询业务,可根据高峰期业务量的增长按需及时扩充。二是通过双中心运行的架构,系统内部处理容量扩充一倍,可靠性得到有效保证。三是对系统的互联网接入带宽进行扩容,并可根据流量情况快速调整,保证高峰时段旅客顺畅访问网站。四是防范恶意抢票,通过技术手段屏蔽抢票软件产生的恶意流量,保证网站健康运行,维护互联网售票秩序。五是制定多套应急预案,以应对突发情况。

“为了保障春运期间正常订票,12306网站建设了两个生产中心。在中国铁路总公司又增加了一套设备。这样就增加了一倍的网络内部处理能力...多建中心的同时,也增加了网络的带宽,带宽从5G扩容至12G。增加带宽就等于我们多开了几个门,能让更多的用户同时进来…还不只这些,我们在春运高峰期租了个”云”…在网络高峰期间,12306网站的查询量最大,占到整个网站的85%,就把75%的查询业务都放在租来的“云”上…“春运高峰期的点击量、浏览量是平时的几倍,甚至十几倍。从经济角度考虑,一个网站不太可能以最高峰值的承受力为标准来建设。我们只能在满足日常需求与高峰期售票需求之间寻求一个最佳点,合理进行硬件配置。”现在云技术成熟,高峰期租个云用几天,价格合理,安全也有保障。

有这些新设备、新技术,今年的用户体验大为改善。据测算,今年12306网站的点击速度和页面打开速度比去年缩短了一半。

由上面对话透露的信息,再以专业IT经验来分析并推测12306混合云的架构设计。

1.两个生产中心和壹个“云”:

两个生产中心应该是指铁路总公司数据中心和铁科院数据中心,“云”是指阿里云。

2.75%的查询业务都放在租来的“云”上:

意谓着12306只将75%流量的查询业务交给阿里云托管,阿里云只提供租赁查询服务,不涉及任何系统功能的改造。

3.两地三中心高可用性和容灾设计:

以专业的IT来看,12306提供全国的网上售票服务,在系统设计上一定有高可用性和容灾的设计。PivotalGemfire平台已具备高可用性的设计,所以,两个生产中心一定运行整套业务流程服务,彼此作为异地容灾备份的准备,而阿里云只提供部分业务查询的服务。

4.业务连续性,应用不中断,操作可持续的设计:

在2012年12月24号下午,由于空调设备故障,12306中断服务数小时。这可以看出12306是单数据中心的设计,没有考虑容灾的设计。

为了吸取以前的经验,假设12306已经考虑业务连续性,应用不中断,操作可持续的设计,这意味着双生产中心是需要并行作业提供服务;万一有一个生产中心系统出故障,可以在瞬间将流量导至运行良好的数据中心,保持服务的连续性。

5.数据源的传输和数据库的复制:

过去数据源的传输和数据库的复制机制已经证明此技术是稳定和成熟的,所以会沿用以前的设计。

6.阿里云的余票查询业务托管:

在前一节已经详述,考虑个人资料的敏感度和安全性,12306不会将这些资料放在阿里云,但会将需要耗费巨大资源的余票查询业务放在阿里云提供服务。另外符合此条件的有3大服务器集群,Web服务器集群,应用服务器缓存集群,和余票查询/计算集群。

综合上述的分析,推测和描绘12306混合云的架构如下图:

12306两地三中心的混合云架构是目前国内规模最大,业务系统最复杂的混合云服务。在12306承办单位-铁科院的领导下,经过精心的设计,部署和试运行,在2015年春运上线,它的表现是很令人瞩目的。它的效果和影响总结如下:

1.提供“高并发,低延迟”的解决方案,一劳永逸,不用烦恼后续硬件升级的问题。

2.通过多集群技术,实现多重的高可用性,确保高峰压力下和系统异常的情况下保证业务的持续性。

3.构建一个可扩展的云应用平台架构,灵活和快速热部署的机制,为未来混合云的部署打基础。

4.使用数十部x86服务器(或是上百部虚拟机)可以达到10,000TPS以上,提升原来系统性能达30倍以上。余票查询集群性能从之前的10余分钟提升至2分钟左右。

5.12306“订单分库二级查询”子系统:将订单生成与订单查询分库处理,订单查询性能提高50倍,订单生成性能提高4-5倍。

6.使用pivotalGemfire改造后的分布式系统,极易分散部署到不同的数据中心

12306混合云设计的特点归纳如下:

1.业务托管:

从整个购票流程来说,12306只是将部分流程的环节-“余票查询”业务交由阿里云提供服务,并不是“整个系统”按需扩容的托管,这与一般企业的业务托管有最大的差异。如何将“业务子系统”剥离整个系统独立作业,再将数据结果传回系统,协同作业,这需要从应用系统框架设计着手。

2.敏感资料的存放和安全性:

12306是公共服务平台,敏感性资料的保护和安全性是首要考虑因素。在混合云设计上,12306将这些资料存放在私有云的数据中心,确保数据安全无虑。

3.业务连续性,应用不中断的容灾设计:

双数据中心并行作业,不但可以分担高负载运行,而且可以相互备份,保证操作不间断。

4.资源动态扩展:

将“难预测,暂时性”的巨大访问量-余票查询业务放在阿里云,阿里云可以按需动态调整网络带宽和“虚机“资源,保证12306的服务品质,并解决网络传输瓶颈问题。

5.关系型数据库(SQL)和非关系型数据库(NoSQL)混合应用

12306将热点数据放在NoSQL的Gemfire平台,提供快速查询和计算;将关键数据持久化到关系型数据库。

总体而言,目前12306混合云架构是很合理的设计,求稳,求安全,又省钱。如果追求技术的完美性来说,有如下四点建议:

1.提供同个车次不同车厢的联程票(例如,在同个车次,北京到上海没票,但北京到天津,天津到南京,南京到上海有票),和不同车次的联程票(中途站点换车),使旅客出行订票更方便。

2.思考“数据大集中”的模式,摒除路局和12306数据中心的数据交换,提高处理效率,且易于整个售票系统的维护。

4.大胆采用“软件定义数据中心”的技术,可以做更灵活更快速数据中心的迁移/复制,为将来多数据中心混合云的部署和服务(分散网络流量)或异地容灾设计打基础。

注:有关12306混合云的架构和解析是作者个人的推测,有误解地方请求交流和指正

THE END
1.计算机毕业设计之Springboot火车票售票系统计算机毕业设计之Springboot火车票售票系统。 2 设计概要 21世纪是信息化时代,随着信息技术和网络技术的发展,信息化已经渗透到人们日常生活的各个方面,人们可以随时随地浏览到海量信息,但是这些大量信息千差万别,需要费事费力的筛选、甄别自己喜欢或者感兴趣的数据。对网络电影服务来说,需要用到优秀的协同过滤推荐功能去https://blog.csdn.net/qq_42135426/article/details/144434588
2.mis课程设计火车购票.docxmis课程设计火车购票一教学目标本章节的教学目标是使学生掌握火车购票系统的功能和操作,培养学生运用信息技术解决实际问题的能力。具体目标如下:知识目标:使学生了解火车购票系统的架构功能和操作流程,掌握常用的购票策略和技巧。技能目标:培养学生运https://www.renrendoc.com/paper/368733496.html
3.基于java的火车售票管理系统的设计与实现3.2 火车票预售系统详细设计 11 3.2.1 界面设计 11 节选择乘'心 14 '"I 16 3.2.2 功能实现 23 5 总结 30 1.2需求分析 1.2.1信息要求 该系统主要记录用户、班次、火车、银行卡之间的关系 用户分为管理员与购票用户 售票管理员信息:管理员编号、管理员名字、管理员电话购票用户信息:身份证号、电话号码、银行https://blog.51cto.com/12855/11451931
4.火车票网络预订售票系统的设计与实现20240225173109.docx火车票网络预订售票系统的设计与实现.docx 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 第1章绪论 本章将介绍项目设计的背景和意义,通过国内外此类项目理论技术的发展现状和实际应用体现该设计的现实价值;同时阐述项目开发的基本任务和目标,介绍毕业设计的项目要求。 https://max.book118.com/html/2024/0225/8140016035006040.shtm
5.火车站售票管理系统(Delphi+Access)Delphi计算机火车售票系统是为购票人员提供方便,为车站管理人员提供可靠便捷的工具.其开发内容主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。利用Delphi 6.0软件及其提供的各种面向对象的开发工具,建立完整性强、安全性好的数据库,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计https://www.2bysj.cn/article/delphi/201004/2996.html
6.火车售票系统需求分析(精选5篇)按给定需求,通过查找相关资料,完成火车售票系统设计及实现,在设计过程中充分运用数据结构与算法课程中所学知识,从而熟练地掌握和应用线性表、单链表等重要数据结构和常用算法。提前熟悉软件需求分析,软件测试等环节,运用相应程序设计语言实现该系统,从而进一步提高程序设计能力。 https://www.360wenmi.com/f/fileqsegz75u.html
7.数据库课程设计——MySQL火车票售票系统[通俗易懂]数据库课程设计——火车票售票系统 很烦数据库课程设计?阅读本篇文章会让你不那么烦躁~ 体验链接:http://www.shadowingszy.top/train-tickets/index.html 话不多说先放源代码:https://github.com/shadowings-zy/TrainTicketsSystem 由于数据库部署在了我自己的服务器上,所以如果各位想要修改源代码,或者搭建自己的https://cloud.tencent.com/developer/article/2087990
8.火车站售票系统详细设计说明书.doc[4] 胥光辉,金凤林等.《软件工程方法与实践》 机械工业出版社[5] 车站售票管理系统—可行性研究报告[6] 车站售票管理系统—项目开发计划[7] 车站售票管理系统—需求规格说明书[8] 车站售票管理系统—概要设计说明书2.总体设计火车站售票管理系统主要实现售票自动化,包括售票,订票、退票,查询,统计,为了保证系统https://www.taodocs.com/p-512895746.html
9.纯C语言实现火车售票系统创新互联这是好久之前写的一个火车售票系统, 写的非常粗糙, 后来也没改了, 希望遇见有缘人继续优化吧。 创新互联建站专注于邢台企业网站建设,响应式网站设计,购物商城网站建设。邢台网站建设公司,为邢台等地区提供建站服务。全流程定制网站制作,专业设计,全程项目跟踪,创新互联建站专业和态度为您提供的服务 http://shouzuofang.com/article/jgooh.html
10.基于java的火车票售票系统基于Java的火车票售票系统是一个在线购买火车票的平台,提供实时查询、预订和支付功能。 系统概述 Java火车票售票系统是一个基于Java语言开发的在线火车票购买平台,该系统可以实现用户注册、登录、查询车次、购票、退票等功能,为用户提供便捷的火车票购买服务。 https://www.kdun.com/ask/642072.html
11.软件工程火车订票系统详细设计基于C#语言的winform界面火车票订票系统,优秀毕业设计,新手必看! 本系统参照火车站的订票实际情况,按照软件工程的结构化设计思想,经过项目的可行性研究和需求分析、总体设计、详细设计,以及编码实现和调试等步骤设计开发了火车订票管理系统。并运用数据流图和数据字典、E-R图和数据库逻辑结构、层次图、系统流程图、以及程https://www.iteye.com/resource/weixin_41141866-10466082
12.客运售票管理系统开题报告范文一个火车站售票信息管理系统应达到的目标是提供及时、广泛的'信息服务,加快信息检索的效率,实况灵活的查询,减轻管理人员制作报表和统计分析的负担。但由于铁路火车票务管理的复杂性,本毕业设计与开发也仅是一个尝试性的工作,但它很有启发性,对于研究开发该类程序可以起一个抛砖引玉的作用。https://www.yjbys.com/bylw/kaitibaogao/1875.html
13.异步交易系统及应用实践保存),事过多年电子商务网站大都转为异步交易系统,甚感欣慰,特此收藏个人图书馆为纪念。 近几年的国庆、中秋节、春节的都是在堵塞中渡过的,先是火车票网上订票堵塞,然后是全国高速公路堵车,再之后就是各景点和景点售票处拥堵,不言而喻,堵塞已经成为中国特色。造成这一特色的根本原因就是:中国人多,各类活动相对过http://www.360doc.com/content/21/0901/00/16264650_993573973.shtml