12306上的分布式内存数据技术GemFire

摘要:作为世界规模最大的实时交易系统之一,12306备受关注,尤其在特殊节日里。尽管昨天消息称其又宕掉了,但恢复时间明显缩短不少,且手机APP未受影响。多少有分布式内存数据技术GemFire的一些功劳。

编者按:打造高并发、大流量的网站一直是我们的关注的重要技术点,比如颇受欢迎的《高性能、高流量Java Web站点打造的22条建议》。所以,每年都会格外关注12306这面“旗帜”。刚刚读者分享了一篇文章,关于12306的分布式内存数据技术,原文来自IT专家网,节选并分享给大家。


中国铁路客户服务中心网站(12306.cn)是世界规模最大的实时交易系统之一。2012年初的春运高峰期间,每天有2000万人访问该网站,日点击量最高达到14亿。大量同时涌入的网络访问造成12306几近瘫痪。 为此,2012年3月开始,铁路总公司(原铁道部)开始调研、改造12306。2012年6月选择了Pivotal GemFire分布式内存计算平台改造12306,由铁科院和资拓宏宇(IISI)信息科技有限公司提供技术实施。

点击可看大图

一期先改造12306的主要瓶颈——余票查询系统。9月份完成代码改造,系统上线。2012年国庆,在网上订票高峰期间,可以登录12306,虽然还是很难订票,但是查询余票很快。2012年10月份,二期用GemFire改造订单查询系统(客户查询自己的订单记录)。2013年春节,在网上订票高峰期间,可以登录12306,虽然还是很难订票,但是查询余票很快,而且查询自己的订票和下订单也很快。

根据系统运行数据记录,技术改造之后,在只采用10几台X86服务器实现了以前数十台小型机的余票计算和查询能力,单次查询的最长时间从之前的15秒左右下降到0.2秒以下,缩短了75倍以上。2012年春运的极端高流量并发情况下,支持每秒上万次的并发查询,高峰期间达到2.6万QPS吞吐量,整个系统效率显著提高。

订单查询系统改造,在改造之前的系统运行模式下,每秒只能支持300-400个QPS的吞吐量,高流量的并发查询只能通过分库来实现。改造之后,可以实现高达上万个QPS的吞吐量,而且查询速度可以保障在20毫秒左右。新的技术架构可以按需弹性动态扩展,并发量增加时,还可以通过动态增加X86服务器来应对,保持毫秒级的响应时间。

GemFire分布式内存数据平台的原理为:

通过云计算平台虚拟化技术,将若干X86服务器的内存集中起来,组成最高可达数十TB的内存资源池,将全部数据加载到内存中,进行内存计算。计算过程本身不需要读写磁盘,只是定期将数据同步或异步方式写到磁盘。GemFire在分布式集群中保存了多份数据,任何一台机器故障,其它机器上还有备份数据,不用担心数据丢失,而且有磁盘数据作为备份。GemFire支持把内存数据持久化到各种传统的关系数据库、Hadoop库和其它文件系统中。12306之前采用Unix小型机架构,采用GemFire技术改造成Linux/X86服务器集群架构。

12306ng(12306网站的开源项目)对此尚无点评。不过,昨天是春运火车票发售首日,据悉12306网站“瘫痪”1小时,且出现“串号”问题,显然,单纯分布式内存数据技术还不足以应对12306所面对的技术挑战。毕竟,即使算上SAP的HANA,和Pivotal的GemFire,都还很新。

如果有这方面的好观点,欢迎投稿给我们(@CSDN云计算)。(编辑/郭雪梅)