算法 | 12306改造(二):探讨12306两地三中心混合云架构
摘要:当面临“有计划、难预测、暂时性”的巨大访问量,该如何解决此问题?是花巨资建设系统呢? 还是将需要“短暂”巨大资源的业务托管在云计算数据中心,让它们提供快速灵活可调度的资源呢?本文以12306为例进行探讨。
【编者按】在「12306改造」专题中,一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式说明12306是如何实现高流量高并发的关键技术。今天,他继续为大家带来第二章:解析12306两地三中心混合云架构。
以下为正文
前言
2015年春节最大的特色就是“摇一摇”,微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福。支付宝钱包在除夕晚上8点达峰值,首页被点击的次数为8.832亿次/分钟。表面上来看“摇一摇”是在送红包,但从深层次的互联网思维来看,摇一摇的目的是要创造和凸显“移动支付”在互联网金融的价值链,甚至一带一路,将“移动支付”模式的业务,带出国门推向全球,此举对金融行业未来的生态影响意义重大。
摇一摇隐含的商业模式不是此篇文章讨论重点,在此要强调的是在云计算和大数据时代,任何一个商业模式的创新都需要有最先进的技术配合和支撑。从技术角度来看,这些看似业务逻辑简单的“摇一摇”在面对高流量和高并发情况下,承载天量的访问量对系统框架设计师来说是巨大的挑战。当面临“有计划、难预测、暂时性”的巨大访问量,该如何解决此问题?是花巨资建设系统呢?
本文作者从互联网收集大量有关12306的信息,首先描述12306系统与大型电商交易系统的主要差异和说明此差异为何需要巨大的计算资源来支撑;
在此篇文章,不探讨火车运能不足,抢不到车票返乡引起民怨问题,因为铁路的基础建设需要时间解决;以Pivotal
一、12306与电商交易系统
很多人喜欢将12306与淘宝网做比较,
12306网站与电商交易系统业务逻辑的差异
如何解决大型网站所面对的高负载流量和高并发访问,一直以来都是全世界公认的技术难题。对于任何一个交易系统来说不外乎做两件事,一是提供查询,二是数据计算;任何查询业务都有响应时间的要求,从用户体验最好不要超过5秒钟;而数据计算(实时计算或非实时批量计算)与实际业务逻辑有密切的关系。
对于电子商务网站的交易系统,例如淘宝网,当店家出售一件商品,库存减一,客户退货,库存加一,当库存为零,商品下架,有问题线下讨论。此类交易系统提供简单快速的计算。因为不同品牌商品的销售彼此之间没有关联性,不会因为某件品牌商品的出售关联到其他品牌商品的库存量,它们的商品库存是属于“静态库存”;所以电商交易系统的主要设计重点是提供快速响应时间,高可用性(容灾和备份)和系统扩展性,避免在高峰交易期间,因为响应时间慢或是系统当机而失去庞大的商机。
12306互联网售票系统是业务逻辑很复杂的系统,如果将每张可出售的火车票当成一件商品来看,每张票的销售都会关联到整条路线每个站点可销售的余票量,有些站点的余票量会产生变化,
12306
由上面所述,每张火车票的销售状态变化(买票,退票,改签),都会影响到整条路线火车站点可销售的余票量;例如,某条火车路线有100个车次,每个车次可承载1000人,有100个一等座,
在整个客票系统里,有数十条行车路线,有3000多个车次(G,D,K,Z,C,..),5000多个火车站点,有不同的席次(硬座,硬卧,
如果将整条路线的所有车票都放在起始站出售的话,乘车距离最远的先购票,创造的利润最大,但是下游站点就买不到票,失去公正和公平的分配原则。所以,每个站点的余票计算并不是简单的两站之间算好的票数,做加加减减的计算。
铁路运输为民众提供便捷的出行,
这意味着余票查询/计算需要使用大量的CPU计算资源,同时必须快速反应余票查询的结果给用户。在春运售票高峰期间,每分钟都有数万张车票的销售,假如余票查询的响应时间缓慢,这些信息就失去价值,会发生看得到票,但实际上买不到票的情况发生。
二、12306 混合云考虑因素和规划
一般的商业活动都有季节性的旺季和淡季之分,在旺季时烦恼是否有足够的库存,以免失在商机,在淡季时就要想办法促销,降低库存。
根据百度百科对混合云的定义,“混合云是融合公有云和私有云,是近年来云计算的主要模式和发展方向。企业用户出于安全考虑,更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,在这种情况下混合云被越来越多的采用,它将公有云和私有云进行混合和匹配,以获得最佳的效果,这种个性化的解决方案,达到既省钱又安全的目的”。
混合云托管考虑因素
由上面的定义,混合云服务模式应该是12306最佳的选项,可以将“有计划,难预测,暂时性”需要巨大资源的业务放在公有云提供服务。如果12306采用混合云的服务模式,有哪些重要因素需要考虑?
托管方式:整个业务托管还是部分业务托管?
安全性的考量:敏感性资料该如何存放和保护呢?如何规避风险?
业务子系统的独立性:如果是部分业务托管,被指定托管业务的子系统是否能独立剥离原先系统的业务流程?
协同合作:在公有云的业务子系统的数据又如何回流与私有云的原来系统在业务上配合,协同合作呢?
数据源的传输和复制/同步:如何复制/同步私有云和公有云的数据?
资源的弹性扩展:迁移到公有云的业务子系统是否能实现按需弹性扩展,利用云计算数据中心的网络和服务器资源来提供服务?
混合云的规划——按需弹性扩展改造
在
信息安全和业务子系统托管的选择原则
下列进一步探讨如何选择“业务子系统”放在公有云提供服务,主要有两点考虑因素,一为个人信息保护,
1.
登录:含个人信息
余票查询/计算:不含个人信息
订单确认和订单查询:含购票人信息和身份确认
付款:含个人的支付信息
2.
Web服务器
-
不含个人信息
应用服务器缓存服务器
-
不含个人信息
登录服务器
-
含个人信息
余票查询/计算服务器-
不含个人信息
订单确认和订单查询服务器
-
含个人信息
实名制身份确认服务器
-
含个人信息
…
3.
Web服务器
应用服务器缓存服务器
余票查询/计算服务器
4.
Web服务器集群
应用服务器缓存集群
余票查询/计算集群
5.售票高峰期访问量振幅最大业务
Web服务器
应用缓存服务器
余票查询/计算服务器
综合以上的分析,余票查询/计算业务符合安全性考虑和售票高峰期访问量振幅最大,最耗系统资源;其他适合放在公有云提供服务有三大服务器集群,Web服务器集群,
三、12306混合云架构推测和解析
互联网有一篇关于2015年春运12306用户体验报导,在此篇采访提到12306网站采取5项措施,制定多套应急预案,以应对突发情况,来提高用户体验。
12306用户体验有改善,“为了保障春运期间正常订票,12306网站建设了两个生产中心。在中国铁路总公司又增加了一套设备。这样就增加了一倍的网络内部处理能力……多建中心的同时,也增加了网络的带宽,带宽从5G扩容至12G。增加带宽就等于我们多开了几个门,能让更多的用户同时进来……还不只这些,我们在春运高峰期租了个”云”……在网络高峰期间,12306网站的查询量最大,占到整个网站的85%,就把75%的查询业务都放在租来的“云”上…“春运高峰期的点击量、浏览量是平时的几倍,甚至十几倍。从经济角度考虑,一个网站不太可能以最高峰值的承受力为标准来建设。我们只能在满足日常需求与高峰期售票需求之间寻求一个最佳点,合理进行硬件配置。”现在云技术成熟,高峰期租个云用几天,价格合理,安全也有保障。
有这些新设备、新技术,今年的用户体验大为改善。据测算,今年12306网站的点击速度和页面打开速度比去年缩短了一半。
由上面对话透露的信息,再以专业IT经验来分析并推测12306
1.
两个生产中心应该是指铁路总公司数据中心和铁科院数据中心,“云”是指阿里云
2.
意谓着12306只将75%流量的查询业务交给阿里云托管,阿里云只提供租赁查询服务,不涉及任何系统功能的改造。
3.
以专业的IT来看,12306提供全国的网上售票服务,在系统设计上一定有高可用性和容灾的设计。
Gemfire平台已具备高可用性的设计,
4.
在2012年12月24号下午,由于空调设备故障,12306中断服务数小时。这可以看出12306是单数据中心的设计,
为了吸取以前的经验,假设12306已经考虑业务连续性,应用不中断,操作可持续的设计,这意味着双生产中心是需要并行作业提供服务;万一有一个生产中心系统出故障,可以在瞬间将流量导至运行良好的数据中心,保持服务的连续性。
5.
过去数据源的传输和数据库的复制机制已经证明此技术是稳定和成熟的,所以会沿用以前的设计。
6.
在前一节已经详述,考虑个人资料的敏感度和安全性,12306不会将这些资料放在阿里云,但会将需要耗费巨大资源的余票查询业务放在阿里云提供服务。另外符合此条件的有3大服务器集群,Web服务器集群,
综合上述的分析,推测和描绘12306混合云的架构如下图:
12306
四、12306两地三中心混合云探讨
12306两地三中心的混合云架构是目前国内规模最大,业务系统最复杂的混合云服务。在12306承办单位
1.
从整个购票流程来说,12306只是将部分流程的环节-“余票查询”业务交由阿里云提供服务,并不是“整个系统”按需扩容的托管,这与一般企业的业务托管有最大的差异。如何将“业务子系统“剥离整个系统独立作业,
2.
12306是公共服务平台,敏感性资料的保护和安全性是首要考虑因素。在混合云设计上,12306将这些资料存放在私有云的数据中心,
3.
双数据中心并行作业,不但可以分担高负载运行,而且可以相互备份,
4.
将“难预测,暂时性”的巨大访问量-余票查询业务放在阿里云,阿里云可以按需动态调整网络带宽和“虚机“资源,保证12306的服务品质,并解决网络传输瓶颈问题。
5.
12306将热点数据放在NoSQL的Gemfire平台,提供快速查询和计算;将关键数据持久化到关系型数据库。
总体而言,目前12306混合云架构是很合理的设计,求稳,求安全,又省钱。如果追求技术的完美性来说,有如下四点建议:
提供同个车次不同车厢的联程票
(例如,在同个车次,
北京到上海没票,
但北京到天津,
天津到南京,
南京到上海有票),和
不同车次的联程票
(中途站点换车),使旅客出行订票更方便;
思考“数据大集中”的模式,摒除路局和12306数据中心的数据交换,提高处理效率,且易于整个售票系统的维护;
整合12306售票网站和线下作业系统(窗口购票,电话订票,代售点),提供更快速的服务;
大胆采用“软件定义数据中心”的技术,可以做更灵活更快速数据中心的迁移/复制,为将来多数据中心混合云的部署和服务(分散网络流量)或异地容灾设计打基础。
致歉:
昨天的文章《算法 | 大型网站技术演进--存储的瓶颈(1)》
题目错误,应该是 大型网站技术的第三篇,题目应该是
《算法 | 大型网站技术演进--存储的瓶颈(3)》.
非常抱歉!
据说好多人都不知道长按图片也能关注,你知道吗?