软件开发培训班 >> 网络技术 >> 网络搭建
从网购到火车票,对比淘宝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);七监控、预警系统;八配置统一治理 。(摘自:http://server.51cto.com/sCollege-365024.htm) ![]() 2. 12306网站被人诟病 淘宝 壮大的技术实力,很方便让人们联想到让人“一票难求”的订票网站-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)用户通过阅读器 拜访系统URL 2)界面集群F5将 申请转发至某一节点,通过 比较用户数据库的内容进行身份鉴权 。 3)鉴权 顺利后进入订票,提交订票订单( 查问流程暂不 探讨)界面显示请期待 4)订票 信息被发送至总线部件(接口可用webService、RMI、甚至自定义 协定都 可以) 5)总线收到订票 信息、去Cache集群 查问 有关车次 6)Cache依据 本身 保护的车次余票表,返回 查问 后果,假如有余票,转7) 。假如无票了,则总线返回界面集群“没票了”,界面 揭示用户明天再试 。 7)若有余票,则总线返回界面集群“正在出票,请期待”,并将订票 申请压入队列 。且发 信息至Cache,告诉CACHE将订票 申请加入队列 。 8)Cache收到总线队列添加1个的 信息,将 本身 保护的对应车次余票数减1个 。 9)总线另一线程负责从队列中 取缔息,并发送至出票部件 。 10)出票部件产生订票 后果,并 批改数据库,发送“订票 顺利” 信息回总线 。 11)总线将订票 顺利 信息直接回传至界面集群 。 12)用户看到订票 后果 。 3. 跟淘宝相比,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) 独特的车票预留问题 。传统票务系统有一个 比较复杂的地方便是各种预留票 规定,每个城市,每个节日都有众多的复杂留票 规定,招致众多时候头十天一张卧铺都没有,然而等到最终就有众多票,这些使本已稀缺的资源更加紧张 。 4. 论断:淘宝的网站优化技术大多不 实用于12306网站 淘宝的网站优化技术中采纳了大量的缓存技术和 分布式策略,火车票的状态是实时计算,实时更新的,缓存不得不解决网站前端的一小 部分问题,但解决不了人们抢票和出票慢的 根本问题 。 |