您的位置 >>> 星想互联 >>> 网站建设 >>> 建站知识
铁道部12306订票网和淘宝网分别采用怎样技术架构来承载网站高负载的呢
点击数:2619  发布时间2015-02-28 17:28:45

火车票购票系统12306,每到节假日就瘫痪了,这人很晚上多购票的网页非常无语。就在国庆前后,武汉网站建设公司“问诊12306”做出了报导。结果,铁道系统的答复是,由于购票网友太多了,数据量过大网站服务器承受不起。可是,前不久淘宝天猫双11大促活动中,淘宝双十一总交易金额总共是一百九十一亿,总共商品的订单是1亿零580万笔,其中手机支付近900万笔,支付宝核心服务器数据库集群处理了41亿个事务,执行二百五十八亿次SQL,生成15TB日志,访问1931亿次内存数据块,13亿个物理读,核心MySQL集群一天支持了20亿个事务。12306火车票系统和其相比,真是天上地下。12306为何如此不堪? 武汉网站建设公司“问诊12306网站”做了系列报道

1. 淘宝技术被人称赞在刚刚过去的淘宝双11大促活动中,淘宝的技术支撑受到了网民的追捧。据来自支付宝DBA@dbatools的透露:淘宝双十一总交易金额191亿,订单1亿零580万笔,其中无线支付近900万笔,支付宝核心数据库集群处理了41亿个事务,执行285亿次SQL,生成15TB日志,访问1931亿次内存数据块,13亿个物理读,核心MySQL集群一天支持了20亿个事务。淘宝的技术人员以实际行动让网民折服,虽然在淘宝双十一活动刚开始的10分钟内的访问高峰期内,购物车和支付宝都出现了打不开的情况,但订单可以生成,而且白天的系统运行比较正常。双十一期间,淘宝除了技术上的保障,还有大量的运维策略的支持,比如在峰值期间下订单优先级最高,支付可以晚点儿,大额度的订单优先处理等等。淘宝网采用什么技术架构来实现网站高负载的呢?据淘宝技术人员分享,淘宝的整体架构使用了如下措施来应对:一应用无状态(淘宝session框架);二有效使用缓存(Tair);三应用拆分(HSF);四数据库拆分(TDDL);五异步通信(Notify);六非结构化数据存储(TFS,NOSQL);七监控、预警系统;八配置统一管理。

淘宝技术网站

2. 跟淘宝相比,12306网站的有独特的技术难度1) 火车票属于竞争性资源。淘宝的交易是相对离散的,分散在成千上万的卖家当中,同时对同一商家同一商品的并发购买并不是特别高。因此在数据访问上不会有太大的锁同一数据的瓶颈,买火车票在这方面压力会更大,最主要的原因还是僧多粥少的。火车票是几千人,几万人抢一张票,火车票的抢购场景也只有在淘宝秒杀的时候可以类比,但是网民参与的秒杀也很难成功秒杀到商品。2) 火车票资源稀缺,需要同线下数以万计的购票点、电话订票等进行互斥。每张火车票都是独一无二的,网络售票只是数以万计的购票终端的一个终端而已,需要跟其他售票系统保持数据一致性。淘宝的商品只需要查询库存量就可以了。举个粗略的例子,火车票的供需关系可能是1:10,淘宝货品与消费者的供需关系可能是10:1,技术革新解决不了某种商品严重供不应求的本质问题。淘宝上的商品天然没有全局一致性的问题,做技术上做分区优化就简单得多了。火车票买卖的每笔业务都要互斥,以检查有没有票,一个人是否买了多张票等等。从这个角度可以理解为卖票问题的技术难度大得多,属于世界级难题。3) 火车票的信息是实时更新的。网民的每次操作都必须到后台查询,实时生成新的火车票的状态信息。淘宝商品库存信息在促销期间不准确,这是服务端为了关键性能做妥协;但订火车票,库存信息必须是实时的。铁道部2012年春运每天安排大约2000对列车,座位大概400万个,因为每个座位都可能有不同的购票方式(火车票代售点、电话订票等),所以都需要计算,提前10天预售,应该有点类似于taobao同时提供400万件商品的秒杀活动。4) 票务业务的复杂性非商品信息可比。选票最大的问题不是直达,是换车!只要有换车,计算量级都是“次方”往上增加。比如上海-西安,中间在郑州换。但系统计算的时候会出现“上海-北京-西安”的路线,这条线路是没有选的,但会消耗计算资源,2000条线路+临时车+换乘,还有就是瞬间的并发,这个也是一个问题。5) 12306网站后面的票务系统问题。12306网站不是一个孤立的系统,虽然这网站也很多地方可以优化,但估计最大的瓶颈是后面那个和全国的代售点火车站共用的票务系统。真正的火车票数据库是在铁路系统中独立存在的,这个铁路系统反应慢才是制约12306网站慢的主因。所以最大问题可能不是负载并发问题,而是老票务系统的问题。票务系统采用的是突然放票,而有的票又远远不够大家分,所以,大家才会有抢票这种有中国特色的业务的做法。于是当票放出来的时候,就会有几百万人甚至上千万人杀上去,查询,下单。几十分钟内,一个网站能接受几千万的访问量,这个是很恐怖的事情。据说12306的高峰访问是10亿PV,集中在早8点到10点,每秒PV在高峰时上千万。这需要逐步全面革新。6) 独特的车票预留问题。传统票务系统有一个比较复杂的地方就是各种预留票规则,每个城市,每个节日都有很多的复杂留票规则,导致很多时候头十天一张卧铺都没有,但是等到最后就有很多票,这些使本已稀缺的资源更加紧张。

