[轉]12306:分佈式內存數據技術爲查詢提速75倍

背景和需求數據庫

  中國鐵路客戶服務中心網站(www.12306.cn)是世界規模最大的實時交易系統之一,媲美Amazon.com,節假日尤爲是春節的訪問高峯,網站壓力巨大。據統計, 在2012年初的春運高峯期間,天天有2000萬人訪問該網站,日點擊量最高達到14億。大量同時涌入的網絡訪問形成12306幾近癱瘓。 中國鐵道科學院電子計算技術研究所做爲12306互聯網購票系統的承建單位,急需尋求辦法解決問題。服務器

  成功解決:速度提升75倍以上網絡

  2012年3月開始,鐵路總公司(原鐵道部)開始調研、改造12306。2012年6月選擇了Pivotal GemFire分佈式內存計算平臺(Distributed In-memory computing)改造12306,由鐵科院項目小組負責人王明哲主任和資拓宏宇(IISI)信息科技有限公司在鐵科院主管朱建生所長領導下提供技術實施。一期先改造12306的主要瓶頸——餘票查詢系統。9月份完成代碼改造,系統上線。2012年國慶,又是網上訂票高峯期間,你們能夠顯著發現,能夠登陸12306,雖然仍是很難訂票,可是查詢餘票很快。2012年10月份,二期用GemFire改造訂單查詢系統(客戶查詢本身的訂單記錄)。2013年春節,又是網上訂票高峯期間,你們能夠顯著發現,能夠登陸12306,雖然仍是很難訂票,可是查詢餘票很快,並且查詢本身的訂票和下訂單也很快。架構

  根據系統運行數據記錄,技術改造以後,在只採用10幾臺X86服務器實現了之前數十臺小型機的餘票計算和查詢能力,單次查詢的最長時間從以前的15秒左右降低到0.2秒如下,縮短了75倍以上。2012年春運的極端高流量併發狀況下,系統幾近癱瘓。而在改造以後,支持每秒上萬次的併發查詢,高峯期間達到2.6萬個查詢/秒吞吐量,整個系統效率顯著提升。如上圖所示。併發

  訂單查詢系統改造,在改造以前的系統運行模式下,每秒只能支持300-400個查詢/秒的吞吐量,高流量的併發查詢只能經過分庫來實現。改造以後,能夠實現高達上萬個查詢/秒的吞吐量,並且查詢速度能夠保障在20毫秒左右。異步

  新的技術架構能夠按需彈性動態擴展,併發量增長時,還能夠經過動態增長X86服務器來應對,保持毫秒級的響應時間。分佈式

  夢裏尋它:技術革命一步跨越三代oop

  12306可以取得這樣翻天覆地的效果,靠技術上的小修小補是不可能的,必須有全新的思路,可以給性能提高帶來槓桿式的做用。12306發現GemFire分佈式內存數據平臺就是這樣一種技術。性能

  GemFire分佈式內存數據平臺的技術原理如上圖所示:經過雲計算平臺虛擬化技術,將若干X86服務器的內存集中起來,組成最高可達數十TB的內存資源池,將所有數據加載到內存中,進行內存計算。計算過程自己不須要讀寫磁盤,只是按期將數據同步或異步方式寫到磁盤。GemFire在分佈式集羣中保存了多份數據,任何一臺機器故障,其它機器上還有備份數據,所以一般不用擔憂數據丟失,並且有磁盤數據做爲備份。GemFire支持把內存數據持久化到各類傳統的關係數據庫、Hadoop庫和其它文件系統中。大數據

  你們知道,當前計算架構的瓶頸在存儲,處理器的速度按照摩爾定律翻番增加,而磁盤存儲的速度增加很緩慢,由此形成巨大高達10萬倍的差距(如上圖)。這樣就很好理解GemFire爲何可以大幅提升系統性能了。

  按照計算與存儲的關係,咱們能夠將計算架構分爲四代:

  第一代,基於磁盤的單一系統:計算過程當中須要從磁盤讀取數據。小型機、大型機是其中的佼佼者,將單一系統的性能作到極致。

  第二代,基於磁盤的分佈式集羣系統:計算過程當中須要從磁盤讀取數據,但經過分佈系統將數據分散到不一樣的服務器磁盤上,提升整個系統的處理能力。目前不少大型互聯網和電子商務公司採用基於X86服務器的分佈式集羣系統,依靠海量的X86服務器部署解決高流量併發的問題。

  第三代,基於內存的單一系統:將整個數據庫放在內存中,計算過程不須要從磁盤讀取數據。整個系統的性能取決於單一系統的性能。傳統的內存數據庫就是這樣的系統,對於企業級的應用能夠很好地解決訪問速度的問題,但面對海量數據或是海量併發訪問的擴展性問題就無能爲力。

  第四代,基於內存的分佈式集羣系統:GemFire就是這樣的系統,並行計算是其關鍵技術之一,於是能夠經過增長服務器部署規模,在內存計算的基礎上,線性擴展性能。

  12306以前採用Unix小型機架構,採用GemFire技術改形成Linux/X86服務器集羣架構,就意味着一下跨越三代。從小型機到大內存X86服務器集羣,不只讓性能提高了一個數量級,並且成本也要低得多。

  GemFire是Pivotal企業級大數據PaaS平臺的一部分。Pivotal公司的企業級大數據PaaS平臺主要有三個層次:雲基礎架構層Cloud Fabric、大數據基礎架構層Data Fabric、應用開發基礎架構層Application Fabric。GemFire屬於大數據基礎架構層,此外,Greenplum數據庫也屬於這一層;雲基礎架構層的技術是Cloud Foundry;應用開發基礎架構層的技術是Spring Framework和RabbitMQ等。

  對於這次引入GemFire技術的改造,中國鐵道科學研究院電子計算技術研究所副所長朱建生表示:「經過技術改造解決了困擾咱們多時的尖峯高流量併發問題,讓全國人民再也不由於技術緣由而抱怨,咱們終於舒了一口氣。Pivotal GemFire分佈式集羣內存數據技術對整個技術改造發揮了關鍵的做用。同時,感謝Pivotal公司及其實施方項目團隊的努力,在技術開改造過程當中確保舊系統順暢運行、舊系統到新系統平滑遷移,快速實現新系統的上線。」

相關文章
相關標籤/搜索