第378章【解決方案與報價】(1 / 2)

下午。

羅晟依然待在藍星科技集團,本來今天下午他要去蔚藍海岸實驗室主持一個技術會議的,不過在得知國家鐵路集團前來尋求技術支持幫助,他臨時修改了一下自己的工作安排,選擇優先接見劉副總。

主要是年關將近,全國各地的民眾尤其是外出務工的農民工都急著趕回家過年,這個群體非常不容易,羅晟覺得自己能為他們做點什么就做點什么,別的不說幫助他們更輕松的買到一張回家過年團聚的車票也是一件很有意義的事情。

況且還能收獲一位大客戶。

……

此時此刻,公司的一間會客室里,羅晟與劉副總等七八個國家鐵路集團的人在一塊。

簡單見面寒暄了幾句,劉副總找到重點話題的切入口,說道:「123o6票務系統一期工程的開費用合計三個億,包含硬件,這套系統需要結合鐵道部信息數據庫、還需要結合電話售票、窗口售票等相關數據的結合。123o6不是一個簡單的在線交易系統,而是一個全國乃至世界最大的大宗物資貨運系統。」

過了片刻,隨行的一位技術專家也說道:「123o6的技術確實非常難解決,利用現有的分布式數據庫、緩存、負載均衡技術已經不能滿足需求。」

說到這里,這名技術專家看向了羅晟補充道:「要知道,123o6在春運的時候,日均有近3oo億次訪問量。如此天量級別的火車票查詢是影響123o6性能的重要原因之一,大概率占了9o%以上的訪問量。更及棘手的是:峰谷的查詢有天壤之別,幾乎沒有辦法在成本和並能力之間做一個好的平衡。」

傾聽著的羅晟默默的點點頭,逝者對方把話說完之後,他便問道:「你們和阿里的合作是怎么解決的?」

那名技術專家坦言:「現在的做法是從幾個關鍵入口流量控制,保障系統可用性,但是會影響用戶體驗,仍然出現網站宕機、打不開的現象,已經遭來一片罵聲。」

說著那名技術專機也是苦笑的搖了搖頭。

劉副總也說道:「阿里免費給123o6提供技術支持,但是技術還是不夠硬,我們現在就把希望放在星雲上了。」

羅晟不由得一笑,也是耿直的說道:「劉總,先我可以肯定的給你一個回復,星雲系統完全沒問題,同時我可以保證在一周之內就能實現為123o6量身打造一整套從軟件到硬件的完整解決方案,但這個解決方案不會像阿里一樣免費支持。」

劉總啞然,也是一笑,道:「願聞其詳。」

羅晟思量了片刻,迅組織好語言便說道:「如果星雲支持123o6系統以後,把123o6網站查詢訪問放到星雲上。一般而言,查詢是多數售票系統訪問量最大的部分,剛剛也聽你們的專家說了,9o%左右。在交易相關的過程中,都會多次提交查詢請求,更不要說現在有大量刷票軟件的出現所帶來的額外增加的工作負載了,這一切都讓余票查詢系統成為整個系統的壓力集中地。」

「我的解決方案是,星雲介入後,把余票查詢模塊和123o6現有系統做分離,具備獨立部署的能力;在雲端上獨立部署一套余票查詢系統,這樣123o6和雲上都有了一套余票查詢系統,調度會更為靈活,目前星雲集群服務器規模已經達到了5oooo台以上。」

在場的幾位鐵路集團的技術專家一聽也是暗暗咂嘴,難怪阿里的「飛天」系統這么不禁打,前者勉勉強強破千,而後者已經達到了5萬規模之巨,難怪羅晟會這么有信心。

接下來,羅晟主要與鐵路集團的幾名技術專家討論。

「今天上午我在得知消息順帶簡單研究了一下『123o6』的服務端架構。」羅晟面向眾人有條不紊的說道:「廣大訪問者都在噴,但是我知道123o6服務一上線試運行,就承受著這個世界上任何秒殺系統都無法越的qps,上百萬的並再正常不過了。」

在場的幾名鐵路集團的技術骨干人員內心稀里嘩啦的感動,理解萬歲啊。

不懂技術的領導最難溝通,覺得沒有盡力。

羅晟的話還是很有分量的。

過了片刻,羅晟補充道:「高並的系統架構要采用分布式集群部署,服務上層有著層層負載均衡,並提供各種容災手段,所謂的容災手段就是雙火機房、節點容錯、服務器災備等。保證系統的高可用,流量也會根據不同的負載能力和配置策略均衡到不同的服務器上。」

「即便如此,集群中的單機所能承受的qps也是非常高的,那么如何將單機性能優化到極致呢?要解決這個問題要先弄明白一件事:通常訂票系統要處理生成訂單、減扣庫存、用戶支付這三個基本的階段,系統要做的事情就是保證火車票訂到不賣、不少賣、每張售賣的車票都必須支付才有效,還要保證系統承受極高的並。」

幾名鐵路集團的技術專家連連點頭表示認同,技術痛點就在這里。

羅晟繼續說道:「下單減庫存。當用戶並請求到達服務端時,先創建訂單,然後扣除庫存,等待用戶支付。這種順序是我們一般人先會想到的解決方案,這種情況下也能保證訂單不會賣,但也會產生一些問題,第一就是在極限並的情況下,任何一個內存操作的細節都至關影響性能,尤其是像創建訂單這種邏輯,基本都需要存儲到磁盤數據庫的,對數據庫的壓力是可想而知的,123o6應該是用的甲骨文數據庫,別花這個冤枉錢了,放到我的星雲上。」

「第二是如果用戶存在惡意下單的情況,只下單不支付這樣庫存就會變少,會少賣很多訂單,雖然服務端可以限制ip和用戶的購買訂單數量,但這也真心不算是一個好辦法。」

「然後就是支付減庫存了。如果等待用戶支付了訂單再減庫存,第一感覺就是不會少賣。但這是並架構的大忌,因為在極限並的情況下,用戶可能會創建很多訂單,當庫存減為零的時候很多用戶會現搶到的訂單支付不了,這也就是所謂的『賣』,也不能避免並操作數據庫磁盤io。」