- 相關推薦
分布式系統(tǒng)架構實踐
五彩石項目并沒有以淘寶網或者淘寶商城的架構為基礎進行演化式的改進,而是進行了比較徹底的重構,是一次全新的架構升級, 是分布式技術跨時代之進步。
在做系統(tǒng)整合之前,整個架構和非互聯網的軟件廠商架構是一樣的,基礎架構基于商業(yè)數據庫、小型機、高端存儲設備,業(yè)務系統(tǒng)架構是端到端的煙囪式架構。
簡單來說,每個業(yè)務版塊都是一個獨立系統(tǒng),公共的數據都是訪問數據庫的,沒有形成公共的服務層。端到端的架構優(yōu)勢是小規(guī)模團隊作戰(zhàn),速度會很快,各種復雜的需要一般都只需在一個系統(tǒng)即可完成,而且研發(fā)同學對整個系統(tǒng)都很熟悉,系統(tǒng)運維都比較簡單,同時系統(tǒng)的穩(wěn)定性也比較高。
隨著業(yè)務復雜度的提升,系統(tǒng)規(guī)模的不斷擴展,這種架構也開始出現問題。包括如下挑戰(zhàn):
業(yè)務研發(fā)效率比較低
業(yè)務研發(fā)效率也導致了業(yè)務的擴展性受限,做一個新的市場也必須重新開始建設,而不能重用一些業(yè)務模塊。
系統(tǒng)擴展性較弱
因為數據庫連接的關系。應用服務器的擴展規(guī)模受限制,別外數據庫本身的容量也會因為小型機的計算能力而受限。
技術升級受限
比如要對數據庫進行擴展或者修改,需要修改多個系統(tǒng),然后再對多個系統(tǒng)進行回歸測試,同樣對熱點數據增加緩存,也需要對多個系統(tǒng)進行修改。
通過抽象和梳理,本質上我們需要解決的第一個問題,就是業(yè)務的擴展性問題,然后需要解決因為這個問題帶來的技術擴展性問題。
1、業(yè)務擴展性問題之解決
為了解決業(yè)務擴展性問題,首先需要建立共享服務層。把公共的業(yè)務元素抽離出來形成共享的服務。
比如taobao.com、tmall.com、ju.taobao.com等應用,這些都需要用到會員服務,那么就把會員服務作為共享服務抽取出來,任何系統(tǒng)需要獲取會員信息時只需通過調用會員服務的API就可以,而不需要每個業(yè)務方自己再開發(fā)一套會員系統(tǒng)。
同樣思路,把電商業(yè)務公共的服務,如商品服務、交易服務、營銷服務、店鋪服務、推薦服務、庫存、物流等從各個業(yè)務抽離出來建設成共享服務,后續(xù)新建的業(yè)務市場均基于這些公共的電商元素來構建。
共享服務層的建立很好地對橫向業(yè)務提供了統(tǒng)一的數據和服務收口,例如手機淘寶、安全、商家服務這三個橫向的業(yè)務就非常依賴共享服務。
如下列表:
手機淘寶通過共享服務得到了業(yè)務輸出的一致性和統(tǒng)一性
安全上,比如對商品數據做統(tǒng)一治理
商家服務則使用了共享服務開發(fā)TOP平臺,來對接外部商家的工具包
各個共享服務之間形成了比較的隔離,保障各個共享服務獨立的發(fā)展空間,每個共享服務之間有互相關聯,又互相獨立。
在系統(tǒng)建設上,把交易和商品兩個服務中心完全獨立的團隊和獨立的系統(tǒng)去建設。
商品服務中心和交易服務中心是完全獨立的兩套共享服務,所以在業(yè)務發(fā)展層面比較獨立,系統(tǒng)間又不互相影響。
這使得商品相關的業(yè)務全部封閉在商品服務中心里,交易相關的業(yè)務全部封閉在交易服務中心里,架構的域之間形成低耦合、高內聚。由于隔離做得比較好,沒有業(yè)務之間的復雜交錯,所以各個業(yè)務領域發(fā)展創(chuàng)新不受限制。
值得一提的案例就是早期支付業(yè)務慢慢成為支付寶,物流業(yè)務發(fā)展為菜鳥物流,而TOP從給商家提供API演化為服務商家的聚石塔。
2、技術擴展性問題的解決
第二個問題就提技術擴展性!悍孔忧姘俟郑谴u頭都是一樣的』。
利用共享服務解決了業(yè)務擴展性的問題,它的好處是新構建一個業(yè)務市場變得非常容易和快捷,同時任何數據結構的變化只需在一個地方改變。
帶來的挑戰(zhàn)是系統(tǒng)分布式后對于研發(fā)來說,要關注分布式本身。這是我們不希望的,我們希望開發(fā)人員仍然像之前開發(fā)單機版的軟件一樣開發(fā)軟件,把分布式的控制在一些通用的組件里面。
這就需要引入解決分布式問題的中間件技術。
當時并沒有商業(yè)軟件可以使用,也沒有合適的開源產品可以選。五彩石項目第一次大規(guī)模使用了中間件。系統(tǒng)分布式后,需要有一套統(tǒng)一的組件來解決分布式引發(fā)的共性技術問題。比如提供服務的發(fā)現機制、提供服務的分組路由機制、同機房優(yōu)先機制等。我們將其沉淀在一個框架里,這個框架被稱為HSF。
為了解決單庫性能瓶頸問題,使用分庫分表的技術,這個技術被沉淀在TDDL框架上面。
為了解決分布式事務的性能問題,把原本一個事務的工作拆成了異步執(zhí)行,同時必須要保證最終數據的一致性,我們采用了消息發(fā)布訂閱的方式來解決,這個消息框架就是Notify。
有了HSF、TDDL、Notify這『三大件』,有效地解決了應用分布式后引發(fā)的技術擴展性問題,同時讓整個系統(tǒng)的技術架構變得依舊如當初一樣的簡。
如果系統(tǒng)計算能力不夠,基本上能做到只需要增加服務器即可。共享服務層和分布式中間件使頻繁的業(yè)務變化封閉在了一個適合的系統(tǒng)層,同時技術的變化也隔離在了一個合適的范圍。如下圖所示:
小結
為了解決業(yè)務擴展性問題,通過抽取共享服務層,在非常低的試錯成本下涌現出來大量新的業(yè)務市場,推動了阿里電商業(yè)務的快速發(fā)展,同時共享服務本身也隨著業(yè)務發(fā)展起到了越重要的作用。比如庫存中心服務的抽取,使得和商家對接的供應鏈領域得到了快速發(fā)展。
為了解決技術擴展性問題,引入了分布中間件技術。擴展服務器的存儲和計算能力變得只需要增加服務器就可以輕松解決,研發(fā)過程不需要關注分布式帶來的的理解上的困難。分布式中間件的本質是讓多臺廉價的PC服務器可以組成一臺超級計算機。
通過五彩石項目,阿里技術完成了一次偉大的技術變革,為后續(xù)的持續(xù)架構演進打下了堅實基礎。沉淀了一套『共享服務化』的架構理念,以及一套與該架構理念相對應的分布式中間件技術。
這個架構理念和這套分布式中間件技術在后續(xù)阿里的業(yè)務和技術發(fā)展上被大范圍使用,同時也被業(yè)界很多互聯網公司所借鑒。
【分布式系統(tǒng)架構實踐】相關文章:
如何搭建系統(tǒng)CSS架構12-31
系統(tǒng)架構設計模式大全08-22
系統(tǒng)架構師是做什么的12-30
圖書檢索系統(tǒng)體系架構研究12-05
基于云架構的系統(tǒng)安全設計08-08
系統(tǒng)架構設計師要素01-11
系統(tǒng)架構師必須具備哪些能力05-07
MES系統(tǒng)安全架構設計09-19