背景和需求
中国铁路客户服务中心网站(www.12306.cn)是世界规模最大的实时交易系统之一,媲美Amazon.com,节假日尤其是春节的访问 高峰,网站压力巨大。据统计, 在2012年初的春运高峰期间,每天有2000万人访问该网站,日点击量最高达到14亿。大量同时涌入的网络访问造成12306几近瘫痪。 中国铁道科学院电子计算技术研究所作为12306互联网购票系统的承建单位,急需寻求办法解决问题。
成功解决:速度提高75倍以上

2012年3月开始,铁路总公司(原铁道部)开始调研、改造12306。2012年6月选择了Pivotal GemFire分布式内存计算平台(Distributed In-memory computing)改造12306,由铁科院项目小组负责人王明哲主任和资拓宏宇(IISI)信息科技有限公司在铁科院主管朱建生所长领导下提供技术实 施。一期先改造12306的主要瓶颈——余票查询系统。9月份完成代码改造,系统上线。2012年国庆,又是网上订票高峰期间,大家可以显著发现,可以登录12306,虽然还是很难订票,但是查询余票很快。2012年10月份,二期用GemFire改造订单查询系统(客户查询自己的订单记录)。2013年春节,又是网上订票高峰期间,大家可以显著发现,可以登录12306,虽然还是很难订票,但是查询余票很快,而且查询自己的订票和下订单也很快。
根据系统运行数据记录,技术改造之后,在只采用10几台X86服务器实现了以前数十台小型机的余票计算和查询能力,单次查询的最长时间从之前的15秒左右下降到0.2秒以下,缩短了75倍以上。2012年春运的极端高流量并发情况下,系统几近瘫痪。而在改造之后,支持每秒上万次的并发查询,高峰期间达到2.6万个查询/秒吞吐量,整个系统效率显著提高。如上图所示。
订单查询系统改造,在改造之前的系统运行模式下,每秒只能支持300-400个查询/秒的吞吐量,高流量的并发查询只能通过分库来实现。改造之后,可以实现高达上万个查询/秒的吞吐量,而且查询速度可以保障在20毫秒左右。
新的技术架构可以按需弹性动态扩展,并发量增加时,还可以通过动态增加X86服务器来应对,保持毫秒级的响应时间。
梦里寻它:技术革命一步跨越三代
12306能够取得这样翻天覆地的效果,靠技术上的小修小补是不可能的,必须有全新的思路,能够给性能提升带来杠杆式的作用。12306发现GemFire分布式内存数据平台就是这样一种技术。

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

大家知道,当前计算架构的瓶颈在存储,处理器的速度按照摩尔定律翻番增长,而磁盘存储的速度增长很缓慢,由此造成巨大高达10万倍的差距(如上图)。这样就很好理解GemFire为什么能够大幅提高系统性能了。
按照计算与存储的关系,我们可以将计算架构分为四代:
第一代,基于磁盘的单一系统:计算过程中需要从磁盘读取数据。小型机、大型机是其中的佼佼者,将单一系统的性能做到极致。
第二代,基于磁盘的分布式集群系统:计算过程中需要从磁盘读取数据,但通过分布系统将数据分散到不同的服务器磁盘上,提高整个系统的处理能力。目前很多大型互联网和电子商务公司采用基于X86服务器的分布式集群系统,依靠海量的X86服务器部署解决高流量并发的问题。
第三代,基于内存的单一系统:将整个数据库放在内存中,计算过程不需要从磁盘读取数据。整个系统的性能取决于单一系统的性能。传统的内存数据库就是这样的系统,对于企业级的应用可以很好地解决访问速度的问题,但面对海量数据或是海量并发访问的扩展性问题就无能为力。
第四代,基于内存的分布式集群系统:GemFire就是这样的系统,并行计算是其关键技术之一,因而可以通过增加服务器部署规模,在内存计算的基础上,线性扩展性能。

