加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

技术揭秘二:探讨12306两地三中心混合云架构

发布时间:2016-08-01 14:14:46 所属栏目:语言 来源:CSDN
导读:本文作者从互联网收集大量有关12306的信息,首先描述12306系统与大型电商交易系统的主要差异和说明此差异为何需要巨大的计算资源来支撑; 再进一步探讨12306混合云设计的考
副标题[/!--empirenews.page--]

 12306网站 12306 12306网站技术

前言

2015年春节最大的特色就是“摇一摇”,微信红包在春晚摇一摇互动总量超过110亿次,峰值达8.1亿次/分钟,有185个国家传递微信祝福。支付宝钱包在除夕晚上8点达峰值,首页被点击的次数为8.832亿次/分钟。表面上来看“摇一摇”是在送红包,但从深层次的互联网思维来看,摇一摇的目的是要创造和凸显“移动支付”在互联网金融的价值链,甚至一带一路,将“移动支付”模式的业务,带出国门推向全球,此举对金融行业未来的生态影响意义重大。

摇一摇隐含的商业模式不是此篇文章讨论重点,在此要强调的是在云计算和大数据时代,任何一个商业模式的创新都需要有最先进的技术配合和支撑。从技术角度来看,这些看似业务逻辑简单的“摇一摇”在面对高流量和高并发情况下,承载天量的访问量对系统框架设计师来说是巨大的挑战。当面临“有计划、难预测、暂时性”的巨大访问量,该如何解决此问题?是花巨资建设系统呢? 还是将需要“短暂”巨大资源的业务托管在云计算数据中心,让它们提供快速灵活可调度的资源呢?

本文作者从互联网收集大量有关12306的信息,首先描述12306系统与大型电商交易系统的主要差异和说明此差异为何需要巨大的计算资源来支撑; 再进一步探讨12306混合云设计的考量 - 安全性和系统资源扩展性,并说明为何只将“余票查询业务”放在阿里云提供服务。最后以论证的方式“推测”12306两地三中心的混合云架构设计(有关12306混合云的架构和解析是作者个人的推测,有误解地方请求交流和指正)

在此篇文章,不探讨火车运能不足,抢不到车票返乡引起民怨问题,因为铁路的基础建设需要时间解决;以Pivotal Gemfire为例, 是因为2015年12306在两地三中心部署数百个Gemfire节点,这些应用节点(“异于虚机节点”)可按需以热部署方式来扩展,体现“云”的伸缩特性和流动性。

一、12306与电商交易系统

很多人喜欢将12306与淘宝网做比较, 认为12306互联网售票网站从属性来说是电子商务B2C的一支;用户必须登录,浏览,选择商品,下订单, 订单确认,支付和物流。如果只看整个交易流程,它们确实是一样的。 但从深层次的细节探讨,12306背后所隐藏的业务逻辑是非常复杂,远远超过一般人的想象。

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

如何解决大型网站所面对的高负载流量和高并发访问,一直以来都是全世界公认的技术难题。对于任何一个交易系统来说不外乎做两件事,一是提供查询,二是数据计算;任何查询业务都有响应时间的要求,从用户体验最好不要超过5秒钟;而数据计算(实时计算或非实时批量计算)与实际业务逻辑有密切的关系。

对于电子商务网站的交易系统,例如淘宝网,当店家出售一件商品,库存减一,客户退货,库存加一,当库存为零,商品下架,有问题线下讨论。此类交易系统提供简单快速的计算。因为不同品牌商品的销售彼此之间没有关联性,不会因为某件品牌商品的出售关联到其他品牌商品的库存量,它们的商品库存是属于“静态库存”;所以电商交易系统的主要设计重点是提供快速响应时间,高可用性(容灾和备份)和系统扩展性,避免在高峰交易期间,因为响应时间慢或是系统当机而失去庞大的商机。

12306互联网售票系统是业务逻辑很复杂的系统,如果将每张可出售的火车票当成一件商品来看,每张票的销售都会关联到整条路线每个站点可销售的余票量,有些站点的余票量会产生变化, 有些站点余票量不会有变化。由另外一个角度来看,当销售一张票, 改签,或退票时,整条路线每个站点的余票量都需要重新计算,也就是说每个站点的余票库存是个“动态变化库存”的概念。站点与站点之间的余票库存有巨大的关联性,此“动态库存”概念的业务逻辑是12306与电商网站最大的差异。12306的设计重点不但要具有大型电商网站所具备的特性外 (要提供快速响应时间,高可用性(容灾和备份)和系统的扩展性),还需要有强大的CPU计算资源来支撑。

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

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

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

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

铁路运输为民众提供便捷的出行, 如何将有限资源公正公平的合理分配,让大众满意是需要靠智慧解决的。 参考国内外的售票原则,运输部门一定要制定一套复杂的分配规则,这些规则是与车次,路线,加班车,席次,座位等级,车票等级,乘车区间,x天预售期和搭乘时间等都有密切关系。 每一个特定的余票查询,都会触发余票计算,每班车次的余票计算都有上万条规则需要匹配,所有经过“乘车区间”的车次都需要做余票计算;全国有3000多个车次,5000多个站点,这些分配规则总数可能达千万条级别。例如,以沪宁线为例,在春运尖峰期间,经过“上海到南京”区间的车次达300多班次,每次查询需要计算300多班车次的余票量。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读