12306火车票订票系统的伸缩扩展

14-01-26 banq
                   

本文来自Pivotal,分析了中国铁路总公司12306这个世界上最大的铁路系统的火车票预订系统。

在这个星球上人类最大的年度运动大概算是中国农历新年,又称春节。有3488万人次通过航空和235万人次通过铁路踏上他们的旅途。从历史上看,铁路旅行意味着排长龙队伍买票,中国铁路总公司(CRC)现在开始在网上卖火车票,提供比车站售票处或通过电话购买更方便的方法。

随着越来越多人的使用车票预订系统,12306铁路订票系统打破了其传统的RDBMS关系数据库系统,需要重新开始了一个新的项目,以改善原有系统性能和可伸缩性的问题,能够承受像春节度假旅游期间的尖峰的压力。目前该网站成为中国最受欢迎网站的之一。在这样严苛的访问条件下,系统出现以下很差用户体验:使用中断,性能差,预订错误,支付失败,票务确认出现问题等等。

中国铁道科学研究院的副主任朱剑圣首先解决性能问题,早在2011年,朱博士确保新系统解决基于下面两个性能瓶颈:

1.关系型数据库超负载,以至于不能处理传入的请求,无论是规模扩展性还是可靠性,都不能满足SLA要求的水平。

2.UNIX服务器的计算能力不足以解决容量需求。

朱博士说:“传统关系型数据库和大型机的计算模式并不具有扩展性,系统不能基于内存扩展跨多个节点上运行。我们的网站证明了这一点,而试图扩展我们的遗留系统将变得非常昂贵”。

使用In-memory内存数据网格解决扩展性和可靠性

朱博士的团队开始寻找新的解决方案,大型机被发现和关系数据库有同样的瓶颈,在内存数据网格(IMDG)领域,他们发现了Pivotal GemFire,在海运货物系统 金融服务,航空,电子商务等多个行业都拥有成功解决最具挑战性的数据问题的良好记录。为了执行评估,朱博士和他的团队选择了国际综合系统公司(IISI)。IISI拥有强大为政府机构工作的跟踪记录,包括在开发交通运输解决方案,迁移遗留系统到云计算架构等方面经历,有与Pivotal GemFire合作经验。他们开始试点,相信了GemFire​​将满足性能,可扩展性和可用性的要求,包括能够在低成本硬件上运行。

IISI创造了一个概念证明和展示了GemFire几个优点​​。售票计算速度提高50到100倍。当负载增加时,响应时间保持10-100毫秒的延迟。他们可以看到,通过增加容量,能实现近乎线性增长的可扩展性和高可用性的能力。项目组在短短两个月内建立了一个试点,四个月后,新的在线系统全面部署,跨越5700火车站。

该小组负责铁路网上预订系统每年增长高达50%。他们的网站每天的平均水平预订250万票。

72台UNIX系统和关系数据库换成了10台初始和10个备份的x86服务器,这是一个更具成本效益的模式,能在内存中处理2TB或一个月的的火车票数据。

朱博士认为:“首先,Pivotal GemFire​​提供了一个在真实的测试环境的证明。然后,在生产环境面对意想不到的尖峰也是成功的,具体采取了一个迭代的方法来部署,克服了一系列大规模的挑战。在最近的2013春运期间,该系统具备了运行稳定的性能和正常运行时间。现在,我们有一个可靠,经济合理的生产体系​​,支持记录容量增长的空间。这个规模实现10-100毫秒的延迟。”

基于高可用性,冗余和故障切换机制上的GemFire​​提供了连续正常运行,它已超出了所有在该领域的CRC校验的指标,并帮助他们维护他们的SLA。

具体PDF下载

[该贴被banq于2014-01-26 17:27修改过]

                   

5
banq
2014-01-26 17:44

以前我力捧的terracotta兵马俑是最早开源数据网格产品之一:

可见相关主题:http://www.jdon.com/tags/1103

如今HazelCast成为热门,HazelCast入门教程,据说Spring创始人Rod也加入了HazelCast,看来数据网格IMGD前途很光明。

对于我们使用DDD聚合根模型的,IMGD能提供更好地技术解决方案,具体贴可见我已经的讨论。