自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從網(wǎng)購到火車票,淺析淘寶和12306的技術(shù)架構(gòu)

系統(tǒng)
在剛剛過去的淘寶雙11大促活動(dòng)中,淘寶的技術(shù)支撐受到了網(wǎng)民的追捧。而12306火車票購票系統(tǒng),逢假日必癱瘓,真是天上地下。12306為何如此爛?

【編者按】12306火車票購票系統(tǒng),逢假日必癱瘓,引發(fā)了強(qiáng)烈反響。國慶前后,“問診12306”的時(shí)候,鐵道系統(tǒng)的答復(fù)是,購票人數(shù)太多,數(shù)據(jù)量過大。但是,在前不久淘寶雙11大促活動(dòng)中,淘寶雙十一總交易金額191億,訂單1億零580萬筆,其中無線支付近900萬筆,支付寶核心數(shù)據(jù)庫集群處理了41億個(gè)事務(wù),執(zhí)行285億次SQL,生成15TB日志,訪問1931億次內(nèi)存數(shù)據(jù)塊,13億個(gè)物理讀,核心MySQL集群一天支持了20億個(gè)事務(wù)。12306火車票系統(tǒng)和其相比,真是天上地下。12306為何如此爛?

1. 淘寶技術(shù)被人稱贊

  在剛剛過去的淘寶雙11大促活動(dòng)中,淘寶的技術(shù)支撐受到了網(wǎng)民的追捧。據(jù)來自支付寶DBA@dbatools的透露:淘寶雙十一總交易金額191億,訂單1億零580萬筆,其中無線支付近900萬筆,支付寶核心數(shù)據(jù)庫集群處理了41億個(gè)事務(wù),執(zhí)行285億次SQL,生成15TB日志,訪問1931億次內(nèi)存數(shù)據(jù)塊,13億個(gè)物理讀,核心MySQL集群一天支持了20億個(gè)事務(wù)。

  淘寶的技術(shù)人員以實(shí)際行動(dòng)讓網(wǎng)民折服,雖然在淘寶雙十一活動(dòng)剛開始的10分鐘內(nèi)的訪問高峰期內(nèi),購物車和支付寶都出現(xiàn)了打不開的情況,但訂單可以生成,而且白天的系統(tǒng)運(yùn)行比較正常。雙十一期間,淘寶除了技術(shù)上的保障,還有大量的運(yùn)維策略的支持,比如在峰值期間下訂單優(yōu)先級最高,支付可以晚點(diǎn)兒,大額度的訂單優(yōu)先處理等等。

  淘寶網(wǎng)采用什么技術(shù)架構(gòu)來實(shí)現(xiàn)網(wǎng)站高負(fù)載的呢?據(jù)淘寶技術(shù)人員分享,淘寶的整體架構(gòu)使用了如下措施來應(yīng)對:一應(yīng)用無狀態(tài)(淘寶session框架);二有效使用緩存(Tair);三應(yīng)用拆分(HSF);四數(shù)據(jù)庫拆分(TDDL);五異步通信(Notify);六非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)(TFS,NOSQL);七監(jiān)控、預(yù)警系統(tǒng);八配置統(tǒng)一管理。(摘自:http://server.51cto.com/sCollege-365024.htm)

2. 12306網(wǎng)站被人詬病

  淘寶強(qiáng)大的技術(shù)實(shí)力,很容易讓人們聯(lián)想到讓人“一票難求”的訂票網(wǎng)站-12306。12306網(wǎng)站購票難的問題幾乎成了所有人的共識(shí)。來自前支付寶架構(gòu)師馮大輝(@Fenng )的這條微博翻出12306這筆賬,別有一番滋味。

  以馮大輝的計(jì)算方法,支付寶11月11日一天就處理了1億零580萬條交易請求量,而12306一天處理的交易(出票量)僅僅166萬條,這還主要是集中在8點(diǎn)鐘開始放票之后的5分鐘時(shí)間里。從結(jié)果來看,12306弱爆了,處理的交易量比支付寶“低了兩個(gè)數(shù)量級”還那么弱不禁風(fēng)。

  馮大輝的微博馬上得到了@caoz的轉(zhuǎn)發(fā)響應(yīng),后者在9月底對12306的罵戰(zhàn)中一戰(zhàn)成名,由于觀點(diǎn)相似,caoz和Fenng可以稱為統(tǒng)一戰(zhàn)線——當(dāng)然,眾多對12306充滿怨恨的普通購票者也與他們在感情上統(tǒng)一戰(zhàn)線。

  簡單分析一下12306的購票系統(tǒng),為避免“黃牛”買票,購票系統(tǒng)有一個(gè)業(yè)務(wù)邏輯:一個(gè)有效身份證件同一乘車日期同一車次限購一張車票。因此購買一張車票可以簡化為包含四個(gè)操作:

  1) 判斷同一乘車日期同一車次是否有未預(yù)訂的空余座位

  2) 判斷這個(gè)有效身份證是否已購買過同一乘車日期同一車次的車票

  3) 車票上標(biāo)注的座位標(biāo)記為已預(yù)訂

  4) 如果沒有購買過,則該身份證預(yù)訂一張車票

  人們在12306網(wǎng)站上購買一張票的流程如下:

  1)用戶通過瀏覽器訪問系統(tǒng)URL

  2)界面集群F5將請求轉(zhuǎn)發(fā)至某一節(jié)點(diǎn),通過比較用戶數(shù)據(jù)庫的內(nèi)容進(jìn)行身份鑒權(quán)。

  3)鑒權(quán)成功后進(jìn)入訂票,提交訂票訂單(查詢流程暫不討論)界面顯示請等待

  4)訂票消息被發(fā)送至總線部件(接口可用webService、RMI、甚至自定義協(xié)議都可以)

  5)總線收到訂票消息、去Cache集群查詢相關(guān)車次

  6)Cache根據(jù)自身維護(hù)的車次余票表,返回查詢結(jié)果,如果有余票,轉(zhuǎn)7)。如果無票了,則總線返回界面集群“沒票了”,界面提示用戶明天再試。

  7)若有余票,則總線返回界面集群“正在出票,請等待”,并將訂票請求壓入隊(duì)列。且發(fā)消息至Cache,告訴CACHE將訂票請求加入隊(duì)列。

  8)Cache收到總線隊(duì)列增加1個(gè)的消息,將自身維護(hù)的對應(yīng)車次余票數(shù)減1個(gè)。

  9)總線另一線程負(fù)責(zé)從隊(duì)列中取消息,并發(fā)送至出票部件。

  10)出票部件產(chǎn)生訂票結(jié)果,并修改數(shù)據(jù)庫,發(fā)送“訂票成功”消息回總線。

  11)總線將訂票成功消息直接回傳至界面集群。

  12)用戶看到訂票結(jié)果。

  3. 跟淘寶相比,12306網(wǎng)站的有獨(dú)特的技術(shù)難度

  1) 火車票屬于競爭性資源。淘寶的交易是相對離散的,分散在成千上萬的賣家當(dāng)中,同時(shí)對同一商家同一商品的并發(fā)購買并不是特別高。因此在數(shù)據(jù)訪問上不會(huì)有太大的鎖同一數(shù)據(jù)的瓶頸,買火車票在這方面壓力會(huì)更大,最主要的原因還是僧多粥少的?;疖嚻笔菐浊?,幾萬人搶一張票,火車票的搶購場景也只有在淘寶秒殺的時(shí)候可以類比,但是網(wǎng)民參與的秒殺也很難成功秒殺到商品。

  2) 火車票資源稀缺,需要同線下數(shù)以萬計(jì)的購票點(diǎn)、電話訂票等進(jìn)行互斥。每張火車票都是獨(dú)一無二的,網(wǎng)絡(luò)售票只是數(shù)以萬計(jì)的購票終端的一個(gè)終端而已,需要跟其他售票系統(tǒng)保持?jǐn)?shù)據(jù)一致性。淘寶的商品只需要查詢庫存量就可以了。舉個(gè)粗略的例子,火車票的供需關(guān)系可能是1:10,淘寶貨品與消費(fèi)者的供需關(guān)系可能是10:1,技術(shù)革新解決不了某種商品嚴(yán)重供不應(yīng)求的本質(zhì)問題。淘寶上的商品天然沒有全局一致性的問題,做技術(shù)上做分區(qū)優(yōu)化就簡單得多了?;疖嚻辟I賣的每筆業(yè)務(wù)都要互斥,以檢查有沒有票,一個(gè)人是否買了多張票等等。從這個(gè)角度可以理解為賣票問題的技術(shù)難度大得多,屬于世界級難題。

  3) 火車票的信息是實(shí)時(shí)更新的。網(wǎng)民的每次操作都必須到后臺(tái)查詢,實(shí)時(shí)生成新的火車票的狀態(tài)信息。淘寶商品庫存信息在促銷期間不準(zhǔn)確,這是服務(wù)端為了關(guān)鍵性能做妥協(xié);但訂火車票,庫存信息必須是實(shí)時(shí)的。鐵道部2012年春運(yùn)每天安排大約2000對列車,座位大概400萬個(gè),因?yàn)槊總€(gè)座位都可能有不同的購票方式(火車票代售點(diǎn)、電話訂票等),所以都需要計(jì)算,提前10天預(yù)售,應(yīng)該有點(diǎn)類似于taobao同時(shí)提供400萬件商品的秒殺活動(dòng)。

  4) 票務(wù)業(yè)務(wù)的復(fù)雜性非商品信息可比。選票最大的問題不是直達(dá),是換車!只要有換車,計(jì)算量級都是“次方”往上增加。比如上海-西安,中間在鄭州換。但系統(tǒng)計(jì)算的時(shí)候會(huì)出現(xiàn)“上海-北京-西安”的路線,這條線路是沒有選的,但會(huì)消耗計(jì)算資源,2000條線路+臨時(shí)車+換乘,還有就是瞬間的并發(fā),這個(gè)也是一個(gè)問題。

  5) 12306網(wǎng)站后面的票務(wù)系統(tǒng)問題。12306網(wǎng)站不是一個(gè)孤立的系統(tǒng),雖然這網(wǎng)站也很多地方可以優(yōu)化,但估計(jì)最大的瓶頸是后面那個(gè)和全國的代售點(diǎn)火車站共用的票務(wù)系統(tǒng)。真正的火車票數(shù)據(jù)庫是在鐵路系統(tǒng)中獨(dú)立存在的,這個(gè)鐵路系統(tǒng)反應(yīng)慢才是制約12306網(wǎng)站慢的主因。所以最大問題可能不是負(fù)載并發(fā)問題,而是老票務(wù)系統(tǒng)的問題。票務(wù)系統(tǒng)采用的是突然放票,而有的票又遠(yuǎn)遠(yuǎn)不夠大家分,所以,大家才會(huì)有搶票這種有中國特色的業(yè)務(wù)的做法。于是當(dāng)票放出來的時(shí)候,就會(huì)有幾百萬人甚至上千萬人殺上去,查詢,下單。幾十分鐘內(nèi),一個(gè)網(wǎng)站能接受幾千萬的訪問量,這個(gè)是很恐怖的事情。據(jù)說12306的高峰訪問是10億PV,集中在早8點(diǎn)到10點(diǎn),每秒PV在高峰時(shí)上千萬。這需要逐步全面革新。

  6) 獨(dú)特的車票預(yù)留問題。傳統(tǒng)票務(wù)系統(tǒng)有一個(gè)比較復(fù)雜的地方就是各種預(yù)留票規(guī)則,每個(gè)城市,每個(gè)節(jié)日都有很多的復(fù)雜留票規(guī)則,導(dǎo)致很多時(shí)候頭十天一張臥鋪都沒有,但是等到最后就有很多票,這些使本已稀缺的資源更加緊張。

  4. 結(jié)論:淘寶的網(wǎng)站優(yōu)化技術(shù)大多不適用于12306網(wǎng)站

  淘寶的網(wǎng)站優(yōu)化技術(shù)中采用了大量的緩存技術(shù)和分布式策略,火車票的狀態(tài)是實(shí)時(shí)計(jì)算,實(shí)時(shí)更新的,緩存只能解決網(wǎng)站前端的一小部分問題,但解決不了人們搶票和出票慢的根本問題。

 

責(zé)任編輯:黃丹 來源: 搜狐IT
相關(guān)推薦

2012-11-23 10:02:16

網(wǎng)購火車票淘寶

2012-11-15 09:40:18

2018-12-29 16:24:58

Python12306火車票

2011-12-20 14:09:40

2015-03-18 15:05:12

12306驗(yàn)證碼

2018-01-02 09:56:04

Python12306火車票

2022-04-27 13:36:18

12306鐵路12306

2023-09-15 09:34:54

2020-01-13 07:42:01

技術(shù)研發(fā)指標(biāo)

2011-01-24 15:37:32

火車票

2014-12-22 09:42:51

12306

2012-01-05 13:14:42

火車票

2016-08-31 13:26:24

PythonPython3工具

2011-01-28 15:48:11

Chrome插件Page Monito火車票

2018-01-10 22:19:44

2024-01-30 08:55:24

2012-01-05 09:14:05

Firefox

2023-10-20 09:17:08

攜程實(shí)踐

2018-10-22 15:20:19

Python火車票查看器編程語言

2023-07-07 14:18:57

攜程實(shí)踐
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號