12306之前采用Unix小型机架构,采用GemFire技术改造成Linux/X86服务器集群架构,就意味着一下跨越三代。从小型机到大内存X86服务器集群,不仅让性能提升了一个数量级,而且成本也要低得多。
GemFire是Pivotal企业级大数据PaaS平台的一部分。Pivotal公司的企业级大数据PaaS平台主要有三个层次:云基础架构 层Cloud Fabric、大数据基础架构层Data Fabric、应用开发基础架构层Application Fabric。GemFire属于大数据基础架构层,此外,Greenplum数据库也属于这一层;云基础架构层的技术是Cloud Foundry;应用开发基础架构层的技术是Spring Framework和RabbitMQ等。
对于此次引入GemFire技术的改造,中国铁道科学研究院电子计算技术研究所副所长朱建生表示:“通过技术改造解决了困扰我们多时的尖峰高流 量并发问题,让全国人民不再因为技术原因而抱怨,我们终于舒了一口气。Pivotal GemFire分布式集群内存数据技术对整个技术改造发挥了关键的作用。同时,感谢Pivotal公司及其实施方项目团队的努力,在技术开改造过程中确保 旧系统顺畅运行、旧系统到新系统平滑迁移,快速实现新系统的上线。”
引用来自“wolfy123”的评论
问一个问题,为什么12306的证书总是不安全的?求解
引用来自“DavidYun”的评论
引用来自“君陌”的评论
「虽然还是很难订票,但是……」
「虽然还是很难订票,但是……」
数据定期刷到硬盘?机房得摆满各国神仙祈祷别断电吧
引用来自“max_sun”的评论
为什么不能用车次建库呢?
前面几个说的,没想明白。举个例子
现在明显是用归属局区分的。
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“自由的开源”的评论
引用来自“白文”的评论
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“eechen”的评论
该网站的安全证书不受信任!
您尝试访问 kyfw.12306.cn,但服务器出示的证书却不是由您计算机操作系统信任的实体颁发的。这可能意味着该服务器已生成自己的安全凭据(Chrome 无法依据这些凭据确定身份信息),或者有攻击者尝试拦截您的通信。
您不应再继续,尤其是如果您以前从未在此网站看到这一警告信息,则更不应继续操作。
买个SSL证书真的会穷死铁路公司吗?
引用来自“Jacle”的评论
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿
引用来自“君陌”的评论
「虽然还是很难订票,但是……」
「虽然还是很难订票,但是……」
数据定期刷到硬盘?机房得摆满各国神仙祈祷别断电吧
前面几个说的,没想明白。举个例子
现在明显是用归属局区分的。
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“木狼”的评论
几个亿,一个.com的域名都拿不到...
引用来自“ddr”的评论
引用来自“自由的开源”的评论
引用来自“ddr”的评论
我个人感觉不是很容易的事情,慢慢来,我这次用手机app买票都买到了。网站打不开,不知道为啥app还能连上?求解!!
引用来自“颜_”的评论
一群硕士本科生终于在毕业找工作的时候对面试说:我有分布式,高并发,大数据经历
引用来自“ddr”的评论
我个人感觉不是很容易的事情,慢慢来,我这次用手机app买票都买到了。网站打不开,不知道为啥app还能连上?求解!!
引用来自“Rain2Zoey”的评论
虽然定不到票,但是查询很快!我就查查我不买,老板做的真好!真适用
引用来自“木狼”的评论
几个亿,一个.com的域名都拿不到...
比如:北京->西安,途径石家庄、郑州。 从起点到终点的除外,北京到石家庄,石家庄到郑州,这些站站的余票查询的算法如何设计,数据库如何设计?
还有连号座位的算法: 我买3张票,基本出来的都是座位在一起的,这种算法如何设计?
恕我愚钝,请各位大牛指点一下。。。。。。
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
一趟车的票最多也就是几十万人去抢吧,但是淘宝双11一件秒杀的商品访问人数上百万!!
前面几排上来就喷的人, 一看技术不如后几个认真讨论的人技术好。
引用来自“吐槽的达达仔”的评论
高级黑啊。。。
引用来自“GreatFish”的评论
引用来自“kimmking”的评论
看到多处“虽然还是订票很难,”但是没用的一堆…尼玛最大瓶颈就是订票难,查询都tm是很次要的
其实不改变中国人扎堆回家的习惯,就无解。
也许有了机器猫里的任意门没准行
引用来自“adual”的评论
GemFire我们也在用,不过12306得多少内存啊?数据同步也是挺大问题的。
引用来自“自由的开源”的评论
引用来自“Dingoog”的评论
引用来自“ElricHuang”的评论
引用来自“kenzr”的评论
x86= 3g内存/台 服务器?
引用来自“IT民工-潇洒生活”的评论
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“白文”的评论
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“Dingoog”的评论
引用来自“ElricHuang”的评论
引用来自“kenzr”的评论
x86= 3g内存/台 服务器?
我觉得 用memcache , redis 这样数据库上面就能省很大一笔了
引用来自“iBoxDB”的评论
引用来自“白文”的评论
引用来自“iBoxDB”的评论
12306这类网站使用SQL集中式数据库的情况下 锁冲突会消耗很多资源,但12306的核心数据只是一个座位号加个身份证号,开发一个专用实时数据库也不需要3个月,性能轻松提高10000倍.
引用来自“ElricHuang”的评论
引用来自“kenzr”的评论
x86= 3g内存/台 服务器?
引用来自“白文”的评论
引用来自“iBoxDB”的评论
12306这类网站使用SQL集中式数据库的情况下 锁冲突会消耗很多资源,但12306的核心数据只是一个座位号加个身份证号,开发一个专用实时数据库也不需要3个月,性能轻松提高10000倍.
你们是没做过集群还是怎么???
人家腾讯发展了多少年?
人家12306发展多久??
能比?
引用来自“白文”的评论
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“萝卜Robert”的评论
12306 这分布式内存 靠谱么?
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“komelio”的评论
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“FreeBlues”的评论
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“一刀”的评论
引用来自“RogerLee”的评论
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿
引用来自“hphper”的评论
引用来自“人曰小花喵~”的评论
俺就不说这丑陋的前端了,这东东也能媲美z.cn?
引用来自“高杰-Joy”的评论
说的容易做的难, QQ和亚马逊都是经历了N年才有今天的努力.不管怎么样, 保持一颗敬畏的心.
引用来自“kenzr”的评论
x86= 3g内存/台 服务器?
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“木狼”的评论
几个亿,一个.com的域名都拿不到...
引用来自“鉴客”的评论
个人觉得 12306 在解决访问问题之前还是别出来现眼了
引用来自“人曰小花喵~”的评论
俺就不说这丑陋的前端了,这东东也能媲美z.cn?
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
车票不像其他商品,买不到就没有了,看着楼上的评论,搞得自己都是大牛似得
引用来自“白文”的评论
引用来自“CheckStyle”的评论
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“白文”的评论
引用来自“LVAN”的评论
没有看出有什么特点的,革命尚未成功,同志还需努力的,
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“Ghost_”的评论
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿
引用来自“RogerLee”的评论
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿
很奇怪的,为什么不与淘宝等具备大数据量处理公司进行合作的
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿
引用来自“疲于奔命的傻逼”的评论
媲美亚马逊…笑尿