牛人 |
|
等級:論壇騎士(三級) |
積分:6984分 |
注冊:2006-8-14 |
發(fā)表:2180(1204主題貼) |
登錄:3749 |
|
|
真實(shí)的12306 你所不知道的火車票網(wǎng)站 |
又到了春運(yùn)!
鐵路火車票、以及12306網(wǎng)站,必須是個大大的熱門…… 大家詬病不斷。
春運(yùn)放票的時候搶車票,瞬間無票,鐵道部花了幾個億,弄出了12306這個玩意兒,如果把這些錢給阿里巴巴或IBM等企業(yè),他們能不能做得比現(xiàn)在好?
前幾年,12306剛推出的時候,被罵的狗血噴頭后鐵道部找來IBM、阿里巴巴等大企業(yè)要解決方案,給出的條件是:資金管夠、但是問題得解決。幾大企業(yè)最后都拒絕了。
12306開始自己嘗試解決問題。他們發(fā)現(xiàn)市面上可以買到的成套解決方案都不足以應(yīng)付春運(yùn)購票負(fù)載,所以只能自己改進(jìn)已有的系統(tǒng)。2013年春運(yùn),12306系統(tǒng)峰值負(fù)載11萬tps,與2012年淘寶雙11活動峰值負(fù)載相當(dāng),新的系統(tǒng)基本經(jīng)受住了考驗(yàn)。
【技術(shù)補(bǔ)充】:以前12306用的是小型機(jī),發(fā)現(xiàn)性能嚴(yán)重不足,遂改用x86系統(tǒng)+linux平臺(原平臺為HP Superdome小型機(jī),UNIX系統(tǒng),Sybase ASE數(shù)據(jù)庫)。最后他們的核心系統(tǒng)用了十幾個節(jié)點(diǎn)(現(xiàn)在應(yīng)該是17節(jié)點(diǎn))的多路Xeon E7(具體幾路待考),每個節(jié)點(diǎn)配1TB內(nèi)存,數(shù)據(jù)庫全部在內(nèi)存中運(yùn)行。以上內(nèi)容是我在2013年7月得知的信息,彼時沒有任何公開來源提到過12306新系統(tǒng)的技術(shù)細(xì)節(jié)。甚至,當(dāng)時局外人沒人知道12306已經(jīng)在2012年開始做了技術(shù)改造。直到數(shù)日之前,鐵總首次向媒體公開了技術(shù)改造的詳情:分布式集群內(nèi)存數(shù)據(jù)技術(shù)引領(lǐng)12306技術(shù)革命。這篇文章給出的細(xì)節(jié),與我之前看到的內(nèi)容完全一致。由此我可以確信信息來源是此次技術(shù)升級的核心人士。
另外,關(guān)于第三方合作對方給出的信息是IBM、Oracle、Sybase全部不能滿足要求,主要是這些廠商的方案部署以后,要升級時不能做到不停機(jī)靈活擴(kuò)展。也就是說,IBM沒有做到是他們技術(shù)不足“搞不定”。阿里巴巴參與了改造,負(fù)責(zé)了排隊(duì)系統(tǒng)。此外,雖然后端經(jīng)受住了壓力,前端卻如大家所看到的那樣還是頻頻卡死。到底卡死的原因是前端水平太低還是訪問壓力太大,暫時沒有可靠的信息供判斷。
【很多人拿12306與淘寶比】
淘寶其架構(gòu)分散度較高,各個訂單之間關(guān)聯(lián)度不大;而12306每出一張票都要對全線路做數(shù)據(jù)更新(因?yàn)橐粭l線路存在多個站點(diǎn)),因此系統(tǒng)負(fù)載相較淘寶來說集中很多,搬淘寶的方案也無法解決問題。淘寶的應(yīng)用類型決定了阿里巴巴可以通過部署大量的服務(wù)器來分散壓力,但12306就不行。其實(shí)他們的核心系統(tǒng)的硬件成本不過數(shù)百萬,不是他們不想采購更多服務(wù)器,而是買更多的服務(wù)器也沒什么用途。最后,在經(jīng)過軟件層面的優(yōu)化之后,12306的瓶頸其實(shí)是核心節(jié)點(diǎn)的CPU、內(nèi)存性能。但是這個性能的提升不是朝夕的事情,而是受限于摩爾定律,基本上每兩年才能翻一倍多些。(這段話是我自己的分析,不過現(xiàn)在12306的后端數(shù)據(jù)庫系統(tǒng)應(yīng)付現(xiàn)有需求已經(jīng)夠用了)
補(bǔ)充:關(guān)于座位實(shí)時復(fù)用,我看到的信息明確表明12306出票時,每出一張區(qū)間票都要實(shí)時調(diào)整該線路其他受影響區(qū)間段的余票數(shù)量,那么多趟列車線路、站點(diǎn),這是很大的壓力來源。
==========================
我對鐵路系統(tǒng)購票困難現(xiàn)象的看法:
一種商品只要出現(xiàn)供不應(yīng)求現(xiàn)象,那么結(jié)果只有兩種:
1、大家排隊(duì)購買(拼時間+拼體力);
2、出現(xiàn)黑市,變相提高商品的流通價(jià)格(抑制需求)。
12306這個事情,就是標(biāo)準(zhǔn)的限價(jià)商品供不應(yīng)求之后出現(xiàn)排隊(duì)與黑市并存現(xiàn)象的例子。因?yàn)楣┎粦?yīng)求,所以有了黃牛、搶票軟件。如果供應(yīng)充足,一個車次直到發(fā)車前都有一兩張余票,那么黃牛、搶票就毫無存在價(jià)值,旅客也用不著守在電腦前和其他人比拼手速和網(wǎng)速以及電腦性能網(wǎng)絡(luò)性能了。
現(xiàn)在供應(yīng)不足的前提下,12306就算把系統(tǒng)做的性能再高,也只是會加快熱門車次票務(wù)秒殺的速度而已——而這更會刺激搶票軟件,大家為了在更短的時間里成功搶到隊(duì)列名額就會不斷提升自己的搶票性能。打個比方說就是一個店門前排隊(duì),消費(fèi)者為了增加買到商品的概率去雇人代排,每個消費(fèi)者都雇了好多人,造成店門口的通道擁擠不堪。為了減緩擁堵,商家不斷拓寬通道,但每次一拓寬消費(fèi)者們就會增加雇傭的排隊(duì)勞力把新增的通道空間占滿,形成惡性循環(huán)。這樣下去,只要還存在供不應(yīng)求的現(xiàn)象,這種循環(huán)就不會有終止的時候。也就是說,12306的問題主要不是出在網(wǎng)站本身。
那么怎樣解決供應(yīng)不足的問題?這么多年來鐵路不斷升級運(yùn)力修建新線,已經(jīng)建成全球最龐大的鐵路運(yùn)輸系統(tǒng),可是到了春運(yùn)還是只能勉強(qiáng)應(yīng)付。從這個角度來說鐵路部門在供應(yīng)不足的問題上也不該承擔(dān)太大責(zé)任,他們已經(jīng)做得很不錯了。
那么問題的根源就出在不斷增加的需求上了。為什么我國鐵路系統(tǒng)需要承擔(dān)如此龐大的客運(yùn)流需求?很顯然,是因?yàn)槿珖秶娜丝诹鲃印4罅縿?wù)工上學(xué)人員過節(jié)要返鄉(xiāng),節(jié)后回駐地,這個剛性需求是合理的。可是為什么他們必須要到外地去打工上學(xué)?為什么數(shù)以億計(jì)的人員要遠(yuǎn)離家鄉(xiāng)去謀生求學(xué)?
最后我們會發(fā)現(xiàn),區(qū)域發(fā)展不平衡才是罪魁禍?zhǔn)住U驗(yàn)槎嗌偃嗽诩亦l(xiāng)無法得到足夠的機(jī)會與資源,他們必須到發(fā)達(dá)地區(qū)奮斗和實(shí)現(xiàn)自己的價(jià)值。只要這種不平衡現(xiàn)象還在繼續(xù),每年春節(jié)前后就不可避免地出現(xiàn)大批人員全國范圍流動的情況,就不可避免地出現(xiàn)運(yùn)輸能力不足的尷尬。改進(jìn)12306也好,增加鐵路網(wǎng)投資也好,最終都只是治標(biāo)不治本。如果這個社會不去直面根本問題,那么這些表象的癥結(jié)永無解開的時候。
說起來,有幾個人愿意背井離鄉(xiāng)呢?
=============================================
有個問題爭了幾天,我實(shí)在忍不住要吐槽一下了:
12306這個事情,網(wǎng)上有多少網(wǎng)友從一開始就獻(xiàn)計(jì)獻(xiàn)策了,也有不少網(wǎng)友提供了很不錯的建議。但不得不說,很多網(wǎng)友在提建議時完全就是一種居高臨下、自以為是的態(tài)度,上來就先認(rèn)定需求簡單可以輕松應(yīng)付,隨便有點(diǎn)經(jīng)驗(yàn)的工程師就能搞定,12306出問題全怪體制太爛,國企效率低下,一幫人光拿錢不做事,技術(shù)水平太低……
淘寶2013年雙11活動,峰值量是一秒鐘完成1.3萬筆訂單。12306在2014年1月6日全天網(wǎng)絡(luò)出票400萬張。看起來雙11量完爆12306是吧?等等!別忘了12306這400萬張票可不是全天悠悠閑閑平均地賣出去的,而是分成10個時段集中被搶走的。每個時段開始放票后數(shù)分鐘之內(nèi)大部分票就已經(jīng)被搶光了。以每個時段40萬票,峰值持續(xù)三分鐘估算,高峰期一分鐘出票在10萬張以上毫不夸張。誠然,一分鐘10萬訂單還比不上淘寶2013雙11,但別忘了一年以前阿里巴巴也只是達(dá)到了一分鐘15萬訂單的水平而已(并且在高峰期一樣卡爆)。而且一分鐘10萬出票還滿足不了需求的,以旅客購票的熱情來看,達(dá)到一分鐘50萬票都不一定能讓所有旅客滿意。
淘寶在2012年雙11時已經(jīng)是業(yè)界頂尖水平了,其軟硬件技術(shù)皆為自主研發(fā),既便如此面對一分鐘十幾萬的訂單量都會卡死。請問,覺得12306“需求簡單,問題可以輕松解決”的,是不是水平已經(jīng)高到了阿里巴巴都要請你們?nèi)ヮI(lǐng)導(dǎo)整個技術(shù)團(tuán)隊(duì)的級別呢?是不是你們的方案可以輕松應(yīng)付每分鐘數(shù)十萬筆訂單,達(dá)到全球一流水平了?
淘寶面臨的需求是業(yè)界從未有過的,所以淘寶的路很艱難。12306面臨的需求是其他人遇到過的么?全世界哪個國家、哪種客運(yùn)票務(wù)系統(tǒng)敢說自己的負(fù)載達(dá)到12306三分之一的水平?面對空前龐大的壓力,諸位“技術(shù)高手”只是憑著自己一點(diǎn)程序員的經(jīng)驗(yàn),在電腦前一個人思考上一會兒就給出個“簡單、實(shí)用、省錢、輕松應(yīng)付”的解決方案——你們知不知道“自大”這兩個字怎么寫啊?
作為局外人,本來就難以了解鐵路售票系統(tǒng)內(nèi)部的業(yè)務(wù)邏輯。想出建議可以,那么是不是先收集些信息,了解下背景?是不是先拉出一份需求清單來,把客戶的想法搞明白搞清楚了,然后再考慮技術(shù)實(shí)現(xiàn)?能不能不要上來就想著技術(shù)上怎么方便怎么做,把客戶需求隨意地簡化?
好多人提的方案在票務(wù)供應(yīng)不足的情況下,如果執(zhí)行,直接就超售了,難道你要讓旅客前一分鐘還為訂到票高興,下一分鐘對著“您的票被作廢”的提示破口大罵么?
或者訂票延遲確認(rèn)——知不知道旅客看到選擇的車次沒能買到票后會做什么?馬上去看其他車次有沒有票嘛!你延遲確認(rèn)1分鐘,讓賬戶排隊(duì)稍等一下,多少旅客會覺得自己被耽誤了啊!?旅客的要求就是速度越快越好,最好是下訂單后一秒鐘出結(jié)果才安心哩。這還僅僅是簡單想一下就能知道的問題,局外人不了解或不能輕易想到的問題又有多少?諸位高談闊論時,有沒有虛心地去找找內(nèi)部人士了解或者搜索類似的票務(wù)系統(tǒng)的研究論文?真覺得自己的頭腦聰明絕頂,連背景調(diào)查都不做就可以輕松把握所有細(xì)節(jié)?
還有,你們想出來的方案做沒做過實(shí)驗(yàn)啊?考慮沒考慮過硬件適配性啊?你們了解現(xiàn)在市面上能買到的硬件系統(tǒng),什么樣級別的能滿足可靠性、可維護(hù)性、可擴(kuò)展性的需求么?你們在多路并行服務(wù)器平臺上驗(yàn)證過你們的分布式數(shù)據(jù)庫構(gòu)想么?哦原來你們什么都沒做過,怕是連多節(jié)點(diǎn)集群互聯(lián)該用什么連接方式都不知道,你們拍下腦瓜,一句“那些問題都好解決”就完事兒了?就算你們自己沒做過,研究下別人做過的經(jīng)驗(yàn)就不夠高貴冷艷么?就貶低自己技術(shù)水平了么?連類似的案例研究都沒有,隨口就是別人做得到我做得到,真覺得自己就多么偉大了么?
還有一些人,看說IBM沒做就一口認(rèn)定是12306故意排擠IBM,認(rèn)定IBM解決這問題肯定沒壓力。好嘛,IBM什么時候做過如此規(guī)模的票務(wù)系統(tǒng)了?你細(xì)節(jié)什么都不知就預(yù)設(shè)結(jié)論了?為啥淘寶當(dāng)年沒選擇IBM作為方案提供商而是自主研發(fā)?IBM的大數(shù)據(jù)業(yè)務(wù)主要集中在金融領(lǐng)域,這不代表它在其他領(lǐng)域就樣樣精通好不好?它能拿出的方案無非是Power7小型機(jī)平臺,Power7在數(shù)據(jù)庫性能上又比Xeon E7強(qiáng)多點(diǎn)?然后Power7系統(tǒng)賣多少錢了解么?后續(xù)維護(hù)難度多大了解么?把適合銀行金融行業(yè)的平臺放到12306來真的合適么?
說起來,不就是因?yàn)椤?2306”和“IBM”這倆名字放一起,諸位內(nèi)心里首先就給前者打了負(fù)分對后者仰視么?要是把“12306”換成“nasdaq”,那結(jié)論就又是一回事兒了——哦正好nasdaq沒用IBM方案,可見nasdaq是排擠IBM內(nèi)部人賺黑心錢是吧?不過2013年工商銀行系統(tǒng)升級故障,應(yīng)該是和方案提供商IBM無關(guān)的,肯定是國企的體制問題無誤!
評價(jià)一個事物,首先不是了解背景、研究問題產(chǎn)生的原因,首先是看被評價(jià)者處于什么立場,打著什么標(biāo)簽。如果是“敵對陣營”那就毫不猶豫地踩上一腳再說話,接下來就算研究也只研究“它的錯誤在哪兒”,不考慮“它也有對的可能性”。
在12306這個問題上就是:12306是國企,是鐵總下屬機(jī)構(gòu),所以它出了問題一定是自身原因。票務(wù)系統(tǒng)做不好一定是鐵路方面不懂技術(shù),把該用來請大企業(yè)做方案的錢自己貪掉了,一定不可能是大企業(yè)都沒信心解決這問題。旅客普遍使用搶票軟件也是12306的責(zé)任,不是供應(yīng)不足的原因……
那,最后呢?12306還是做到了全球最強(qiáng)的客運(yùn)票務(wù)系統(tǒng)。一貫被認(rèn)為是因循守舊的國企,在選擇技術(shù)方案時放棄沿用多年的小型機(jī)/UNIX平臺去擁抱業(yè)界還是新鮮事物的基于x86/linux的大規(guī)模分布內(nèi)存數(shù)據(jù)庫系統(tǒng),承受住了堪比2012年淘寶雙11的壓力。在這個領(lǐng)域,12306可以自豪地說自己是做的最好的案例。它還在卡,可是這些遲早會改進(jìn)。這個過程中也還是會有冷嘲熱諷,還是會有所謂的大牛指點(diǎn)江山,但最終解決春運(yùn)高峰期一天數(shù)百萬張秒殺售票的,還是12306自己。
所以,走自己的路,讓別人去說吧。
|
|