图片-稻子网
图片-稻子网
图片-稻子网
图片-稻子网

高并发服务器选择-如何从12306开始搭建高并发高性能网站

【IT168专文】2012年春节旅游潮打造的中铁客服中心12306网上售票系统一夜爆红。从传统售票方式到电子商务,2012年1月1日开通的12306网上售票系统成为铁路部改革的重要一步。

然而,随着12306系统的推出,关于12306系统的各种投诉接二连三地出现。很多人抱怨网上订票系统很“龟速”。一张票,而且订票过程很繁琐。从用户注册到支付成功,需要13道“流程”,让人眼花缭乱等等。

原本为了让大家回国买火车票更方便,12306网上订票系统这个号称投入数千万美元的电商平台并没有说服力,引发了一些讨论和讨论。思考如何搭建一个类似于12306在线票务系统的大型高并发高性能网站?IT168记者采访了腾讯架构平台部刘天思。他对大型高并发高性能网站的建设和优化提出了自己的建议。建议。

12306订票网站有哪些特点和挑战?

12306订票网站具有分时、分区域、高并发的特点。如何保证高峰时段服务的正常提供是一个非常大的挑战。纵观春运期间网上购票系统,表现为大页面访问延迟、登录异常、支付失败等问题。这其中有一定的客观因素,不排除流量估算不准确,架构设计不合理。根据官方公告,日均PV达到10亿,高峰时段PV访问量达千万级。为了应对如此高的流量,带宽、服务器、网络、应用程序和业务逻辑都需要进行优化。

国内大型网站还有淘宝、京东、新浪等,12306的访问方式与淘宝、京东的访问方式有哪些异同?

图片[1]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

相似之处可以理解为电子商务网站。业务逻辑和应用程序特性都非常相似。唯一不同的是,12306的流量因时间段和地域的不同而更加集中。有人说淘宝和京东搞促销,比如“秒杀”。但是,“秒杀”的目标往往是比较固定的。后端可以通过缓存机制或静态化来缓解数据库I/O的压力,12306需要每10分钟更新一次工单信息,同时保持与集团其他业务系统的连接。点处理起来比较棘手。

淘宝、天猫和京东也出现了宕机事件。这些宕机事件与12306网站崩溃有什么异同?

此类宕机事件的原因大同小异,无非是带宽紧张或服务器性能瓶颈(应用故障、高I/O或业务逻辑异常等)。差异只体现在业务层面。促销活动可以延期或重组,但12306预订系统不起作用。相反,12306还有其他辅助补救和缓解方案,比如电话预约、代销等,而传统电商平台没有。

12306订票网站可能存在哪些问题?以上问题有没有相应的优化建议?

我个人认为更有价值的体现在数据分析上,比如获取宽带数据、用户流量、区域分布、请求特征、应用瓶颈、服务器性能指标等,这些数据对于优化和改进现有架构非常有帮助。抛开宽带因素,以下是对12306平台系统架构的一些建议:

一、前端优化

图片[2]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

具体参考:yahoo前端优化34条规则,对于12306平台,个人建议继续使用CDN加速,无需多运营商链路接入(如BGP)。动态和静态应用分离,静态服务使用非域名可以减少无用流量。任何一个小细节在高并发下都会被无限放大(截至目前,已经发现平台仍然使用域名作为静态引用)。查询页面的结果是通过Ajax异步返回填充框来实现的,这对于动态CDN加速来说是一个挑战,因为CDN节点并没有真正缓存页面中的主要加速内容。此外,

二、使用缓存

缓存的最大好处是降低后端数据存储的I/O压力。从普通用户的预订轨迹来看,查询读取往往是入站写入的数倍。如何减少数据库的读I/O提高整体平台的性能很重要。比较流行的缓存技术是针对页面和数据级、页面级缓存、squid等,比如使用CDN,页面级缓存可以忽略,重点关注数据级缓存规划,技术可以使用Nosql来实现。比较成熟的有Nosql、redis等。可以根据班次、出发地和目的地ID组合,或者出发日期进行hash分区,可以提高缓存命中率,减少后端数据库的压力。

三、代理层

引入代理层的目的是为了拆分业务。目前平台大部分功能共用一套WEB服务器(从域名和URI结构猜测,不一定准确)对外提供登录、注册、票务查询、剩余票务查询等服务,火车时刻表查询、延时查询、订单管理等,只要其中一个功能模块被屏蔽,影响一定是全局的。一个好的方法是优化和规范每个业务URI,在代理层实现业务划分。可用的技术有Nginx等,比如///映射到注册群WEB服务器,///映射到查询群WEB服务器,//Pay/映射到支付群WEB服务器等,这样当查询服务延迟和阻塞时,

