ZT文萃

          本博不原創(chuàng),轉(zhuǎn)帖自己感興趣那些事人物,什么入眼貼什么,隨心所欲。
          posts - 93, comments - 5, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          每逢春運,鐵路系統(tǒng)唯一的官方購票網(wǎng)站12306就會成為眾矢之的,今年也不例外。今年12306并未出現(xiàn)大面積 崩潰問題,但這并不妨礙它再次被淹沒在一片埋怨聲中。1月5日,有網(wǎng)友在問答網(wǎng)站“知乎”上提問,如果把12306外包給IBM或者阿里巴巴來做的話,能 不能比現(xiàn)在做得好?我們來看看獲得5千余名網(wǎng)友“點贊”的知乎用戶王強的解答吧。


          官方訂票網(wǎng)站12306崩潰時的頁面(資料圖)
          以下是王強的回復(fù)(有刪節(jié)):

          12306首秀被罵的狗血噴頭后鐵道部找來IBM、阿里巴巴等大企業(yè)要解決方案,給出的條件是資金管夠但是問題得解決。幾大企業(yè)最后都拒絕了。
          12306 開始自己嘗試解決問題。他們發(fā)現(xiàn)市面上可以買到的成套解決方案都不足以應(yīng)付春運購票負載,所以只能自己改進已有的數(shù)據(jù)庫以前12306用的是小型機,發(fā)現(xiàn) 性能嚴重不足,遂改用x86系統(tǒng)+linux平臺(原平臺為HP Superdome小型機,UNIX系統(tǒng),Sybase ASE數(shù)據(jù)庫)。最后他們的核心系統(tǒng)用了十幾個節(jié)點(現(xiàn)在應(yīng)該是17節(jié)點)的多路Xeon E7(具體幾路待考),每個節(jié)點配1TB內(nèi)存,數(shù)據(jù)庫全部在內(nèi)存中運行。2013年春運,12306系統(tǒng)峰值負載11萬tps,與2012年淘寶雙11活 動峰值負載相當,新的系統(tǒng)基本經(jīng)受住了考驗。

          補充:以上內(nèi)容是我在2013年7月得知的信息,彼時沒有任何公開來源提到過12306新系 統(tǒng)的技術(shù)細節(jié)。甚至,當時局外人沒人知道12306已經(jīng)在2012年開始做了技術(shù)改造。直到數(shù)日之前,鐵總首次向媒體公開了技術(shù)改造的詳情:分布式集群內(nèi) 存數(shù)據(jù)技術(shù)引領(lǐng)12306技術(shù)革命。這篇文章給出的細節(jié),與我之前看到的內(nèi)容完全一致。由此我可以確信信息來源是此次技術(shù)升級的核心人士。

          另 外,關(guān)于第三方合作對方給出的信息是IBM、Oracle、Sybase全部不能滿足要求,主要是這些廠商的方案部署以后,要升級時不能做到不停機靈活擴 展。也就是說,IBM沒有做到是他們技術(shù)不足“搞不定”。阿里巴巴參與了改造,負責了排隊系統(tǒng)。此外,雖然后端經(jīng)受住了壓力,前端卻如大家所看到的那樣還 是頻頻卡死。到底卡死的原因是前端水平太低還是訪問壓力太大,暫時沒有可靠的信息供判斷。

          淘寶的問題是其系統(tǒng)架構(gòu)是分散度較高的,各個訂 單之間關(guān)聯(lián)度不大;而12306每出一張票都要對全線路做數(shù)據(jù)更新(因為一條線路存在多個站點),因此系統(tǒng)負載相較淘寶來說集中很多,直接搬淘寶的方案也 無法解決問題。淘寶的應(yīng)用類型決定了阿里巴巴可以通過部署大量的服務(wù)器來分散壓力,但12306就不行。其實他們的核心系統(tǒng)的硬件成本不過數(shù)百萬,不是他 們不想采購更多服務(wù)器,而是買更多的服務(wù)器也沒什么用途。最后,在經(jīng)過軟件層面的優(yōu)化之后,12306的瓶頸其實是核心節(jié)點的CPU、內(nèi)存性能。但是這個 性能的提升不是朝夕的事情,而是受限于摩爾定律,基本上每兩年才能翻一倍多些。(這段話是我自己的分析,不過現(xiàn)在12306的后端數(shù)據(jù)庫系統(tǒng)應(yīng)付現(xiàn)有需求 已經(jīng)夠用了)
          補充:關(guān)于座位實時復(fù)用,我看到的信息明確表明12306出票時,每出一張區(qū)間票都要實時調(diào)整該線路其他受影響區(qū)間段的余票數(shù)量,且這是很大的壓力來源;另外,對方表示所使用的GemFire數(shù)據(jù)庫與簡單的memcache/redis數(shù)據(jù)緩沖不同,有著本質(zhì)區(qū)別。

          然后我說點對鐵路系統(tǒng)購票困難現(xiàn)象的看法:
          一種商品只要出現(xiàn)供不應(yīng)求現(xiàn)象,那么結(jié)果只有兩種:大家排隊購買;出現(xiàn)黑市,變相提高商品的流通價格并抑制需求。
          12306 這個事情,就是標準的限價商品供不應(yīng)求之后出現(xiàn)排隊與黑市現(xiàn)象的例子。因為供不應(yīng)求,所以有了黃牛、搶票軟件與秒殺。如果供應(yīng)充足,一個車次直到發(fā)車前都 有一兩張余票,那么黃牛、搶票就毫無存在價值,旅客也用不著守在電腦前和其他人比拼手速和網(wǎng)速以及電腦性能網(wǎng)絡(luò)性能了。
          現(xiàn)在供應(yīng)不足的前提 下,12306就算把系統(tǒng)做的性能再高,也只是會加快熱門車次票務(wù)秒殺的速度而已——而這更會刺激搶票軟件,大家為了在更短的時間里成功搶到隊列名額就會 不斷提升自己的搶票性能。打個比方說就是一個店門前排隊,消費者為了增加買到商品的概率去雇人代排,每個消費者都雇了好多人,造成店門口的通道擁擠不堪。 為了減緩擁堵,商家不斷拓寬通道,但每次一拓寬消費者們就會增加雇傭的排隊勞力把新增的通道空間占滿,形成惡性循環(huán)。這樣下去,只要還存在供不應(yīng)求的現(xiàn) 象,這種循環(huán)就不會有終止的時候。也就是說,12306的問題主要不是出在網(wǎng)站本身。

          12306這個事情,網(wǎng)上有多少網(wǎng)友從一開始就獻計 獻策了,也有不少網(wǎng)友提供了很不錯的建議。但不得不說,很多網(wǎng)友在提建議時完全就是一種居高臨下、自以為是的態(tài)度,上來就先認定需求簡單可以輕松應(yīng)付,隨 便有點經(jīng)驗的工程師就能搞定,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,但別忘了一年以前 阿里巴巴也只是達到了一分鐘15萬訂單的水平而已(并且在高峰期一樣卡爆)。而且一分鐘10萬出票還滿足不了需求的,以旅客購票的熱情來看,達到一分鐘 50萬票都不一定能讓所有旅客滿意。

          淘寶在2012年雙11時已經(jīng)是業(yè)界頂尖水平了,其軟硬件技術(shù)皆為自主研發(fā),既便如此面對一分鐘十幾 萬的訂單量都會卡死。請問,覺得12306“需求簡單,問題可以輕松解決”的,是不是水平已經(jīng)高到了阿里巴巴都要請你們?nèi)ヮI(lǐng)導(dǎo)整個技術(shù)團隊的級別呢?是不 是你們的方案可以輕松應(yīng)付每分鐘數(shù)十萬筆訂單,達到全球一流水平了?

          淘寶面臨的需求是業(yè)界從未有過的,所以淘寶的路很艱難。12306面 臨的需求是其他人遇到過的么?全世界哪個國家、哪種客運票務(wù)系統(tǒng)敢說自己的負載達到12306三分之一的水平?面對空前龐大的壓力,諸位“技術(shù)高手”只是 憑著自己一點程序員的經(jīng)驗,在電腦前一個人思考上一會兒就給出個“簡單、實用、省錢、輕松應(yīng)付”的解決方案——你們知不知道“自大”這兩個字怎么寫啊?

          還 有一些人,看說IBM沒做就一口認定是12306故意排擠IBM,認定IBM解決這問題肯定沒壓力。好嘛,IBM什么時候做過如此規(guī)模的票務(wù)系統(tǒng)了?你細 節(jié)什么都不知就預(yù)設(shè)結(jié)論了?為啥淘寶當年沒選擇IBM作為方案提供商而是自主研發(fā)?IBM的大數(shù)據(jù)業(yè)務(wù)主要集中在金融領(lǐng)域,這不代表它在其他領(lǐng)域就樣樣精 通好不好?它能拿出的方案無非是Power7小型機平臺,Power7在數(shù)據(jù)庫性能上又比Xeon E7強多點?然后Power7系統(tǒng)賣多少錢了解么?后續(xù)維護難度多大了解么?把適合銀行金融行業(yè)的平臺放到12306來真的合適么?說起來,不就是因為 “12306”和“IBM”這倆名字放一起,諸位內(nèi)心里首先就給前者打了負分對后者仰視么?要是把“12306”換成“nasdaq”,那結(jié)論就又是一回 事兒了——哦正好nasdaq沒用IBM方案,可見nasdaq是排擠IBM內(nèi)部人賺黑心錢是吧?不過2013年工商銀行系統(tǒng)升級故障,應(yīng)該是和方案提供 商IBM無關(guān)的,肯定是國企的體制問題無誤!

          最后呢?12306還是做到了全球最強的客運票務(wù)系統(tǒng)。一貫被認為是因循守舊的國企,在選擇 技術(shù)方案時放棄沿用多年的小型機/UNIX平臺去擁抱業(yè)界還是新鮮事物的基于x86/linux的大規(guī)模分布內(nèi)存數(shù)據(jù)庫系統(tǒng),承受住了堪比2012年淘寶 雙11的壓力。在這個領(lǐng)域,12306可以自豪地說自己是做的最好的案例。它還在卡,還是偶爾崩潰,頁面還是難看,可是這些遲早會改進。這個過程中也還是 會有冷嘲熱諷,還是會有所謂的大牛指點江山,但最終解決春運高峰期一天數(shù)百萬張秒殺售票的,還是12306自己。所以,走自己的路,讓別人去說吧。

          原文鏈接:12306 外包給阿里巴巴、IBM 等大企業(yè)做是否可行

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 漳浦县| 双流县| 攀枝花市| 黎川县| 新民市| 西和县| 江陵县| 徐汇区| 文成县| 永善县| 若羌县| 高唐县| 荔浦县| 万荣县| 兴隆县| 丰原市| 新绛县| 融水| 琼中| 西昌市| 泸溪县| 潮安县| 江都市| 朝阳区| 长垣县| 长海县| 博罗县| 巴彦淖尔市| 湖州市| 康定县| 双城市| 太康县| 普兰县| 河东区| 峡江县| 禄丰县| 岗巴县| 伊宁市| 玛纳斯县| 府谷县| 尼木县|