升级的核心是余票查询的升级,余票查询使用存储过程,sybase数据库,结果悲剧了,业务并发性高时,不能横向扩展.
揭秘12306技术改造(三):传统框架云化迁移到内存数据平台
2012年 改造前的余票计算/查询子系统架构描述
1. 路局“实时”提供售票记录
火车票的席位销售是由每个路局规划和调控(铁路总公司共有18个路局), 而12306与每个路局是共享同一个“票库”。 换句话说,“线上”的12306是与“线下”的火车站点售票窗口,电话售票,和各地的售票点抢票。每个路局将每张票的销售记录都“实时“传送到12306在铁总数据中心“主数据库服务器”做汇总。
2. 数据库复制到余票集群:
在铁总的数据中心 - 余票计算服务器集群是由“主数据库服务器”和72部Unix小型机组成;主数据库服务器汇总各个路局传输过来的数据后,利用数据库复制的机制,实时将数据“复制“到72部Unix小型机。
3. 并行处理余票计算: 其中8部小型机做售票预处理,再将预处理结果送到64部小型机,64部小型机“同时并行”处理余票计算。
4. 应用缓存服务器: 64部小型机将余票计算后的结果汇总产生余票表,将余票表放置在前端的应用缓存服务器集群;此举是要解决在高并发的情况下,缓存服务器提供更快速的余票查询服务。
5. CDN(Content Delivery Network)服务器:12306最外围部署CDN网络,其目的是使用户可就近取得所需信息,将用户的请求重新导向离用户最近的服务节点解决 Internet网络拥挤的状况,还有调整负载均衡的功能,提高用户访问的响应速度。
6. 余票信息更新机制:余票信息更新是以“车次“为基准,每隔10分钟更新一次。当用户提交“区间站点”的余票查询时,先从CDN服务器查询资料,假如CDN的资料已超过10分钟,会从应用缓存服务器索取最新的数据。同理,当应用缓存服务器的资料超过时效,会触发余票计算流程,重新计算余票产生余票表, 提交给应用缓存服务器。每隔10分钟更新的参数是可调整的。
12306改造原则和目标
(1)设定性能指标:
以余票计算子系统为例,Gemfire集群的余票计算性能指标需要达到10,000 TPS以上, 并可以随着业务成长做弹性扩展。配合应用缓存服务器集群和最前端的CDN负载均衡服务器集群,预估12306可以支持每秒达百万次的余票查询。此部分的系统性能是与服务器CPU类型, 内存大小,Gemfire节点数和x86服务器数量都有关联。
(2)余票计算处理能力可随着虚机的增加而线性增加
余票查询是要反映最新的余票情况,作为购票的依据。 在上篇文章已谈到余票计算的复杂度,需要很强大的CPU处理能力为后盾来计算每个区间站点的余票量;将计算结果放置到缓存数据服务器和CDN服务器。余票计算是利用Gemfire Data Grid和Map Reduce的技术提供巨大CPU处理能力。
(3)在不改变原有的体系框架上增加Gemfire集群, 新旧两套系统并行运算
为确保12306生产环境的稳定性和平稳过渡,新旧两套系统必须同时运行,由最前端的CDN服务器控制访问流量,逐渐将需要余票计算的请求加压到Gemfire集群,测试Gemfire的承载能力,检验可扩展的功能。
(4)系统高可用性(High Availability)
Gemfire的数据节点都有其它节点的备份数据, 也可以将内存数据持久化到硬盘或是同步/异步写到数据库。
(5)x86服务器
考虑未来多数据中心和混合云的部署,必须使用x86服务器为生产机。
根据12306改造设计原则在不改变原有的体系框架上增加Gemfire集群, 在过渡期间,新旧两套系统并行运算,在过渡期后,以Gemfire集群为主。 所以此步的改造是针对上述”改造前的余票计算/查询子系统架构”的第2项和第3项进行分析和改造。
12306改造步骤:
(1)系统架构改造和数据上载
为确保12306生产系统的稳定运行和平稳过渡,在不改变原有的体系框架上增加Gemfire集群, 新旧两套系统并行运算。那就必须考虑如何将数据从数据库实时同步到Gemfire集群做余票计算。
A.数据库复制服务器 :增加一部数据库服务器,将铁总数据中心“主数据库服务器”汇总的数据实时复制到此部数据库服务器。
B.实时同步机制和SQL解析服务器 : 此步骤是从数据库取出Log数据并解析SOL语句,因为原来代码是用Stored Procedure开发的。
C.Rabbit MQ服务器 :同步机制服务器将解析过的SQL语句透过Rabbit MQ传输给Gemfire集群做余票计算。
D.Gemfire集群将余票计算结果汇总后,提交给前端的应用缓存服务器提供余票快速查询。
(2)系统数据结构分析
数据结构分析和设计是在改造过程中最关键的一步,影响到后续性能的提升; 利用“数据网格Share Nothing”的特性, 将数据切割, 把 “数据关联性强”的数据放在同一个Gemfire 数据节点,再配合业务逻辑的设计,降低节点之间数据交换的延迟,提高系统处理能力。
(3)Benchmark (基准点)测试
进行Benchmark测试, 评估每部Gemfire服务器的TPS和余票计算反应时间
-验证Gemfire集群性能可随着x86虚机的增加而线性增加
测试“实时同步”机制, 量测数据同步到Gemfire集群的稳定性,延迟和吞吐量
(4)系统稳定性, 安全性和HA设计
在Gemfire的数据节点都有其它节点的备份数据来达到HA的目的,也可以将内存数据持久化到硬盘或是数据库。
使用Gemfire改造的实施流程:
1. 需求分析阶段:
需求调研,确定改造方案、
分析数据表结构、样本数据、数据量及应用访问特性信息
2. 架构设计:
设计Region结构,确定分区方式,和 设计二级索引
数据切割(partition)放在Gemfire的节点, 每个节点数据量大小是根据物理机内存来决定。例如, 在阿里云的节点一般是30G左右,在铁总数据中心的节点是60G-120G左右。 从项目经验来说,Gemfire数据节点以不超过128G可得到最佳效果。
利用Data Grid和Map Reduce的分布式技术提供强大的CPU处理能力。
使用到的Gemfire功能参考下列描述
3. 编码和单元测试:
12306是采用Stored Procedure开发,必须将Stored Procedure解析, 采用Java开发和编码,并将业务逻辑代码和数据都放在Gemfire节点, 此举可以达到最高的系统性能
单元测试
4. 集成测试/准确度测试/性能调优:
在集群环境下进行准确度测试
在集群环境下进行性能及压力测试
依据测试结果进行性能调优
性能调优可能需要调整细部架构的重新设计
5. HA和热部署测试
6. 线上运维:
创建Release版本并纳入管理
配置部署生产环境并进行持续监控
主要的Gemfire功能特性:
在12306改造过程中,使用到下列Gemfire的功能特性:
Rich Objects: 以objects的形式体现和编码,自己定义数据结构
Elastic Growth w/o pausing : 弹性扩展和热部署
Partitioned Active Data : 根据数据属性,例如:客户,订单,车次,站名,做合理的数据切割,放在不同的数据节点。
Redundancy for instant FT:HA的设置
Colocated Active Data: share nothing的概念,将关联性强的数据放在同一个Gemfire 数据节点, 例如,车次,站名
Replicated Master Data: 数据量不大的常用数据,例如:站名字典和席位类别等,在每个Gemfire节点都有一份拷贝,此举是要减少数据的交换。
Server-side Event Listeners: 当数据在Server端产生变化时,会触发相应的操作
Client-side Durable Subscriptions:当Server端满足客户端订阅的某些条件时,会推送信息
Parallel Map-Reduce Function Execution: 车次余票在每个Gemfire 节点并行运算,再汇总运算结果
Parallel OQL Queries
Continuous Queries
LRU Overflow to disk in native format for fast retrieval
Parallel, Shared Nothing Persistence to disk w/ online backup
Asynchronous Write Behind, Write Through or Read Through
geode Gemfire的开源版本
揭秘12306技术改造(三):传统框架云化迁移到内存数据平台
2012年 改造前的余票计算/查询子系统架构描述
1. 路局“实时”提供售票记录
火车票的席位销售是由每个路局规划和调控(铁路总公司共有18个路局), 而12306与每个路局是共享同一个“票库”。 换句话说,“线上”的12306是与“线下”的火车站点售票窗口,电话售票,和各地的售票点抢票。每个路局将每张票的销售记录都“实时“传送到12306在铁总数据中心“主数据库服务器”做汇总。
2. 数据库复制到余票集群:
在铁总的数据中心 - 余票计算服务器集群是由“主数据库服务器”和72部Unix小型机组成;主数据库服务器汇总各个路局传输过来的数据后,利用数据库复制的机制,实时将数据“复制“到72部Unix小型机。
3. 并行处理余票计算: 其中8部小型机做售票预处理,再将预处理结果送到64部小型机,64部小型机“同时并行”处理余票计算。
4. 应用缓存服务器: 64部小型机将余票计算后的结果汇总产生余票表,将余票表放置在前端的应用缓存服务器集群;此举是要解决在高并发的情况下,缓存服务器提供更快速的余票查询服务。
5. CDN(Content Delivery Network)服务器:12306最外围部署CDN网络,其目的是使用户可就近取得所需信息,将用户的请求重新导向离用户最近的服务节点解决 Internet网络拥挤的状况,还有调整负载均衡的功能,提高用户访问的响应速度。
6. 余票信息更新机制:余票信息更新是以“车次“为基准,每隔10分钟更新一次。当用户提交“区间站点”的余票查询时,先从CDN服务器查询资料,假如CDN的资料已超过10分钟,会从应用缓存服务器索取最新的数据。同理,当应用缓存服务器的资料超过时效,会触发余票计算流程,重新计算余票产生余票表, 提交给应用缓存服务器。每隔10分钟更新的参数是可调整的。
12306改造原则和目标
(1)设定性能指标:
以余票计算子系统为例,Gemfire集群的余票计算性能指标需要达到10,000 TPS以上, 并可以随着业务成长做弹性扩展。配合应用缓存服务器集群和最前端的CDN负载均衡服务器集群,预估12306可以支持每秒达百万次的余票查询。此部分的系统性能是与服务器CPU类型, 内存大小,Gemfire节点数和x86服务器数量都有关联。
(2)余票计算处理能力可随着虚机的增加而线性增加
余票查询是要反映最新的余票情况,作为购票的依据。 在上篇文章已谈到余票计算的复杂度,需要很强大的CPU处理能力为后盾来计算每个区间站点的余票量;将计算结果放置到缓存数据服务器和CDN服务器。余票计算是利用Gemfire Data Grid和Map Reduce的技术提供巨大CPU处理能力。
(3)在不改变原有的体系框架上增加Gemfire集群, 新旧两套系统并行运算
为确保12306生产环境的稳定性和平稳过渡,新旧两套系统必须同时运行,由最前端的CDN服务器控制访问流量,逐渐将需要余票计算的请求加压到Gemfire集群,测试Gemfire的承载能力,检验可扩展的功能。
(4)系统高可用性(High Availability)
Gemfire的数据节点都有其它节点的备份数据, 也可以将内存数据持久化到硬盘或是同步/异步写到数据库。
(5)x86服务器
考虑未来多数据中心和混合云的部署,必须使用x86服务器为生产机。
根据12306改造设计原则在不改变原有的体系框架上增加Gemfire集群, 在过渡期间,新旧两套系统并行运算,在过渡期后,以Gemfire集群为主。 所以此步的改造是针对上述”改造前的余票计算/查询子系统架构”的第2项和第3项进行分析和改造。
12306改造步骤:
(1)系统架构改造和数据上载
为确保12306生产系统的稳定运行和平稳过渡,在不改变原有的体系框架上增加Gemfire集群, 新旧两套系统并行运算。那就必须考虑如何将数据从数据库实时同步到Gemfire集群做余票计算。
A.数据库复制服务器 :增加一部数据库服务器,将铁总数据中心“主数据库服务器”汇总的数据实时复制到此部数据库服务器。
B.实时同步机制和SQL解析服务器 : 此步骤是从数据库取出Log数据并解析SOL语句,因为原来代码是用Stored Procedure开发的。
C.Rabbit MQ服务器 :同步机制服务器将解析过的SQL语句透过Rabbit MQ传输给Gemfire集群做余票计算。
D.Gemfire集群将余票计算结果汇总后,提交给前端的应用缓存服务器提供余票快速查询。
(2)系统数据结构分析
数据结构分析和设计是在改造过程中最关键的一步,影响到后续性能的提升; 利用“数据网格Share Nothing”的特性, 将数据切割, 把 “数据关联性强”的数据放在同一个Gemfire 数据节点,再配合业务逻辑的设计,降低节点之间数据交换的延迟,提高系统处理能力。
(3)Benchmark (基准点)测试
进行Benchmark测试, 评估每部Gemfire服务器的TPS和余票计算反应时间
-验证Gemfire集群性能可随着x86虚机的增加而线性增加
测试“实时同步”机制, 量测数据同步到Gemfire集群的稳定性,延迟和吞吐量
(4)系统稳定性, 安全性和HA设计
在Gemfire的数据节点都有其它节点的备份数据来达到HA的目的,也可以将内存数据持久化到硬盘或是数据库。
使用Gemfire改造的实施流程:
1. 需求分析阶段:
需求调研,确定改造方案、
分析数据表结构、样本数据、数据量及应用访问特性信息
2. 架构设计:
设计Region结构,确定分区方式,和 设计二级索引
数据切割(partition)放在Gemfire的节点, 每个节点数据量大小是根据物理机内存来决定。例如, 在阿里云的节点一般是30G左右,在铁总数据中心的节点是60G-120G左右。 从项目经验来说,Gemfire数据节点以不超过128G可得到最佳效果。
利用Data Grid和Map Reduce的分布式技术提供强大的CPU处理能力。
使用到的Gemfire功能参考下列描述
3. 编码和单元测试:
12306是采用Stored Procedure开发,必须将Stored Procedure解析, 采用Java开发和编码,并将业务逻辑代码和数据都放在Gemfire节点, 此举可以达到最高的系统性能
单元测试
4. 集成测试/准确度测试/性能调优:
在集群环境下进行准确度测试
在集群环境下进行性能及压力测试
依据测试结果进行性能调优
性能调优可能需要调整细部架构的重新设计
5. HA和热部署测试
6. 线上运维:
创建Release版本并纳入管理
配置部署生产环境并进行持续监控
主要的Gemfire功能特性:
在12306改造过程中,使用到下列Gemfire的功能特性:
Rich Objects: 以objects的形式体现和编码,自己定义数据结构
Elastic Growth w/o pausing : 弹性扩展和热部署
Partitioned Active Data : 根据数据属性,例如:客户,订单,车次,站名,做合理的数据切割,放在不同的数据节点。
Redundancy for instant FT:HA的设置
Colocated Active Data: share nothing的概念,将关联性强的数据放在同一个Gemfire 数据节点, 例如,车次,站名
Replicated Master Data: 数据量不大的常用数据,例如:站名字典和席位类别等,在每个Gemfire节点都有一份拷贝,此举是要减少数据的交换。
Server-side Event Listeners: 当数据在Server端产生变化时,会触发相应的操作
Client-side Durable Subscriptions:当Server端满足客户端订阅的某些条件时,会推送信息
Parallel Map-Reduce Function Execution: 车次余票在每个Gemfire 节点并行运算,再汇总运算结果
Parallel OQL Queries
Continuous Queries
LRU Overflow to disk in native format for fast retrieval
Parallel, Shared Nothing Persistence to disk w/ online backup
Asynchronous Write Behind, Write Through or Read Through
geode Gemfire的开源版本
发表评论
-
linux 安装mysql多个实例
2020-03-13 15:47 426mysql5.7.28多实例 安装mysql,不要启动 创 ... -
mongodb安全验证 密码登录
2020-03-09 16:07 8371、创建用户 cd /d C:\Program Files\ ... -
charles4.2下载与破解方法以及配置https
2020-02-26 09:03 2有两个抓包工具 一个是fidder,一个是charles,两个 ... -
序列号批量生成算法
2019-12-05 14:11 0业务处理过程当中,经常需要生成订单号、序列号等,简单的可 ... -
使用ANTLR处理文本
2019-08-28 17:32 773引用 使用 Antlr 处理文本 https://www.ib ... -
索引的创建对查询性能影响
2019-08-19 15:14 685索引的正确使用,对查询的性能影响很大 原查询,要2分多 ... -
mysql查询性能优化,650秒优化到0.18秒
2019-08-14 17:57 29开发人员技术水平不一,写出的sql执行性能怎么样,完全靠运气, ... -
解决maven-metadata.xml文件下载卡死问题
2019-04-11 14:02 4007http://192.168.1.110:8081/nexus ... -
MySQL 高可用集群架构 MHA 详解
2018-03-09 09:28 801MySQL 高可用集群架构 MHA ... -
B+tree 索引
2018-03-09 09:11 750mysql和oracle都用到B+tree ... -
怎么查看和修改 MySQL 的最大连接数
2018-03-09 08:47 1122通常,mysql的最大连接数默认是100, 最大可以达到163 ... -
mysql 删除重复记录 保留一条
2018-01-25 10:47 1172-- 方法一 /** 错误码: 1093 You ... -
rsync备份和删除指定文件
2018-01-02 10:23 2060文件异地备份时,需要将本地文件合并到服务器上,且不能删除服务器 ... -
windows mysql定时备份任务
2017-11-03 16:12 1007mysqlbak.cmd echo off set tx ... -
mysql 1418错误原因及解决
2017-09-30 11:14 1141SET GLOBAL log_bin_trust_functi ... -
javaLocale格式化日期和数字
2017-08-25 09:26 877public static void main(Strin ... -
windows上oracle11配置监听器
2017-08-23 14:00 1777oracle11 windows版安装后默认通过计算机名 ... -
centos6 tomcat 启动脚本 tomcat服务
2017-08-23 11:24 1445系统自动启动tomcat 复制该脚本到/etc/init.d/ ... -
win7 命令行改IP和DNS
2016-12-21 18:35 742使用管理员权限运行CMD //改DNS netsh ... -
jenkins中集成sonar,使用findbug、pmd、checkstyle提升代码质量
2016-09-29 14:58 6186实际上jenkins单独也 ...
相关推荐
通过以上技术的整合与优化,12306模拟订票系统-升级版在确保用户购票体验的同时,也提升了系统的稳定性和效率。在实际应用中,这样的系统可以为大量用户节省宝贵的时间,减少购票过程中的烦恼,使得购票过程更加顺畅...
12306订票助手合集是一组用于辅助用户在12306中国铁路客户服务中心网站上更高效地进行火车票预订的程序。...不过,由于12306网站的政策调整和技术升级,这类工具的效果可能会有所变化,使用者应时刻关注其有效性。
总结来说,12306订票助手.NET是应对12306购票挑战的有效工具,它利用.NET技术提供了自动化、高效、安全的购票服务。无论是对于经常出差的商务人士,还是对网络操作不熟悉的老年群体,都是一款值得信赖的帮手,让出行...
随着互联网技术的发展与应用普及,铁路12306系统也面临着从IPv4向IPv6过渡的挑战。IPv4地址空间的枯竭和网络智能化的发展趋势,要求铁路12306系统必须采取相应的技术演进方案,以适应未来的网络环境。 IPv6是下一代...
4. **动态更新**:12306验证码系统会定期更新其生成策略,防止被特定的破解技术所攻破。 5. **多因素验证**:除了图形验证码外,有时12306还会结合手机短信验证码或人脸识别等其他验证方式,提升安全性。 验证码...
目前,12306系统通过技术升级和策略调整,如分线路分时段放票,减轻了服务器的压力。此外,引入的云抢票服务也进一步分散了高峰期的访问压力,提高了用户的购票体验。 综上所述,12306系统的数据库设计需要综合考虑...
6. **技术更新**:随着12306网站的技术升级和优化,抢票助手也需要不断更新和升级,以适应新的网页结构和接口变化,确保其功能持续有效。 7. **替代方案**:除了第三方抢票软件,12306官方也会在特定时期推出预约...
12306是中国铁路客户服务中心的官方网站,其主要功能是提供火车票查询、预订、改签、退票等服务。在互联网技术日新月异的...同时,随着12306官网的不断升级和反爬虫策略的加强,这类工具可能需要定期更新以保持兼容性。
12306自动登录是针对中国铁路客户服务中心12306网站设计的一款软件,主要目的是为了简化用户购票过程中的登录环节,...同时,由于网络环境和12306网站的更新,自动登录软件可能需要定期维护和升级以保持其功能正常。
软件的更新通常包括性能优化、错误修复、新功能添加等,以适应12306官网的动态变化和技术升级。 然而,使用此类抢票软件也存在一些安全风险。一方面,用户必须授权软件访问个人账号,这可能导致隐私泄露。若软件...
【XP订票助手v1.2.7】是该全自动订票软件的一个具体版本,说明它适用于Windows XP操作系统,并且已经进行了多次升级优化,达到v1.2.7的版本号。这个版本可能修复了之前版本的一些bug,增加了新功能,或者提升了软件...
另一方面,随着12306系统的技术升级,它自身也具备了更多的智能化功能,如自动刷新、候补购票等,这些功能在一定程度上降低了抢票软件的需求。但鉴于高峰期的购票竞争仍然激烈,抢票助手依然有其市场需求。 总的来...
但这也意味着软件可能会面临更新和适配的问题,因为12306官网为了维护公平购票环境,可能会不断升级其防抢票策略。 总的来说,12306极速抢票软件通过智能化的抢票技术和自动化操作,为用户带来了便利。然而,用户在...
开发者通常会提供技术支持和软件更新,以应对12306官网可能的规则变动和技术升级,保持抢票助手的可用性和有效性。 10. **法律风险提示** 使用12306订票助手虽能提高购票效率,但也需注意可能触犯的法规。铁路...
5. 技术实现:背后的技术支撑包括但不限于网页爬虫技术,用于实时获取和分析12306网站的票务信息;自动化测试框架,确保软件功能的稳定性和准确性;还有可能采用了多线程技术,提高抢票并发能力。 6. 社区支持:一...
3. **更新维护**:由于12306系统时常进行升级调整,订票助手也需要定期更新以保持兼容性,确保功能正常运行。 4. **安全防护**:尽管软件宣称无毒无插件,仍需定期检查电脑安全,避免其他潜在风险。 总的来说,...
分享视频教程——技术更新,战术升级!Python爬虫案例实战从零开始一站通;20章,共计129节,完整版,附源码;第一章:零基础入门Python网络爬虫 第二章、Urllib模块基础与糗事百科爬虫项目实战 第三章、淘宝商品...