標籤:

恆泰金服金融雲架構演變與實錄

一個好的架構是靠演變而來,而不是單純的靠設計。恆泰金服雲架構師陳申表示,剛開始做架構設計,我們不可能全方位考慮架構的高性能、高擴展、高安全等各方面因素。隨著業務需求越來越多、業務訪問壓力越來越大,架構會不斷進行演變及進化,從而形成一個成熟穩定的大型架構。如淘寶網、Facebook等大型網站的架構,無不是從一個小型規模架構,經過不斷進化及演變,最終成為一個大型網站架構。

架構初始階段:單機時代

初期接手恆泰金服這個項目時,資源有限,人力不足,最初整個團隊的精力全部放在產品功能的開發上。

為了快速開發產品,單機往往是一個不錯的選擇,此時會將應用程序、文件服務、資料庫服務等資源集中在一台 Server 上。系統只有一個應用,相應地,代碼放在一個工程里管理,打包成一個應用,部署在一台機器上,在一個DB里存儲數據。單體式應用的架構如下圖所示:

架構分離階段:物理分離應用、資料庫以及文件存儲

隨著用戶不斷增長,業務需求越來越多,單體應用系統的業務訪問壓力越來越大。部署在一台伺服器上面的web應用及資料庫等服務應用,會對伺服器的CPU/內存/磁碟/帶寬等系統資源進行競爭,大量的web請求被堵塞,顯然單機已經出現性能瓶頸。為了解決性能問題,需要將資料庫單獨部署,文件採用分散式的存儲方式(OSS),靜態資源訪問加入CDN等,並採用動靜分離的方式,有效解決伺服器在磁碟IO、帶寬方面的訪問壓力。架構圖如下:

架構應用分布階段:負載均衡、資料庫緩存

單機時代,做了不少措施來緩解資料庫層的壓力,包括伺服器分離、動靜分離等,但隨著訪問量的猛增,對高可用性的要求越來越高,此時減輕應用層壓力、解決單點問題是當務之急。為此需要引入集群,分散式管理系統,提供可擴展性,並對數據層引入緩存機制,減少對資料庫的頻繁操作,減輕資料庫壓力。此時架構如下圖所示:

架構集群擴展階段:垂直擴展、水平擴展

垂直擴展的意思是給系統中的單節點增加資源,為操作系統和應用模塊提供更多可共用的資源,使虛擬化的技術能夠運行的更加有效。

業務層面,將功能模塊按業務拆分,主要分為賬戶模塊、訂單交易模塊、支付模塊、標的產品模塊、紅包活動模塊及其他模塊,不同模塊分到不同伺服器單獨部署。資料庫層,雖然結合了緩存,壓力還是很大,通過讀寫分離,並結合業務拆分,按業務將資料庫分為不同的資料庫表,把不同的庫部署到不同的伺服器中。

水平擴展的意思是指給系統增加更多的節點,例如為一個分散式的軟體系統增加新的機器,一個更清晰的例子是將一台web伺服器增加為三台或者更多。

業務拆分之後,對拆分後的服務增加更多的server進行水平擴展,引入消息隊列,解決業務間的過多耦合。同時對負載均衡進行擴展,因為單台SLB存在崩掉的風險,也有性能方面的限制。數據層面,當單表的數據量達到一定級別後,即使再簡單的SQL也會存在性能問題,此時對錶進行水平分表操作,降低數據的讀寫壓力。

最終整體架構圖如下:

好的系統架構的形成不是一蹴而就的,是根據業務需求不斷演變,一點一滴積累起來的,只有能夠支撐業務需求,具有良好的擴展性、穩定性的架構才是系統所適用的。


推薦閱讀:

融資租賃資產證券化的前景怎樣?
手裡只有兩萬塊,如何迅速翻倍?
探討消金、現金貸新潮流,金融高管會11.8消金百人會在京舉辦
免費閱讀-全冊IPO資料(共230 份文件)
同盾科技馬駿驅:八達通總構架師的大數據風控新征程

TAG:金融 |