作为曾参与12306余票查询系统高并发升级的技术从业者,笔者注意到公众对于12306底层技术常存在认知盲区。为破解这一迷思,特此分享十年前的架构解密文献(该技术之前名叫 gemfire 现已晋升为Apache顶级项目Geode,代码库详见:https://github.com/apache/geode),供技术爱好者探讨研习。
Geode的核心价值在于其高并发处理机制,尤其适用于数据规模适中但需应对瞬时流量洪峰的场景。以12306余票计算为例:当业务面临千万级QPS并发查询时,通过分布式内存架构实现毫秒级响应,这正是其不可替代性所在。
对于一般企业而言,若未遭遇类似12306的极端流量压力,现有技术栈已足够支撑。但对于面临业务爆发增长或响应延迟瓶颈的系统,在当下内存成本持续走低的趋势下,可考虑通过内存计算扩容提升系统承载力。如有技术实现层面的疑问,欢迎在评论区深入交流。
技术揭秘:12306是如何挺过春运洪峰的
编者按:12306曾被称为“全球最忙碌的网站”,也曾因频繁崩溃被广大用户诟病。然而,2015年春运期间,12306系统成功抗住海量访问压力,顺利完成售票任务。作为长期关注该系统改造的架构师,本文将从技术视角还原12306架构演进的全过程,聚焦其如何借助分布式内存计算平台 Pivotal Gemfire 实现高并发、低延迟的能力。
一、流量洪峰下的系统压力
在2012年春运期间,12306系统首次承载数以千万计的在线购票请求,却因为系统响应迟钝、频繁崩溃而饱受批评。核心问题在于:
-
平时 PV(日访问量)仅 2500 万~3000 万;
-
2015 年春运单日 PV 高达 297 亿,激增 近千倍;
-
若不能弹性扩展带宽和计算资源,系统极易陷入崩溃。
二、架构抉择:Scale Up 还是 Scale Out?
传统三层架构在面对突发流量时存在结构性瓶颈:
-
后端数据库 Sybase 无法横向扩展;
-
应用层功能复杂,难以微服务化拆分;
-
系统升级只能“堆硬件”,成本高、周期长。
因此,12306架构团队决定引入“分布式内存计算平台”,通过软件定义架构应对“秒杀”级访问洪峰。
三、关键技术引入:Pivotal Gemfire
经过多轮POC测试,团队最终选定Pivotal Gemfire作为核心组件。它具备如下特性:
-
内存级查询性能:数据驻留内存,读写操作纳入微秒级响应。
-
按需伸缩能力:新增节点即可线性提升TPS,完美适配突发访问高峰。
-
关联数据局部化设计:将相关数据分布在同一节点,降低跨节点通信开销。
-
高可用保障:内建多副本机制、支持持久化与异地同步。
-
云原生部署适配性:基于x86服务器,适合部署在虚拟化环境、公有云、私有云等混合架构中。
四、系统改造成果回顾(2012-2015)
年份 | 单日 PV | 带宽 | 售票量 | 余票计算能力 | 订单处理TPS |
---|---|---|---|---|---|
2012 | 10 亿 | 1.5G | 110 万 | 300-400 TPS | 200 TPS |
2013 | 15 亿 | 3G | 265 万 | >10,000 TPS | 500 TPS |
2014 | 144 亿 | 5G | 501 万 | >10,000 TPS | 1000 TPS |
2015 | 297 亿 | 12G | 564 万 | >10,000 TPS | 1000+ TPS |
主要演进路径:
-
2012:整体架构初成,但瓶颈突出,系统频繁崩溃。
-
2013:引入Gemfire,实现余票查询10,000 TPS,刷新周期从10分钟缩短为2分钟。
-
2014:订单系统改造为“分库二级查询”,使用Hadoop+Gemfire结合“快数据+大数据”模式。
-
2015:建立5个Gemfire集群,余票查询流量75%转移至公有云(如阿里云),实现分布式部署。
五、以混合云应对海量流量
12306采用“双中心+公有云”的混合架构:
-
本地机房部署主集群,保障核心票务稳定性;
-
阿里云部署弹性余票查询集群,按需扩展计算节点;
-
跨数据中心实时同步核心数据,提升整体容灾能力。
六、从架构中汲取的经验教训
-
弹性扩展是王道:面对秒杀场景,必须从一开始设计横向扩展的能力。
-
数据“就地计算”优先:将计算逻辑靠近数据,减少不必要的I/O和传输开销。
-
热数据/冷数据分离策略:将热点数据放入内存缓存,冷数据分层存储,提高整体效率。
-
混合云架构是未来趋势:将不同模块部署在合适的位置(私有云/公有云)是性能与成本的平衡点。
尾声:从12306看未来互联网系统架构
12306的架构演进历程,是从“传统三层架构”向“可弹性扩展的分布式内存计算平台”的一次范式转移。它不仅解决了用户购票的刚性问题,也给中国的IT基础架构建设提供了宝贵的实践样本。随着混合云、边缘计算、数据分布式处理等趋势不断演进,12306的故事仍将为后来的技术方案提供思路和方向。