四、数据库层

图片[3]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

我之前接触过一些政府行业。数据库服务器通常使用高端硬件,如小型机。在互联网行业,尤其​​是类似于12306的订票系统,这往往是最致命的。原因很简单。流量并发下处理能力强的服务器吐不出数据。由于网络I/O、磁盘I/O、业务逻辑等的限制,数据必须被打散。解决方案包括读写分离、分区和分片。主从模式可以很好的实现读写分离。大多数数据库都支持这一点。另外,推荐使用分区方式。分区策略可以根据业务特点进行。按区域划分是个好主意,因为每个区域都是一个大分区,从业务层面上也可以是二级甚至三级的“扩展分区”。需要平衡详细的拆分和运营成本。另外,I/O密集的点应该尽量换成SSD。

五、负载均衡层

为了保证业务平台的高可用高并发服务器选择,必须采用负载均衡策略,即使是提供给CDN的源服务器。目前有商用的F5、等,也有开源的LVS,根据投资成本来选择,这里就不详细讨论了。

六、业务层

在12306网站瘫痪的情况下,业务层面还有优化空间吗?12306网站平台是铁路集团在互联网上的对外服务窗口。跟电话订票和寄售点是同级的,而且后台还必须关联很多复杂的业务系统,在不扩展整个集团业务系统的前提下(估计短期内是不可能的) term),可以剥离网站业务平台。当然,完全剥离是不切实际的,至少可以延长同步和一致性学校的测试时间。时间长短与班次的出发时间成正比,因为大多数用户提前一周多开始订票。

并发PV从几百万到几千万的网站在架构和部署上有什么区别?

图片[4]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

百万PV到千万是一个层次的提升,再好的架构设计,也很难一步到位。这也是一个随着业务的快速增长而积累经验、优化、改进的过程。12306的流量达到千万级PV级别,但平台的支撑能力远未达到预期。

一个大规模高并发高性能的网站架构需要从哪些方面来考虑?服务器/存储部署需要注意哪些问题?哪些技术可以保证整个系统的高并发和高性能?

设计大型高并发网站架构,首先要以了解业务特点为出发点。架构的目的是支持业务。需要考虑互联、负载均衡、网络、开发、缓存、存储、数据库等多个层次。这些级别似乎是一个整体,任何一个链接的任何问题都可能导致整个网站崩溃。因此,一个高可用、高并发的平台,需要监控、开发、运维等角色的协同。

部署大规模高并发高性能网站架构时需要注意哪些问题?有哪些挑战?如何平衡高峰和低谷时期的资源和投资?

部署大规模、高并发、高性能的网站架构,需要关注整体的可扩展性和健壮性,解决海量数据的存储和处理、密集的数据I/O、互联、应用的不断迭代、重构、以及未来的缓存机制。,它对测试一个成功的架构提出了更高的要求,也是未来面临的最大挑战。为了平衡高峰和低谷时期的资源投入高并发服务器选择,我认为云计算的可扩展性更适合解决这个问题。

有人建议使用云计算平台(类似)来搭建这样的网站,以提高资源利用率,节约成本。你怎么认为?

图片[5]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

云计算是未来的趋势。优点不多说。它具有动态扩展性和灵活性的特点,可以最大限度地利用资源,节约成本。非常适合12306平台。

虚拟化(不限于服务器虚拟化,还包括网络虚拟化等)在此类大型高并发网站建设中能起到什么作用?

虚拟化是云计算的基石,可以降低企业运营成本,提高资源利用率。我个人建议一些对计算和I/O要求不高的业务迁移到虚拟化,比如web、缓存、代理、中间件服务等应用。可以在低流量时段销毁节点,让物理物理机低功耗运行,绿色环保,高峰期可以快速部署提供服务。

传:

图片[6]-高并发服务器选择-如何从12306开始搭建高并发高性能网站-稻子网

▲刘天思,目前在腾讯-架构平台部工作,曾在天涯社区担任架构师/系统管理员,热衷于开源技术研究,包括系统架构、运维开发、负载均衡、缓存技术, 数据库, 在分布式存储和云计算领域,擅长大规模集群的运维。关注互联网技术的发展趋势。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片