服务器 频道

问诊12306 大型高并发网站首选LAMP架构

  【IT168 专稿】2012年春节,为方便广大回家旅客买票,铁道部首次开通了12306网上订票系统。然而短短几天内, 12306网站访问用户已占全球互联网用户的0.902%,每天点击量高达10亿人次,系统一度显得有些“支撑不住”。为此,铁道部已启动了新一代客票系统的规划和设计。考虑采用云计算架构,对现有的客票系统进行全面的优化和改造。

12306订票网站四大需求特征

  “整体系统来看,12306订票系统本身在设计上具备相当大的挑战性,出现一些问题其实是在意料之中的。”一位曾参与竞标的厂商技术人员告诉IT168编辑:“以新浪、淘宝、京东为例,这些大型网站都经历了从小到大、然后发展至超大规模的渐进式发展道路,在一代一代设计架构构建与升级过程中,技术积累本身比较成熟,业务上线也有较充足的测试、调试时间。”

  “在技术原因之外,12306最大的问题其实就是上线时间紧。”这位技术人员表示,在他记忆中,12306网站虽然早已存在,但是只能担负一些查询的应用,铁道部首次公开招标,将网上订票系统提上日程是在今年4月份,到年底,系统就匆匆上马开始应用,对于12396这样一个超大规模的电子交易平台来说,整体项目的工期不可谓不紧张。

  不过戴尔下一代计算解决方案和网络事业部高级经理徐海则告诉IT168编辑,就戴尔目前了解到的情况,目前铁道部正在业内广泛征询意见,集中了戴尔等一些厂商专家、还邀请一些互联网企业的首席架构师一起,就12306目前的问题给予咨询和问诊,希望从业界广泛听取意见,对12306订票系统进行全面的优化和升级。

  12306订票网站四大需求特征

  根据IT168编辑了解到的情况,目前12306订票系统包括200多台刀片系统,用于支撑前端访问应用,另有少量小型机用于后台数据库服务,此外,还部署了赛门铁克公司的负载均衡软件,订票系统软件则是铁道部科研院开发的。目前的主要问题是,系统高峰期响应时间过长,实际交易量无法满足预期设计目标。例如以前设计规划的每天100万交易量,实际上只能完成40-50万笔交易量。而这些问题体现给终端订票网友的直观感受,就是登陆慢、订票难。

12306订票网站四大需求特征
▲戴尔下一代计算解决方案和网络事业部高级经理徐海

  谈到12306网站的需求特点,戴尔徐海总结了有四点:第一点是高并发,从12306的订票需求来看,春运几天,承担了全国各地的订票需求,网站承担的并发访问与计算压力可以想见。其次是高可用,和大多数企业应用系统一样,订票网站也需要保障其高可用、业务不中断。

  第三是动态弹性,传统的大型网站,访问量较为平稳,尽管也存在高峰和低谷的差异,但大体来说,访问压力差异并不十分巨大,而12306的访问则存在严重的不均匀特性,平时访问量可能较小,但高峰时段,例如春运阶段、以及每天放票时段,访问量可能激增至平时的数百倍以上。所以如何让系统能根据访问量的水平自动调整运行时的服务器数量就显得很有意义,既可以保证效率,也能做到数据中心的绿色,避免资源浪费。

  第四是管理性,对于一个上百台服务器支撑的业务系统来说,监控系统的运行状态,提前预警,及时进行调整,可以提高业务系统的服务质量。

  数据库是12306系统优化重点

  有人说:“有人说,春运,是世界范围内规模最大的一年一度的人口迁徙运动”,小小的一张火车票,使得12306订票网站在节前成为各方关注的焦点。“当前访问用户过多,请稍后重试!”这是大量用户会碰上的无法登录;还有不少用户登录之后,却无法打开二级、三级页面,只有在不停地刷新;一些幸运的用户登录后成功付款,但却功亏一篑,却无法买票了。

