当前位置:首页 > 网站建设

技术揭秘一:12306是如何实现高流量高并发的关键技术?

时间:2018-03-24 23:00:00来源:网站建设作者:SEO探针小编阅读:127次「手机版」
 

12306数据库

12306网站 12306网站技术

12306网站曾被认为是“全球最忙碌的网站”,在应对高并发访问处理方面,曾备受网民诟病。因此记者在第一时间联系到一位对12306改造非常关注的技术架构师,他从技术的角度,用科学论证的方式,指出原因所在,并根据他的经验进一步说明12306是如何实现高流量高并发的关键技术,与大家共享。以下为正文:

前言:

12306互联网售票系统在2011年下半年开始上线使用,但在2012年春运期间引发无数的争议。在2012年春运后,12306项目承接单位与多家IT公司联系,经过多次论证和POC 测试, 最终引入分布式内存运算数据管理云平台 - Pivotal Gemfire做试点,用以提高12306系统性能,解决“高流量和高并发“的难题。

高流量高并发是指某特定时间段的海量请求,根据过去的经验法则,高并发是指访问流量是平常流量的 3-5倍;但由于互联网和移动设备APPs的普遍化,电商网站的促销模式“11.11“,或是厂商的“饥饿营销“,都会衍生“秒杀“现象。所以过去的经验法则用到12306春运售票系统,往往是远远低于实际的的流量。例如,12306平常一天的PV(page views)值大约是在 2500万到 3000万左右, 在2015年春运高峰日的PV值是297亿,流量增加1000倍,这样海量的请求,假如不能在短时间内动态调整网络带宽或增加服务器数量,就会造成网络阻塞或是服务器性能无法满足要求,甚至使整个系统不稳定。

12306成长之路

短短的3年,从2012年春运到2015年春运,12306网站从10亿的PV(page views)值增加到297亿PV值,PV值成长 30倍;网络带宽从 1.5G调整到12G,带宽成长8倍;而12306的售票量从110万增加到564万 ,成长5倍。出票处理能力从 每秒200张提升到 每秒1032张,也是5倍的成长。

PV值的增加是与放票的次数和可出售的票量有关系,例如,2015年PV值是2014年的2.3倍, 原因是放票次数多了5次“秒杀”,另外增加12% 的售票量。由此可见,互联网流量PV值的增加速度远远高于售票量增加的速度。

12306网站 12306网站技术

高流量除了代表网络容易造成阻塞以外,系统服务器也会面临更高的cpu负载,在此情况下又该如何应对呢?是选择基于原来系统框架上购买更昂贵的硬件做“scale up“升级呢 ?还是选择购买低成本的x86服务器,进行”可扩展云平台架构“ scale out的改造设计呢?12306互联网购票系统的改造给我们一个很好的案例参考,也让政府单位和企业进一步了解了具体是如何实现的。

12306改造的关键技术– 建立可伸缩扩展的云应用平台

2015年12306网站顺利过关,没有“瘫痪”,是值得庆祝的。根据互联网上的新闻,中国铁道科学研究院电子计算技术研究所副所长,12306网站技术负责人朱建生说,为了应对2015年春运售票高峰,该网站采取5项措施:一是利用外部云计算资源分担系统查询业务,可根据高峰期业务量的增长按需及时扩充。二是通过双中心运行的架构,系统内部处理容量扩充一倍,可靠性得到有效保证。三是对系统的互联网接入带宽进行扩容,并可根据流量情况快速调整,保证高峰时段旅客顺畅访问网站。四是防范恶意抢票,通过技术手段屏蔽抢票软件产生的恶意流量,保证网站健康运行,维护互联网售票秩序。五是制定了多套应急预案,以应对突发情况。

“利用云计算资源“,“按需及时扩充“和”快速调整“,这几个字眼是12306改造的精神,其核心就是要建立一个从下到上全面“可伸缩扩展的云平台”。底层的硬件架构要支持可伸缩扩展,上层的应用系统架构也需要支持可伸缩扩展。

