電商架構設計-通過系統和業務拆分,遵循單一職責原則SRP,保障整個系統的可用性和穩定性

小雷FansUnion發表於2016-05-02

個人觀察
1.通過系統和業務拆分,遵循單一職責原則SRP,保障整個系統的可用性和穩定性。
2.單一職責原則SRP,真的很關鍵,廣大程式設計師需要不斷深入理解這個原則。
3.架構圖是架構師的重要輸出,通過圖可以直觀地看出整個架構思路。



本文轉載於

《程式設計師》2014年11月刊:電商峰值系統架構設計

原文連結:http://www.csdn.net/article/2014-11-04/2822459


該做什麼的就做什麼

保障整個系統的可用性和穩定性,第一步需要做 的就是,使整體架構清晰化、層次化。那麼,對系統進行合理拆分,是最直觀的選擇。從業務和技術角度出發,遵循SRP(Single Responsibility Principle)原則,合理拆分系統中的各個模組,明確每個模組的職責。這樣可以方便快速定位和排查問題,甚至可以有針對性地對每個模組進行優化。

拆分方式基本上分為兩種,路由拆分和物理拆 分。所謂路由拆分,就是按照請求特徵,將請求流量分攤到兩個或多個同質的叢集裡面;而物理拆分,就是在路由拆分的基礎上,按照業務和技術上的特徵,將同質的叢集進行徹底拆分,成為非同質叢集。

下面以交易流程為例,來看一下如何操作拆分。

交易流程主要包括購物車、下單、支付等幾個環節,具體的拆分結果,如圖1所示。


圖1  交易流程拆分結果 

經過分析,整個交易流程按照架構層次可以分解為展示層、業務層及外圍應用三塊內容,這三部分由於職責差異比較大,所以先按照物理拆分,讓層次清晰。

再來看展示層,由於存在一些共享的東西,如頁面元素等,做物理拆分,會引入額外的成本,所以路由拆分是不錯的選擇。

接著來看業務層。這一層是很容易按照角色和業務場景進行拆分的,例如,交易管理服務是給管理人員提供管理功能的,需要考慮許可權、內控等問題;交易核心服務是給業務主流程提供主要業務功能,需要考慮可用性;交易查詢服務是讀取交易資料的主要途徑,需要考慮易用性;交易閘道器服務主要是對接外部支付渠道,需要考慮連通性。很明顯,這一層由於自身的差異性比較大,所以採用物理拆分是上上策。

最後來看外圍應用,其中包括後臺管理、日誌查 詢、業務監控及交易超時控制等,這些應用基本上都是在底層系統平臺(管理平臺、日誌平臺、監 控平臺以及任務平臺)進行二次開發而成的,所以天生就適合進行物理拆分。

從上面不難看出,拆分是一個細活,可以選擇的 維度很多,拆分方式也比較講究。良好的拆分方案,會讓系統更加清晰明瞭,每個模組該做什麼的就做什麼。這樣應對大型促銷活動時,可以遊刃有餘地按照模組特徵進行優化。


總結一下在可用性和穩定性工作中的一些感悟。 
首先,清晰的架構劃分可以大大減輕穩定性工作量;
其次,功夫要儘量在平時做足,避免總是出臨時解決方案;
再次,普及穩定性思維,注意細節;
最後,出現問題,先快速恢復再查詢根源。  

相關文章