架構設計實踐五部曲(四):單體式與分佈式的應用架構

產品架構在業務架構的基礎上,按照解決的業務問題域,劃分出不同的功能模塊,再根據功能模塊間的關係,組合成子系統。應用架構在產品架構的基礎上考慮兩個事情:第一、考慮的是子系統間的關係。第二、考慮將可複用的組件或模塊進行下沉,沉澱到平臺層,爲業務組件提供統一的支撐。應用架構是要說明產品架構分哪些應用系統,應用系統間是如何集成的,這就是應用架構和應用集成架構。

應用架構分爲兩種:一種是單體式應用架構、一種是分佈式應用架構。

單體式應用架構就是系統只有一個應用,數據存儲在一個DB等存儲介質裏面。

分佈式應用架構是指存在多個系統,系統之間通過接口的形式進行調用,不同系統的數據存儲在多個DB裏面。

1.劃分應用

在做應用架構之前,我們已經完成了業務架構和產品架構這2步。在產品架構這個架構域,我們通過按照模塊之間的聚合和分層,逐步形成產品內部子系統的邊界。那麼,按照子系統的邊界進行切分,能得到整個產品的子系統組成。

還是以風控系統的產品爲例,在產品架構這一環節,我們輸出了下面的產品架構圖。

圖1

應用架構的分解,通過對產品架構按照水平和垂直兩個維度進行劃分。

水平劃分

在產品架構的環節,按照同一產品範圍的模塊放在同一層級的原則,得到水平層面的應用系統劃分。只要產品架構明確定義了系統間的邊界,很容易確定整個產品的各個子系統。

圖2

垂直劃分

當應用內存在幾個相對獨立的模塊,每個模塊的業務邏輯差別比較大,且內部的組成較爲複雜和龐大時,還需要進一步對應用內進行子系統的切分。這裏的切分原則是,對應用內按業務進行切分,保證子應用是相互獨立。

比如風控系統的案例中,在風控引擎這個應用中,存在實時、離線的校驗場景。每種場景都是相對獨立。這時候將這三個模塊按照子系統進行切分成:實時風控引擎子系統、離線風控引擎子系統。

圖3

2.單體式應用

單體式應用架構是比較傳統的分爲4層:數據層(Data Layer)、應用邏輯層(Business Layer)、表現層(Presentation Layer)和基礎通用層(Common Layer)。

圖4

展現層

展現層是整個應用面向用戶的入口,用戶通過展現層實現與系統的交互。展現層爲用戶提供系統功能的操作、系統數據的展現。展現層按照面向的用戶類型提供不同的交互服務。

例如在業務場景中,用戶有實操層用戶、管理層用戶、決策層用戶。針對不同層級的用戶,系統所提供的功能是不相同。

面向實操層用戶,提供的是對系統的操作功能,滿足業務日常運營。往往更多的是執行具體操作。

面向管理層用戶,滿足管理者的日常管理需求,通常提供經營數據、日常管理數據、團隊業務數據等等。通過數據分析,改善日常運營的流程。

面向決策層用戶,這一層的用戶不需要太細的數據,爲其提供企業的經營診斷數據和報告,輔助決策支持。

業務層

業務層是應用爲解決業務需求,按照產品架構中的功能模塊進行細化。業務層是對將產品層從粗到細的分解過程。這個過程是對業務的細化過程,把項目要交付的模塊細分到最基本的單元。最基本單元是實現日常業務操作的最細粒度的功能點。由此,我們能夠得到實現業務邏輯的全功能結構。

數據層

數據層按照應用的數據模型分別進行存儲。這裏的存儲介質包含關係型數據庫、NoSQL、分佈式文件系統。

通用基礎層

通用基礎層是爲系統提供通用能力的中間件,比如流程引擎、消息中間件、緩存、搜索引擎等等。這些中間件和業務是無相關性的,提供的是通用的基礎技術能力。

按照上述的方式,我們得到風控系統中的子系統:處置中心繫統的單體應用架構。如下圖:

圖5

3.分佈式應用

分佈式應用架構圖實質是產品內部所有應用在分佈式環境下的調用關係圖。各應用間通過服務的形式相互調用,這是典型的SOA架構。在應用架構圖中,SOA架構中的服務註冊、服務治理、服務發現這些RPC框架的基礎平臺功能不用在應用架構中體現。

應用架構圖的重點是體現應用之間的邏輯關係和通信關係,體現產品的內部關係和外部關係。內部關係是產品內各應用的調用關係;外部關係展現的是產品與外部系統間的調用關係。將應用的內外關係呈現在應用架構中,產品在整個業務中的定位和影響將變得清晰。

應用間調用關係

在產品內部的各子系統之間,爲了解決業務需求,通過應用之間的服務調用或者異步消息調用產生數據關係。通過產品架構圖中得到的應用系統劃分,按照系統間的調用關係,形成內部應用的集成架構圖。在應用集成架構圖中,需要標註調用鏈路中的業務含義,清楚的標註應用之間發生的業務關係。

圖6

外部系統調用關係

數據輸入做爲產品的業務數據來源,很大部分是外部系統提供。在應用架構圖中,按照業務屬性、來源關係進行對外部系統進行歸類,並將外部的來源系統納入整個應用架構中。我們知道計算機系統中,數據輸入和數據輸出是作爲一個整體。應用架構中除了輸入系統,輸出系統做爲整個產品的一部分,需要納入到應用架構圖中。

圖7

明確應用調用邊界

應用邊界對於產品的定位、產品的設計有很重要的影響。在應用架構中需要通過不同顏色的標註,來確定產品與外部系統的邊界。通過不同顏色標註外部來源系統、內部應用、應用依賴系統、輸出系統。爲後續的規劃、發展提供基礎。

圖8

最終一種好的應用架構圖,應該具備以下特點:

  • 清晰的應用邊界。
  • 應用之間的調用關係明確。
  • 有入必有出,有輸入系統、必有輸出系統。
  • 清晰的呈現應用的全局關係。

作者簡介

胡斌,菜鳥網絡技術專家,目前負責菜鳥風控系統的建設。曾在淘寶技術部先後負責賣家平臺、商家運營等領域。在大規模分佈式應用、大數據、架構領域有多年的開發和管理經驗。

延展閱讀

架構設計實踐五部曲(一):架構與架構圖

架構設計實踐五部曲(二):業務架構與產品架構設計實踐

架構設計實踐五部曲(三):從領域模型提取數據架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章