丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的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混合云的架构和解析是作者个人的推测,有误解地方请求交流和指正