数据库是12306系统优化重点

  根据徐海的分析,12306订票网站因为没有太多的图片、视频等呈现,更多的是后端的订票计算,因此在技术上数据库会面临很大压力,容易形成瓶颈。因为订票操作本身涉及到系统的实时交易,对数据库读写操作压力会比较大。徐海认为,从12306反映的问题,例如登录受限、访问速度慢、订票无响应等问题,可能都涉及到数据库部署优化问题,因此,数据库优化应该是下一步改进12306的性能需要重点考虑的一个方面。具体可以从多库数据库部署、多层数据库访问、读写分离等多个方面来进行优化。

  首先,从数据库的选择部署来说,徐海推荐采用成熟的LAMP开源架构(Linux+Apache+Mysql+PHP),考虑到数据库性能提升的需要,可以考虑采用多库的形式,做负载分担。也可以根据数据的安全级别、类型不同,将MySQL与Oracle等不同的数据库结合起来一起使用。

  “一般如果要构架一个系统,通常来说是一个数据库支撑后端。对于超大型的网站来说,可以考虑把数据库切割成几个部分。有多种切割方式可供使用,例如按地域划分是一种方式,北京用户来访问的时候可以访问一个数据库,上海用户访问的时候则访问另一个库。另外也可以考虑按车票类型来划分,订票的时候T字头的可以在一个库,Z字头的可以在另一个库,这样通过多个数据库来保证整体系统的应用性能更好。”徐海认为。

  和前面的多库数据库部署相关联,铁道部还可以借鉴一些网站的多层次数据中心设计。目前整个订票系统都是集中在铁道部的数据中心中,全国所有的订票压力都用这一个数据中心来应付,是一个典型的集中式系统。当集中式数据中心在无法应付的时候,就可以向分布式系统过渡。打个比方可以分成2层, 第一层可用来接收用户请求,判断用户请求的来源,将工作流分配到不同的数据中心,同时在全国各地构建数据中心,多个数据中心之间做定期的数据同步和容灾,构成一种分层次的数据中心。

  另外,就12306的访问特性来说,很可能的一种情况是存在大量的读操作,写操作在其中只占较小的部分,针对这类型访问特性,可以考虑的是读写分离技术。“在大部分应用状况下,通常数据库的读、写都是一起的,就是说,一台服务器或者一个服务器组同时承担数据库读写操作,但对于订票的用户来说,很可能开始的时候需要多番查询车次而未必订票,对于一个用户来说,很可能多次的查询才会涉及到一次订票的行为,整体系统中粗略估计读操作占80%以上,写操作不到20%,对于这种情况,为了系统扩展性更好,也可以考虑读写分离。用单独的服务器组支撑读操作,写的时候,交易的时候,把写请求传到另外的服务器组中,这种架构现在已经在很多网站中应用,例如国内的一些知名大型网站。”

  此外徐海还谈到,订票系统超过80%都是查询和检索,今天已经有一些非常适合检索应用的云计算技术,例如基于Map/Reduce的Hadoop。类似google这样的大型搜索引擎就使用了Hadoop的技术。12306订票系统中也应该使用Hadoop来进行优化。

  LAMP是超大型网站构架首选

  对于大型网站的架构设计在尽力多种尝试后,大家都走向了LAMP。LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富、轻量、快速开发等特点,微软的.NET架构相比,LAMP具有通用、跨平台、高性能、低价格的优势,因此LAMP无论是性能、质量还是价格都是企业搭建网站的首选平台。

