每年的春運都堪比一次人類(lèi)大遷徙,10年前買(mǎi)回家的票都要搬個(gè)小板凳去火車(chē)站排隊,如果能買(mǎi)到還算是萬(wàn)幸,再趕上一些人家住在小山村,還要到大站轉乘長(cháng)途汽車(chē)。可以說(shuō),每次回家都是一次痛與樂(lè )并存的體驗。然而隨著(zhù)科技互聯(lián)網(wǎng)的發(fā)展,12306網(wǎng)上購票系統逐漸走進(jìn)人們的視野,時(shí)至今日已經(jīng)成為主流的購票手段之一。

當12306走向云端 人們還在為買(mǎi)票發(fā)愁嗎12306算得上是世界上規模最大的實(shí)時(shí)交易系統之一,購票人數可能達到數億級別,意味著(zhù)放票的時(shí)候你可能會(huì )同時(shí)遭遇上億的競爭對手。此時(shí),網(wǎng)站的處理能力和實(shí)際訪(fǎng)問(wèn)需求難以跟上,直接結果就是網(wǎng)站打不開(kāi)或者系統不穩定。起初,12306曾想過(guò)用分線(xiàn)路分時(shí)段的方法進(jìn)行分流,不過(guò)效果并不明顯,畢竟用戶(hù)不會(huì )那么“自覺(jué)”的去分批買(mǎi)票。
乍看之下,12306有點(diǎn)像電商系統,車(chē)票就是售賣(mài)的商品,未出售的車(chē)票就是庫存。不過(guò)仔細與淘寶、天貓等電商網(wǎng)站對比之后,就會(huì )發(fā)現12306的業(yè)務(wù)屬性要復雜很多。例如,北京到上海的1461車(chē)次一共有30個(gè)停靠站,假設一個(gè)人從北京出發(fā),那么他可能選擇廊坊北到上海29個(gè)停靠站作為自己的終點(diǎn)站,所以單個(gè)1461車(chē)次,一次座位復用計算最多涉及30*(30-1)/2=435個(gè)商品(SKU)。如果再算上不同類(lèi)型的車(chē)票(臥鋪、硬座和站票),則共有1305種產(chǎn)品。看到了吧,這可不是簡(jiǎn)單的庫存疊加,還要結合一些人性化的因素。
在去年初的春運期間,12306網(wǎng)站的單次訂票交易平均響應時(shí)間為0.5秒、網(wǎng)站PV值日均超過(guò)400億次,在云端的查詢(xún)次數日均高達250億次。
如果要回溯12306的上云之路,還要從2014年說(shuō)起,那時(shí)候12306就開(kāi)始與阿里云的工程師探討如何把余票查詢(xún)系統放到云上。在之后的春運售票期間,12306將75%的余票查詢(xún)業(yè)務(wù)切換到了阿里云上。當時(shí),主要考慮的是將業(yè)務(wù)系統在前端WEB以滿(mǎn)足高流量、高并發(fā)的需求。同時(shí),云計算資源的伸縮性也能大幅節省成本支出,而將余票查詢(xún)(而非核心系統)托管在公有云上,還能避免敏感性資料泄漏,保護用戶(hù)數據安全。
“云化”后的余票查詢(xún)系統能夠做到按需獲取所需要的服務(wù)器虛機資源,可以動(dòng)態(tài)調整網(wǎng)絡(luò )帶寬,利用這些可擴展資源,解決在高流量和高負載情況下,系統無(wú)法快速彈性擴展導致的性能瓶頸和系統崩潰。此外,兩地三中心混合云模式提高了12306的災備能力。

兩地三中心混合云
在子系統上云的一期改造之后,12306開(kāi)始利用GemFire(Pivotal企業(yè)級大數據PaaS平臺的一部分)改造訂單查詢(xún)系統。在改造過(guò)程中,12306并沒(méi)有用傳統的Unix小型機,而是大膽的選擇了x86服務(wù)器,采用10幾臺X86服務(wù)器實(shí)現了以前數十臺小型機的余票計算和查詢(xún)能力,單次查詢(xún)的最長(cháng)時(shí)間從之前的15秒左右下降到0.2秒以下,縮短了75倍以上。
Pivotal Gemfire分布式內存數據平臺是通過(guò)云計算平臺技術(shù),將諸多X86服務(wù)器內存集中起來(lái),形成一個(gè)資源池,然后將全部數據加載到這個(gè)資源池之中,進(jìn)行內存計算。同時(shí),為了提高災備能力,Gemfire還在集群中保存了多份數據,這樣當一個(gè)機器故障后,并不會(huì )影響整個(gè)系統的運行,也不會(huì )造成數據缺失。

GemFire架構12306在經(jīng)過(guò)Gemfire改造后,能夠通過(guò)客戶(hù)業(yè)務(wù)邏輯性和數據關(guān)聯(lián)性,將關(guān)聯(lián)性強的數據放置到同一個(gè)服務(wù)器節點(diǎn),進(jìn)而提升系統性能;同時(shí),根據測試,可以得出結論,由X86服務(wù)器為基礎搭建的應用云平臺可以隨著(zhù)客戶(hù)業(yè)務(wù)增長(cháng),增加服務(wù)器數量,能夠保持系統性能隨著(zhù)服務(wù)器增加幾乎保持線(xiàn)性增長(cháng)。
經(jīng)歷了兩地三中心混合云架構應用和Pivotal Gemfire改造后,12306達到每秒至少支持10000 TPS以上,基本滿(mǎn)足高并發(fā)需求。通過(guò)GemFire多集群技術(shù),實(shí)現多重的高可用性,確保高峰壓力和系統異常的情況下保證業(yè)務(wù)的持續性。
隨著(zhù)數據中心計算、網(wǎng)絡(luò )、存儲性能的不斷提升,所承載的業(yè)務(wù)載荷也會(huì )隨之增加,公有云的靈活擴展優(yōu)勢顯著(zhù)。不過(guò)倒票的黃牛黨也從線(xiàn)上跑到了線(xiàn)上,這就需要云環(huán)境不僅需要強大的基礎支撐,還要有智能化的抵御機制。舉個(gè)例子,12306后臺的沖突判別系統可以分析購票行為,包括監測異常賬戶(hù)、地址遷移、漏洞篩查等,對一些高頻IP進(jìn)行有效處理。
總的來(lái)說(shuō),云計算和大數據技術(shù)對于傳統業(yè)務(wù)架構的顛覆毋庸置疑,而阿里云和12306的牽手也算是一次成功的應用。未來(lái),當智能化手段更多地賦能于日常生活的方方面面,人們也將受益于這種紅利,最終讓出行變得更加便捷和高效。