• 分布式集群内存数据技术引领12306技术革命
    时间:2014-01-09   作者:比特网   出处:server.chinabyte.com/151/12820151.shtml

    中国铁路客户服务中心网站(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,虽然还是很难订票,但是查询余票很快,而且查询自己的订票和下订单也很快。

    qps_chart

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

    订单查询系统改造,在改造之前的系统运行模式下,每秒只能支持300-400个查询/秒的吞吐量,高流量的并发查询只能通过分库来实现。改造之后,可以实现高达上万个查询/秒的吞吐量,而且查询速度可以保障在20毫秒左右。

    新的技术架构可以按需弹性动态扩展,并发量增加时,还可以通过动态增加X86服务器来应对,保持毫秒级的响应时间。

    技术革命一步跨越三代

    12306能够取得这样翻天覆地的效果,靠技术上的小修小补是不可能的,必须有全新的思路,能够给性能提升带来杠杆式的作用。12306发现GemFire分布式内存数据平台就是这样一种技术。

    gemfire_func_struct

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

    gemfire_struct

    大家知道,当前计算架构的瓶颈在存储,处理器的速度按照摩尔定律翻番增长,而磁盘存储的速度增长很缓慢,由此造成巨大高达10万倍的差距(如上图)。这样就很好理解GemFire为什么能够大幅提高系统性能了。

    按照计算与存储的关系,我们可以将计算架构分为四代:

    第一代,基于磁盘的单一系统:计算过程中需要从磁盘读取数据。小型机、大型机是其中的佼佼者,将单一系统的性能做到极致。

    第二代,基于磁盘的分布式集群系统:计算过程中需要从磁盘读取数据,但通过分布系统将数据分散到不同的服务器磁盘上,提高整个系统的处理能力。目前很多大型互联网和电子商务公司采用基于X86服务器的分布式集群系统,依靠海量的X86服务器部署解决高流量并发的问题。

    第三代,基于内存的单一系统:将整个数据库放在内存中,计算过程不需要从磁盘读取数据。整个系统的性能取决于单一系统的性能。传统的内存数据库就是这样的系统,对于企业级的应用可以很好地解决访问速度的问题,但面对海量数据或是海量并发访问的扩展性问题就无能为力。

    第四代,基于内存的分布式集群系统:GemFire就是这样的系统,并行计算是其关键技术之一,因而可以通过增加服务器部署规模,在内存计算的基础上,线性扩展性能。

    12306 struct

    12306之前采用Unix小型机架构,采用GemFire技术改造成Linux/X86服务器集群架构,就意味着一下跨越三代。从小型机到大内存X86服务器集群,不仅让性能提升了一个数量级,而且成本也要低得多。

    GemFire是Pivotal企业级大数据PaaS平台的一部分。Pivotal公司的企业级大数据PaaS平台主要有三个层次:云基础架构层Cloud Fabric、大数据基础架构层Data Fabric、应用开发基础架构层Application Fabric。GemFire属于大数据基础架构层,此外,Greenplum数据库也属于这一层;云基础架构层的技术是Cloud Foundry;应用开发基础架构层的技术是Spring Framework和RabbitMQ等。

    网友留言/评论

    我要留言/评论

    相关文章

    Google 告别 MySQL 移步 MariaDB:据外媒报道,近日,谷歌高级系统工程师对其数据库MySQL生态系统现状的展示中显示,谷歌的数据库已大部分由MySQL迁移至MariaDB,这是MySQL被Oracle收购后又一次被重量级用户抛弃。
    如何提高团队凝聚力和执行力?:如何提高团队凝聚力和执行力,需要提前制定一些章程和规则吗?比如需要按时完成任务,如果不能做到需要有哪些惩罚(比如给大家买饮料等) 如何做到团队中分工不分家,各岗位的专业性与合作性的统一?
    创业公司小心了:变成“僵尸”比死亡更可怕:京时间3月12日消息,新型社交营销平台Referly创始人丹尼尔·莫莉(Danielle Morrill)近日撰文称,作为这家创业公司的创始人,她最担心的问题并非公司会倒闭,而是害怕它会变成一家“僵尸”公司。莫莉表示,Referly已经变成了一家“僵尸”公司,因此她决定改弦易张。她还阐述了怎样的创业公司算是“僵尸”公司,并建议企业家们应勇于接受现实,去寻找新的道路。
    程序员2013新年计划:我的同事朋友Chris Eargle写了一篇关于新年计划的有趣文章。他让我想到了,没有出现那场世界末日是我们多么大的幸运呀(还有其他我这45年中躲过的天灾),于是,我也有了一些我自己的以程序员为主题的新年计划。
    提高效率的秘诀 by Aaron Swartz:译者按:Aaron Swartz是个传奇般的人物,他是一个网络奇才,也是一个资讯自由斗士。此前我对他一无所知,但早就受益于他的智慧。大学阶段,我很大一部分知识都来自于Google Reader,而RSS是他14岁跟别人共同创作的作品。自 2010年6月13日以来,我一共在Google Reader里阅读了 63,862 个条目。天妒英才,美国扭曲的知识产权保护制度和司法体系更是将他逼上了绝路。在此,我把Aaron Swartz的这篇著名的《HOWTO: Be more productive》翻译成中文,向他致敬!
    三个快速且简单的让你的大脑安静下来的方法:本文的作者Matthew E. May是《The Laws of Subtraction: 6 Simple Rules for Winning in the Age of Excess Everything》这边书的作者。他是丰田汽车, Edmunds.com, Intuit,和 ADP等公司的顾问。
    如何成为一名程序员:我的道路:下面要说的是我在成为一名程序员的道路上做的几件事情。写在这里除了要让自己铭记在心外,我还希望它能对别人有些用处。
    提高App用户留存的5个原则:在智能手机不断普及的情况下,你要获得你的专有用户也不是那么容易的事,Flurry最近发现iOS和Android用户,4个月后仅有20%的存留率,12个月后仅有4%的存留率,这使得建立一个长期成功的应用成了一个艰巨的任务。
    我从创建四家技术公司中学到的事:本文系作者2010年“我从创建三家技术公司中学到的57件事”发表之后,增补最近两年的新感悟修订而成。
    初创企业该如何召开董事会议:开始创业就不可避免会有董事会,有董事会就不可避免要召开董事会议。市面上指导创业者在企业成立初期如何应对董事会议的攻略和教程也很多,从传统保守型到激进创新型应有尽有。其实董事会议没有一个专一的模板,每一个CEO都会有他们自己的风格和特征。而每一个董事会也因其特殊的构成而会具有自己的DNA(规模大小、投资人vs.创业者vs.独立企业等)。