12306IT系統:
12306以前的IT系統主要采用Superdome小型機(具體型號不詳)+HP-UX+Sybase ASE數據庫。但在發現性能不足之后全部改為x86+Linux平臺,基本配置為(大約)17臺多路至強E7服務器(具體路數不詳),每節點1TB內存,而數據庫則應該還是Sybase ASE(只不過數據庫全部放在內存中運行,想要換數據庫難度太高,停機時間太長)。
12306系統在2013年春運中的峰值負載約為11萬TPS,新的系統在2013年雖然時有崩潰,但都能在短時間內恢復,而這也說明新系統基本抗住了2013年的春運壓力。11萬TPS的水平與2012年淘寶雙11時水平相當。
12306痛點分析:
從12306在2013年春運高峰時每日放票400萬張的水平來看,12306雖然在總量上不及13年淘寶雙11的水平,但因為12306放票主要集中在10個放票時段,而余票在每個時段剛開始的3分鐘內就能夠基本售罄,所以12306所承受的壓力基本可簡化為30分鐘內承受300多萬的放票,當然,還要有更多的刷新和查詢請求。如果以這個標準來衡量,12306所面臨的壓力堪稱全球最大。
另外,12306的每一次出票都會對原有數據庫進行更新,交易關聯度更大。而淘寶雙11的交易則分散在了眾多商家中,雖然每次交易也會對數據庫進行更新,但其密集程度和關聯程度仍不及12306.
為什么不用IBM或者Oracle系統?
這是個尖銳的問題,拋去信息安全和貿易保護的因素不談,王強給出的答案是IBM Power系統無法與12306現有的系統做到靈活擴展,升級也無法做到不停機。另一方面,IBM Power解決方案在金融方面表現突出,但針對12306這種典型的票務系統,優勢則并不明顯。當然,價格因素也必須考慮在內(以經驗來看,通常小型機及其他核心系統每年的維護費用約為整套系統采購價格的20-30%,甚至更高)。而Oracle的解決方案也有著類似的問題。
王強表示,實際上12306在之前就已經接觸過包括IBM和Oracle在內眾多全球頂級IT解決方案提供商。但這些提供商紛紛以各種理由拒絕了合作(也包括其解決方案在靈活性、擴展性等方面不符合12306需求的情況)。
為什么不讓阿里巴巴來做?
作為國內IT應用水平最高的公司之一,12306當然也不會忘記向阿里巴巴取經。王強在文章中表示,阿里巴巴團隊實際上已經參與到了12306系統的建設中來,并且幫助12306構建了其排隊系統,這一系統對于幫助12306系統免于徹底崩潰起著巨大作用(免于崩潰指的是系統后端的數據庫等核心系統,而對于前端的卡死和崩潰原因目前仍沒有確切的定論)。當然,由于兩種應用本身的區別性很大,阿里巴巴團隊也沒能在更大的層面上幫助12306。
怎么拯救12306?
王強在文中并沒有直接給出這個最核心問題的答案,不過從以上的分析來看,12306系統的主要問題集中在單個處理節點的處理能力以及系統總線的峰值吞吐量上。而12306已經將數據庫放在了內存上,而每個節點的內存容量達到了1TB的量級,從目前的情況來看,這已經是目前IT的最高水平,短期內再無其他辦法(12306采用了Pivotal的GemFire分布式內存數據平臺,該平臺雖然宣稱可以通過增加服務器規模線型提升性能,但從實際的情況來看17臺多路E7應該就是其性能上線了)。
客觀來講,王強所給出的分析還是非常理性的,而就目前整個業界的IT水平來講,12306確實已經站在了最前沿,雖然其效果仍不夠理想,但其努力仍然是值得肯定的。相信隨著單個處理器性能的增強,內存總線帶寬的增加,數據中心網絡帶寬的增加以及延遲的降低,12306的表現會越來越好,當然,這個過程可能會比我們所期望的要漫長很多。