LAMP是超大型网站构架首选
▲LAMP网站架构图

  徐海以一些知名大型网站为例,介绍了网站架构升级变迁的发展路线图:最初,当访问量比较小的时候,这些网站普遍使用的架构是X86服务器+MySQL数据库。这种架构的特点是成本低,并且足够满足小规模的访问量。大多数小规模互联网公司的现在就在使用这样的架构。

  随着业务发展到了第二个阶段,用户量增加到了中等规模,处于对服务水平的要求。业务系统希望能更稳定,且有更好的性能。不少系统的内部架构中,X86系统被小型机替代,Mysql数据库被Oracle替代。不少大型国企尤其青睐这种架构,因为他们认为小型机和Oracle数据库往往代表着更好的稳定性。

  到了第三个阶段,随着访问量进一步增加,访问量达到了超大规模。例如新浪、淘宝这样的大型网站,小型机+Oracle组合也不再适合了,因此到了第三个阶段,服务器又由小型机回归到X86平台上。数据库也从Oracle回到了MySQL。处于这种考虑是因为扩展性和性价比的考虑。“Oracle的优势在于功能性强,稳定性好,成熟,中型的企业用户用这种架构非常合适,瓶颈则在于,对于大型的数据库应用来说,Oracle购买Lience是十分昂贵的,而且Oracle本身也存在着扩展上限,当访问人次超过一定程度后,oracle本身也开始力不从心。”

  徐海总结小型机和X86平台在互联网应用中的差异时谈到:小型机+Oracle的组合适合于中等规模的网站和企业用户,而超大规模互联网站则首选LAMP架构(Linux +Apache+Mysql+PHP)。徐海认为,小型机单机处理能力是非常强劲的,但如果在大量并发访问量的压力下,一般用户受限于成本很难购买大量的小型机,而且小型机这种适合纵向扩展(Scale up)的系统,将必然被X86服务器这种适合横向扩展(Scale out)的系统代替。

  “实际上对于大型网站来说,与网站访问并发数紧密相关的一个关键指标就是内存。”徐海谈到:“通常我们在网站设计阶段,需要考虑一台服务器支持多少并发数,每个并发数需要多少字节,然后大概的计算内存配置,因此当并发量变的非常大的时候,内存的需求量是非常巨大的。应用大量X86服务器进行集群和负载均衡,就能够解决超大型网站高并发访问量的需求。”

  此外,徐海透露,一些知名超大型网站都在使用MySQL,也有些网站仅仅把一些核心的关键应用仍然建立在Oracle架构上。采用多种数据库结合协作,也可降低数据库成本。

  CDN并非12306优化关键

  在针对12306网站的讨论中,CDN也是网友关注的一个关键点,很多网友认为CDN对大型高并发网站的优化起着至关重要的作用。对此,徐海显然有自己的观点:“CDN对于传统的大型网站来说的确有非常大的意义,对于视频点播这样的网站就更关键。但CDN并非12306的优化关键。”

  徐海认为, 12306订票系统和传统网站的需求特点还存在一点区别,一般来说,传统的大型网站除了IOPS压力大,同时还伴随流量大的特点,因为这些网站不同程度都涉及到一些图片、视频等文件应用。12306订票系统尽管并发IOPS压力极大,但数据只是一些车次、时间、金额等交易数据,需要传送到用户浏览器终端的数据量并不大,整体数据流相对传统网站而言也更小。

CDN并非12306优化关键
▲CDN流量优化原理示意图

  “CDN起到的作用实际上是缓存的作用,适用的情况是单一的数据源被重复访问的情况。” 徐海解释:“CDN要起作用,可能包括2个前提条件:第一是确实有大量的重复请求,第二是被访问数据必须字节数较大才有意义,比如淘宝、京东等电子商务网站,一个图片100K,那么100件商品就是10M。而土豆、优酷等视频网站的视频流数据量更大,但订票网站字节数很少,而且访问特征本身又比较离散,因此,CDN对12306订票系统很难说能起到多大的优化意义。”

  12306系统优化还需考虑系统弹性

  在谈到系统弹性的时候,徐海打了一个比方“平时的深夜,几乎没人订票的情况下,可能20台服务器就足够支撑这样的访问量。那么我们是否应该继续让支持高峰时需要的200台服务器全部开着呢?如果是这样,那么就意味着这时有90%的资源浪费。”尽管很多时候,我们的用户并不差钱,不缺电费。但是从环保的角度考虑,也值得考虑减少热排放和碳使用。如何让IT资源动态适应业务访问量的水平是目前数据中心云架构概念中的一个热门话题。动态架构意味着系统具有更好的适应能力,可以自动实现业务系统的弹性。既减少了资源使用,又满足了服务水平,为什么不考虑呢?

  徐海认为现有的技术,已经可以帮助用户实现一个高效、高可用、弹性、绿色和可管理的新一代智能数据中心和业务系统。12306订票网站访问需求存在较大的波动,存在十分明显的峰值和低谷期,因此在设计之初,也需要考虑如何利用动态基础架构技术。徐海谈到,戴尔有一整套解决方案,其中包含硬件平台和软件产品,来帮助优化12306的订票系统。

3
相关文章