分佈式系統架構實踐
五彩石項目並沒有以淘寶網或者淘寶商城的架構爲基礎進行演化式的改進,而是進行了比較徹底的重構,是一次全新的架構升級, 是分佈式技術跨時代之進步。
在做系統整合之前,整個架構和非互聯網的軟件廠商架構是一樣的,基礎架構基於商業數據庫、小型機、高端存儲設備,業務系統架構是端到端的煙囪式架構。
簡單來說,每個業務版塊都是一個獨立系統,公共的數據都是訪問數據庫的,沒有形成公共的服務層。端到端的架構優勢是小規模團隊作戰,速度會很快,各種複雜的需要一般都只需在一個系統即可完成,而且研發同學對整個系統都很熟悉,系統運維都比較簡單,同時系統的穩定性也比較高。
隨着業務複雜度的提升,系統規模的不斷擴展,這種架構也開始出現問題。包括如下挑戰:
業務研發效率比較低
業務研發效率也導致了業務的擴展性受限,做一個新的市場也必須重新開始建設,而不能重用一些業務模塊。
系統擴展性較弱
因爲數據庫連接的關係。應用服務器的擴展規模受限制,別外數據庫本身的容量也會因爲小型機的計算能力而受限。
技術升級受限
比如要對數據庫進行擴展或者修改,需要修改多個系統,然後再對多個系統進行迴歸測試,同樣對熱點數據增加緩存,也需要對多個系統進行修改。
通過抽象和梳理,本質上我們需要解決的第一個問題,就是業務的擴展性問題,然後需要解決因爲這個問題帶來的技術擴展性問題。
1、業務擴展性問題之解決
爲了解決業務擴展性問題,首先需要建立共享服務層。把公共的業務元素抽離出來形成共享的服務。
比如、、等應用,這些都需要用到會員服務,那麼就把會員服務作爲共享服務抽取出來,任何系統需要獲取會員信息時只需通過調用會員服務的API就可以,而不需要每個業務方自己再開發一套會員系統。
同樣思路,把電商業務公共的服務,如商品服務、交易服務、營銷服務、店鋪服務、推薦服務、庫存、物流等從各個業務抽離出來建設成共享服務,後續新建的業務市場均基於這些公共的電商元素來構建。
共享服務層的建立很好地對橫向業務提供了統一的數據和服務收口,例如手機淘寶、安全、商家服務這三個橫向的業務就非常依賴共享服務。
如下列表:
手機淘寶通過共享服務得到了業務輸出的一致性和統一性
安全上,比如對商品數據做統一治理
商家服務則使用了共享服務開發TOP平臺,來對接外部商家的工具包
各個共享服務之間形成了比較的隔離,保障各個共享服務獨立的發展空間,每個共享服務之間有互相關聯,又互相獨立。
在系統建設上,把交易和商品兩個服務中心完全獨立的團隊和獨立的系統去建設。
商品服務中心和交易服務中心是完全獨立的兩套共享服務,所以在業務發展層面比較獨立,系統間又不互相影響。
這使得商品相關的業務全部封閉在商品服務中心裏,交易相關的業務全部封閉在交易服務中心裏,架構的域之間形成低耦合、高內聚。由於隔離做得比較好,沒有業務之間的複雜交錯,所以各個業務領域發展創新不受限制。
值得一提的案例就是早期支付業務慢慢成爲支付寶,物流業務發展爲菜鳥物流,而TOP從給商家提供API演化爲服務商家的聚石塔。
2、技術擴展性問題的解決
第二個問題就提技術擴展性。『房子千奇百怪,但是磚頭都是一樣的』。
利用共享服務解決了業務擴展性的問題,它的.好處是新構建一個業務市場變得非常容易和快捷,同時任何數據結構的變化只需在一個地方改變。
帶來的挑戰是系統分佈式後對於研發來說,要關注分佈式本身。這是我們不希望的,我們希望開發人員仍然像之前開發單機版的軟件一樣開發軟件,把分佈式的控制在一些通用的組件裏面。
這就需要引入解決分佈式問題的中間件技術。
當時並沒有商業軟件可以使用,也沒有合適的開源產品可以選。五彩石項目第一次大規模使用了中間件。系統分佈式後,需要有一套統一的組件來解決分佈式引發的共性技術問題。比如提供服務的發現機制、提供服務的分組路由機制、同機房優先機制等。我們將其沉澱在一個框架裏,這個框架被稱爲HSF。
爲了解決單庫性能瓶頸問題,使用分庫分表的技術,這個技術被沉澱在TDDL框架上面。
爲了解決分佈式事務的性能問題,把原本一個事務的工作拆成了異步執行,同時必須要保證最終數據的一致性,我們採用了消息發佈訂閱的方式來解決,這個消息框架就是Notify。
有了HSF、TDDL、Notify這『三大件』,有效地解決了應用分佈式後引發的技術擴展性問題,同時讓整個系統的技術架構變得依舊如當七年級樣的簡。
如果系統計算能力不夠,基本上能做到只需要增加服務器即可。共享服務層和分佈式中間件使頻繁的業務變化封閉在了一個適合的系統層,同時技術的變化也隔離在了一個合適的範圍。如下圖所示:
爲了解決業務擴展性問題,通過抽取共享服務層,在非常低的試錯成本下涌現出來大量新的業務市場,推動了阿里電商業務的快速發展,同時共享服務本身也隨着業務發展起到了越重要的作用。比如庫存中心服務的抽取,使得和商家對接的供應鏈領域得到了快速發展。
爲了解決技術擴展性問題,引入了分佈中間件技術。擴展服務器的存儲和計算能力變得只需要增加服務器就可以輕鬆解決,研發過程不需要關注分佈式帶來的的理解上的困難。分佈式中間件的本質是讓多臺廉價的PC服務器可以組成一臺超級計算機。
通過五彩石項目,阿里技術完成了一次偉大的技術變革,爲後續的持續架構演進打下了堅實基礎。沉澱了一套『共享服務化』的架構理念,以及一套與該架構理念相對應的分佈式中間件技術。
這個架構理念和這套分佈式中間件技術在後續阿里的業務和技術發展上被大範圍使用,同時也被業界很多互聯網公司所借鑑。
相關文章
-
關於分佈式系統架構
對於軟件架構,更多的是一種思想,即內功修爲。在道與術層面,則更偏重道的修煉,道的深度決定架構的境界。相對而言,術是手段,隨不同的環境應運而生,就像太極劍法和獨孤九劍,能做到隨境而變。 架構是一種權衡沒有一種架構可以 -
什麼是系統架構師-如何成爲系統架構師
系統架構師是在某一個技術領域有深刻專研的技術達人?還是在技術面上涉獵廣泛的通才?抑或有個五六年的工作經驗之後就自動變成了架構師?相信下面的文章對你的疑惑有所幫助!新入門或沒有架構設計經驗的程序員剛開始的時 -
系統架構設計模式大全
目前系統架構大約有110多種設計模式,模式不是教條,模式僅僅是經驗的總結,下面小編爲大家整理了一些系統架構設計模式,一起來看看吧:Domain Model:定義了一個應用領域結構和工作流的精確模型,其中還包括它們的變化。Layers:解 -
系統架構師、系統分析師和項目管理師的區別
系統架構師、系統分析師和項目管理師,也許我們都知道,但是他們之間有什麼區別和聯繫呢?我們一起來看看! 系統構架師與項目經理的關係及區別軟件項目經理是指對項目控制/管理,關注項目本身的進度、質量、分配、調動、 -
秒殺系統架構分析
所謂"秒殺",就是網絡賣家發佈一些超低價格的商品,所有買家在同一時間網上搶購的一種銷售方式。下面整理了關於秒殺系統架構分析的文章,歡迎大家閱讀! 1 秒殺業務分析正常電子商務流程(1)查詢商品;(2)創建訂單;(3)扣減 -
嵌入式架構單片機系統設計
作爲以計算機爲基礎的技術,嵌入式架構的發展,很大程度上受到計算機技術的影響,下面yjbys小編爲大家準備了關於嵌入式架構單片機系統設計的文章,歡迎閱讀。 1 嵌入式架構簡述1.1 嵌入式架構的概念嵌入式架構是隨着計算 -
嵌入式架構的單片機系統設計
嵌入式架構和單片機的出現,都是由於實際應用的需要,而單片機在實際應用的過程中,還存在很多問題,如果能夠採用嵌入式架構,那麼就能夠極大的提高單片機系統的使用效果。 下面YJBYS小編爲大家整理了關於嵌入式架構單片機系統 -
系統架構師知識:高可用系統設計
高可用系統設計,常見於大中型互聯繫統架構設計。下面爲大家整理了一些關於高可用系統設計的知識,一起來了解一下! 1、系統可用性系統可用性定義:MTTF/(MTTF+MTTR) * 100%MTTF: mean time to failure,平均失效前時間,也就 -
web系統分層架構設計
企業中許多WEB信息管理系統同屬於針對關係型數據庫的,並且有相當一部分功能需求是重複的。比如組織結構管理、通知公告發布,甚至是訪問權限控制等。出於對軟件複用原則和開發效率等方面的考慮,可以採用相同的系統框架,再 -
基於安卓系統的移動辦公系統架構設計
將辦公應用程序安裝到使用Android平臺的智能手機中,這樣不但可以實現讓智能手機發揮同企業計算機基本相同的辦公功能,而且系統用戶的辦公,也不再拘泥於固定的辦公場所和計算機設備前即可以最終完成各項具體的工作和任務,