3. 12306网站被人诟病淘宝强大的技能气力,很容易让人们遥想到让人“一票难求”的订票web-12306。12306网站购票难的题目几近成了全体人的共识。来自前付出宝架构师冯大辉(@Fenng)的这条微博翻出12306这笔账,别有一番味道。以冯大辉的计算方式,付给宝11月11日一天就处理了1亿零580万条买卖恳请量,而12306一天处置的生意(出票量)仅仅166万条,这还主要是纠合在8点钟匹面放票以后的5分钟时间里。从终归来看,12306弱爆了,措置的交易量比支付宝“低了两个数目级”还那末弱不由风。冯大辉的微博马上获得了@caoz的转发响应,后者在9月底对12306的骂战中一战成名,因为观点相同,caoz和Fenng也许称为同一战线——只管,泛滥对12306满盈怨恨的普通购票者也与他们在周到上匹敌阵线。容易阐发一下12306的购票琐屑,为防御“黄牛”买票,购票细碎有一个业务逻辑:一个有用身份证件同一搭车日期同一车次限购一张车票。是以购买一张车票可以简化为包孕四个垄断:1) 判断同一搭车日期同一车次是否有未预订的空余坐位2) 武断这个有效身份证是否已购置过同一乘车日期同一车次的车票3) 车票上标注的坐位标志为已预订4) 假如没有置办过,则该身份证预订一张车票人们在12306站点上置办一张票的流程下列:1)用户经由浏览器拜访系统URL2)界面集群F5将恳求转发至某一节点,经过比拟用户数据库的形式发展身份鉴权。3)鉴权成功后进入订票,提交订票订单(盘问流程暂不寻找)界面表示请等待4)订票音讯被发送至总线部件(接口可用webService、RMI、致使自定义协议均大概)5)总线收到订票动态、去Cache集群查询相干车次6)Cache遵照自身维护的车次余票表,前往查询终究,如果有余票,转7)。假设无票了,则总线前往界面集群“没票了”,界面默示用户昔日再试。7)若有余票,则总线返回界面集群“正在出票,请等候”,并将订票求告压入行列。且发信息至Cache,申报CACHE将订票乞请列入队列。8)Cache收到总线行列步队增长1个的新闻,将本身维护的对应车次余票数减1个。9)总线另外一线程负责从行列中取静态,并发送至出票部件。10)出票部件发作订票下场,并修改数据库,发送“订票胜利”音讯回总线。11)总线将订票胜利音讯直接回传至界面集群。12)用户看到订票事实。

铁道部订票网站

淘宝的站点优化技能大多不适用于12306网站淘宝的网站美化技术手段中采用了少许的缓存技能和散布式战略,火车票的外形是实时算计,实时更新的,缓存只能打点网站前真个一小有部分问题,但整治不了人们抢票与出票慢的基本问题。

来源:武汉网站建设