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 ...)
1347 4
|
存储 边缘计算 运维
核心网架构 | 带你读《5G时代的承载网》之十三
对 5G 核心网进行了颠覆性的设计,通过基于服务的架构、网络切片、C/U 分离等,结合云化技术,实现网络的定制化、开放化、服务化,支持大流量、 大连接和低时延的万物互联需求。
核心网架构  | 带你读《5G时代的承载网》之十三
|
3月前
|
人工智能 IDE 开发工具
最新版 OpenCode(AI 编程工具) 功能介绍
在现代化软件开发流程中,传统IDE插件、网页端AI编程工具普遍存在三大痛点:平台绑定严重、模型兼容性差、无法深度融入终端工程化流程。多数AI编码工具仅支持固定模型厂商,难以适配本地私有模型、第三方开源模型混用场景;网页端工具依赖浏览器环境,无法直接操作本地项目文件、执行系统命令、联动工程脚本;常规IDE插件功能单一,仅能实现基础补全,缺失项目规划、多文件批量重构、代码诊断、工程文档生成等高阶能力。
661 0
|
7月前
|
人工智能 JavaScript 中间件
周下载量 600个W,这个TS版Gin框架火了?
Hono(日语“火焰”)是轻量、极速的全栈Web框架,专为边缘计算设计。支持Cloudflare Workers、Deno、Bun等多运行时,零依赖、仅14KB,内置TypeScript强类型、洋葱中间件、JSX服务端渲染及丰富官方中间件,真正“Write once, run anywhere”。
660 6
|
存储 机器学习/深度学习 移动开发
汇编语言指令系列
汇编语言指令系列
3751 0
|
存储 SQL 关系型数据库
【赵渝强老师】使用mydumper备份MySQL
本文介绍了使用mydumper工具进行MySQL数据库备份与恢复的操作方法。相比单线程工作的mysqldump,mydumper支持多线程,速度提升可达10倍。其功能包括事务性表快照、快速压缩、导出binlog等,并提供详细的参数说明和操作步骤。文章通过实例演示了安装mydumper、创建存储目录、全库备份、指定数据库及表备份、删除数据库以及使用myloader恢复数据的完整流程,并附带视频讲解,帮助用户更好地理解和应用该工具。
1048 0
|
存储 分布式计算 算法
恭喜小红书!业界最大数据湖0故障迁上阿里云
恭喜小红书!业界最大数据湖0故障迁上阿里云
1489 1
|
图形学 开发者 UED
Unity游戏开发必备技巧:深度解析事件系统运用之道,从生命周期回调到自定义事件,打造高效逻辑与流畅交互的全方位指南
【8月更文挑战第31天】在游戏开发中,事件系统是连接游戏逻辑与用户交互的关键。Unity提供了多种机制处理事件,如MonoBehaviour生命周期回调、事件系统组件及自定义事件。本文介绍如何有效利用这些机制,包括创建自定义事件和使用Unity内置事件系统提升游戏体验。通过合理安排代码执行时机,如在Awake、Start等方法中初始化组件,以及使用委托和事件处理复杂逻辑,可以使游戏更加高效且逻辑清晰。掌握这些技巧有助于开发者更好地应对游戏开发挑战。
1185 0
|
消息中间件 Java Unix
一文搞懂Java整合RocketMQ
一文搞懂Java整合RocketMQ
1109 1