12306.cn 使用 Gemfire 技术为查询提速

简介: 12306.cn是世界规模最大的实时交易系统之一,媲美Amazon.com,节假日尤其是春节的访问高峰,网站压力巨大。2012年初的春运高峰期间,每天有2000万人访问该网站,日点击量最高达到14亿在春运高峰,经常崩溃,无法登录,怨声载道。

12306.cn是世界规模最大的实时交易系统之一,媲美Amazon.com,节假日尤其是春节的访问高峰,网站压力巨大。2012年初的春运高峰期间,每天有2000万人访问该网站,日点击量最高达到14亿在春运高峰,经常崩溃,无法登录,怨声载道。


2012年3月开始,原铁道部开始调研、改造12306。2012年6月选择了Pivotal GemFire(分布式内存数据库)改造12306。一期先改造了余票查询系统。9月份完成改造后上线。2012年国庆,虽然订票依旧悲催,但是查询余票很快。2012年10月份,开始改造订单查询系统。2013年春运期间,虽然订票依旧不给力,不过查询自己的订票和下订单还是比较快的。

image.png

根据12306的系统运行数据记录,采用GemFire改造之后,十几台X86服务器就实现了以前数十台小型机的余票计算和查询能力,单次查询的最长时间从之前的15秒左右下降到0.2秒以下,不足原来的1/75。新系统支持每秒上万次的并发查询,高峰期间达到2.6万个查询/秒吞吐量,整个系统效率显著提高。如上图所示。


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


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


GemFire属于内存数据库技术,提供只有内存才能提供的性能。它非常适合于要求对数据进行实时访问、高并发的新式应用程序的需要。通过使用 GemFire 管理内存数据,可以省去传统数据库由于 CPU 周期、网络流量、数据库访问延迟等导致的高额数据库事务成本。能省去诸多延迟也是项目目前用内存数据库的原因。GemFire内存数据服务还可以与 HAWQ搜索引擎整合,为Hadoop增加SQL表达能力,利用Hadoop作为公共存储基础。

12306之前采用Unix小型机,采用GemFire技术后,改用Linux/X86服务器集群架构,在降低成本的同时,性能还提升了一个数量级。

image.png


相关文章
|
JSON 数据格式
Nestjs(三)接收参数 @Query @Body @Param(post、get 、put、delete ...)
Nestjs(三)接收参数 @Query @Body @Param(post、get 、put、delete ...)
1174 4
|
JSON 数据格式
Feign调用文件下载服务接口实例
Feign调用文件下载服务接口实例
1727 0
Feign调用文件下载服务接口实例
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
自然语言处理 达摩院 数据挖掘
[大语言模型-论文精读] 阿里巴巴-通过多阶段对比学习实现通用文本嵌入
[大语言模型-论文精读] 阿里巴巴-通过多阶段对比学习实现通用文本嵌入
|
存储 关系型数据库 MySQL
PolarDB的特点
【5月更文挑战第13天】PolarDB的特点
752 1
如何撰写一份清晰有效的说明文档
在软件开发、产品开发以及各种工作任务中,编写一份清晰有效的说明文档是至关重要的。一份好的说明文档能够帮助读者理解事物的背景、目标和操作步骤,提高工作效率,减少沟通成本。
|
Java
《Java工程师成神之路》电子版
《Java工程师成神之路(基础篇)》介绍了普通Java工程师必须要学习的相关知识点,包括面向对象和Java语言基础两大部分,涵盖基本数据类型、关键字、异常、I/O流、集合、反射、泛型和枚举......
969 0
 《Java工程师成神之路》电子版
|
存储 Web App开发 数据采集
|
监控 JavaScript 前端开发
JavaScript与Nest.js:打造高性能的服务器端应用
Nest.js是Node.js的渐进式框架,融合OOP、FP和FRP,提供模块化、装饰器和依赖注入,助建高性能服务器应用。选择Nest.js的原因包括模块化设计、简洁的装饰器API和高性能基础(如Express或Fastify)。开始使用需安装Node.js和`@nestjs/cli`,创建项目、编写控制器。深入学习涉及模块化、服务的依赖注入及中间件。安全性优化涵盖HTTPS、CORS策略、限流和性能监控。
576 0