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

我的觀察
1.經過系統和業務拆分,遵循單一職責原則SRP,保障整個系統的可用性和穩定性。
2.單一職責原則SRP,真的很關鍵,廣大程序員須要不斷深刻理解這個原則。
3.架構圖是架構師的重要輸出,經過圖能夠直觀地看出整個架構思路。



本文轉載於

《程序員》2014年11月刊:電商峯值系統架構設計

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


該作什麼的就作什麼程序員

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

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

下面以交易流程爲例,來看一下如何操做拆分。spa

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


圖1  交易流程拆分結果 架構設計

通過分析,整個交易流程按照架構層次能夠分解爲展現層、業務層及外圍應用三塊內容,這三部分因爲職責差別比較大,因此先按照物理拆分,讓層次清晰。設計

再來看展現層,因爲存在一些共享的東西,如頁面元素等,作物理拆分,會引入額外的成本,因此路由拆分是不錯的選擇。日誌

接着來看業務層。這一層是很容易按照角色和業務場景進行拆分的,例如,交易管理服務是給管理人員提供管理功能的,須要考慮權限、內控等問題;交易核心服務是給業務主流程提供主要業務功能,須要考慮可用性;交易查詢服務是讀取交易數據的主要途徑,須要考慮易用性;交易網關服務主要是對接外部支付渠道,須要考慮連通性。很明顯,這一層因爲自身的差別性比較大,因此採用物理拆分是上上策。orm

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

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


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