12306火車票訂票系統的伸縮擴充套件
本文來自Pivotal,分析了中國鐵路總公司12306這個世界上最大的鐵路系統的火車票預訂系統。
在這個星球上人類最大的年度運動大概算是中國農曆新年,又稱春節。有3488萬人次透過航空和235萬人次透過鐵路踏上他們的旅途。從歷史上看,鐵路旅行意味著排長龍隊伍買票,中國鐵路總公司(CRC)現在開始在網上賣火車票,提供比車站售票處或透過電話購買更方便的方法。
隨著越來越多人的使用車票預訂系統,12306鐵路訂票系統打破了其傳統的RDBMS關聯式資料庫系統,需要重新開始了一個新的專案,以改善原有系統效能和可伸縮性的問題,能夠承受像春節度假旅遊期間的尖峰的壓力。目前該網站成為中國最受歡迎網站的之一。在這樣嚴苛的訪問條件下,系統出現以下很差使用者體驗:使用中斷,效能差,預訂錯誤,支付失敗,票務確認出現問題等等。
中國鐵道科學研究院的副主任朱劍聖首先解決效能問題,早在2011年,朱博士確保新系統解決基於下面兩個效能瓶頸:
1.關係型資料庫超負載,以至於不能處理傳入的請求,無論是規模擴充套件性還是可靠性,都不能滿足SLA要求的水平。
2.UNIX伺服器的計算能力不足以解決容量需求。
朱博士說:“傳統關係型資料庫和大型機的計算模式並不具有擴充套件性,系統不能基於記憶體擴充套件跨多個節點上執行。我們的網站證明了這一點,而試圖擴充套件我們的遺留系統將變得非常昂貴”。
使用In-memory記憶體資料網格解決擴充套件性和可靠性
朱博士的團隊開始尋找新的解決方案,大型機被發現和關聯式資料庫有同樣的瓶頸,在記憶體資料網格(IMDG)領域,他們發現了Pivotal GemFire,在海運貨物系統 金融服務,航空,電子商務等多個行業都擁有成功解決最具挑戰性的資料問題的良好記錄。為了執行評估,朱博士和他的團隊選擇了國際綜合系統公司(IISI)。IISI擁有強大為政府機構工作的跟蹤記錄,包括在開發交通運輸解決方案,遷移遺留系統到雲端計算架構等方面經歷,有與Pivotal GemFire合作經驗。他們開始試點,相信了GemFire將滿足效能,可擴充套件性和可用性的要求,包括能夠在低成本硬體上執行。
IISI創造了一個概念證明和展示了GemFire幾個優點。售票計算速度提高50到100倍。當負載增加時,響應時間保持10-100毫秒的延遲。他們可以看到,透過增加容量,能實現近乎線性增長的可擴充套件性和高可用性的能力。專案組在短短兩個月內建立了一個試點,四個月後,新的線上系統全面部署,跨越5700火車站。
該小組負責鐵路網上預訂系統每年增長高達50%。他們的網站每天的平均水平預訂250萬票。
72臺UNIX系統和關聯式資料庫換成了10臺初始和10個備份的x86伺服器,這是一個更具成本效益的模式,能在記憶體中處理2TB或一個月的的火車票資料。
朱博士認為:“首先,Pivotal GemFire提供了一個在真實的測試環境的證明。然後,在生產環境面對意想不到的尖峰也是成功的,具體採取了一個迭代的方法來部署,克服了一系列大規模的挑戰。在最近的2013春運期間,該系統具備了執行穩定的效能和正常執行時間。現在,我們有一個可靠,經濟合理的生產體系,支援記錄容量增長的空間。這個規模實現10-100毫秒的延遲。”
基於高可用性,冗餘和故障切換機制上的GemFire提供了連續正常執行,它已超出了所有在該領域的CRC校驗的指標,並幫助他們維護他們的SLA。
[該貼被banq於2014-01-26 17:27修改過]
相關文章
- PostgreSQL與12306搶火車票的思考SQL
- 建設一個靠譜的火車票網上訂購系統
- Python3.6實現12306火車票自動搶票Python
- 車票100–火車票介面開發文件
- 火車票軟體分享
- Java+SpringBoot+vue+element實現火車訂票平臺管理系統JavaSpring BootVue
- 伸縮擴充套件Node.JS應用套件Node.js
- 使用Slice擴充套件伸縮OpenJPA 應用套件
- 12306火車票搶票Python程式碼最新完整版釋出,五一搶票就靠它了!Python
- 注意!12306網站和APP買火車票時間提前網站APP
- Python火車票程式碼薦Python
- 非推倒重來式的讀/寫伸縮擴充套件套件
- 別人付費刷票,我用Python自動搶火車票Python
- 火車票區間演算法 設計演算法
- 忘記12306!用 Python3 實現自己的火車票檢視器!Python
- 教你用Python動重新整理搶12306火車票,附原始碼!Python原始碼
- java電影院訂票選座系統ssm框架JavaSSM框架
- 線上電影訂票系統 - 資料庫建模資料庫
- 線上電影訂票系統 - Vue學習心得Vue
- 多執行緒賣火車票簡單例子執行緒單例
- Java語言多執行緒實現一個火車站賣票系統Java執行緒
- Python3實現搶火車票功能(下)Python
- windows系統磁碟擴容/擴充套件Windows套件
- 談談搶火車票的技術、技巧,以及暗藏其中的套路
- 印度遊戲平臺Dream11如何伸縮擴充套件他們的遊戲中臺?遊戲套件
- 擴充套件系統的磁碟空間套件
- 奧普快票通表票掃描識別系統
- 搶票軟體幾分鐘圈走整列車車票 開發者被捕
- 使用Python實現一個小型的航空訂票系統(3)Python
- 使用Python實現一個小型的航空訂票系統(1)Python
- PHP的LZF壓縮擴充套件工具PHP套件
- UNDO SEGMENT的擴充套件和收縮套件
- 票據系統設計
- aix擴充套件檔案系統AI套件
- aix 擴充套件檔案系統AI套件
- 最新12306搶票爬蟲爬蟲
- 用PyQt5編輯 12306車票資訊爬取程式QT
- 父子元件通訊——模擬12306購票新增乘車人元件