1. 在过去数年,云计算的基础架构虚拟化已经非常成熟,也日益普遍部署;当网络阻塞时,可以动态增加带宽,当服务器 CPU到达高位时,可以快速从资源池获取虚拟机资源来分摊负荷。 “软件定义的数据中心“ 可以轻易完成这些伸缩性扩展的配置。

2. 当客户将底层的架构都虚拟化后,网络设备,Web服务器,应用服务器都可以做“伸缩性”的扩展;但遇到一个难点就是“12306的应用系统框架”无法支持可伸缩扩展。原因是关系型数据库Sybase无法支持“应用系统”的伸缩扩展。

3. 客户在过去数年已经投入大笔经费在IT方面的建设,但“系统框架设计”还是沿用10几年前的三层设计,而且每年都在原来的基础上做不断的升级。当业务不断成长时,数据量也跟着成长,功能越来越多, 但系统性能越来越差。客户该如何选择呢 ?是 scale up? 还是 scale out ?

为什么选择Pivotal Gemfire构建12306的云应用平台?

要解决12306春运时高流量高并发的问题,如果单靠硬件升级解决的话,可能需要扩充数十倍的硬件服务器。但在春运以后,又该如何解决服务器过剩的问题呢?

要真正解决“高流量,高并发“的难题是需要从软件和应用系统层面出发,唯有实现“可扩展的应用云平台架构”,灵活和快速热部署的机制,才是真正解决高并发访问的根本。

在经过多次论证和POC测试后, 12306 最后选择Pivotal Gemfire作为系统改造的平台,其主要原因如下:

1. 关联数据节点设计:可以根据客户的业务逻辑特性和数据关联性,将关联性强的数据放置于同一个服务器节点,提高系统性能,避免分布式系统服务器的频繁数据交换。

2. 将数据移到内存:由于数据是放在内存里面,屏蔽传统数据库频繁访问, CPU与数据库的交互作用,影响服务器性能。内存的数据交换速度远高于磁盘速度上千倍, 极大提高系统性能。

3. 扩展和伸缩性:以Gemfire构建的应用云平台,是以 x86 PC服务器为主的硬件基础。在保证系统的性能下,此平台可以随着客户业务的成长来任意调配x86服务器的数量,避免以后昂贵的硬件升级带来的困扰。经POC测试结果显示,整个系统性能可随着服务器的数量的增加实现几乎线性的成长。

4. 数据可靠性:在同个集群里面可以有多个数据节点备份,数据可以自动同步,或是将内存数据持久化到硬盘或是数据库

5. 跨地域的数据分布或同步 :可以透过“广域网”将指定的 Gemfire集群的内存数据“实时同步”到异地的数据中心。这是属于“应用层”的数据同步异于传统的“数据库”同步。

6. Pivotal Gemfire使用 x86 PC服务器,其性价比远远高于 Unix 小型机。

在后续章节,以12306为案例做进一步分析,使用Pivotal Gemfire会给12306带来什么好处。

相关阅读

深度 | 从Go高性能日志库zap看如何实现高性能Go组件

深度 | 从Go高性能日志库zap看如何实现高性能Go组件 原创: 李子昂 高可用架构  导语:zap是uber开源的Go高性能日志库。本文作者

如何理解并发(Concurrency)和并行(Parallelism)的区别

网上有很多对并发和并行的解释,讲的很多,对一些人说理解起来还是有些吃力,我这里尽量用最简单的例子说一下自己对这两个概念的解释。

Redis如何实现消息队列

消息队列的实现方式有很多种,比如有专业的rabbitmq,rocketmq,kafka等,这些mq提供了非常专业的功能实现异步发送,而且这些接入又比较

360云盘如何实现全盘共享?

在自己电脑上你需要有个360帐号,把文件放入云盘后,在另外一台电脑再登录你的360帐号,然后打开云盘,就会同步文件了,同步完后就可以查看

网站运营分析:蘑菇街如何实现高转化率

目前国内最流行的网上用户购物社区,大家第一想到的就是蘑菇街与美丽说。对于两家网站如何实现高转化?为什么有那么多人买?少数人认

分享到:

栏目导航

推荐阅读

热门阅读