該作什麼的就作什麼程序員
保障整個系統的可用性和穩定性,第一步須要作 的就是,使總體架構清晰化、層次化。那麼,對系統進行合理拆分,是最直觀的選擇。從業務和技術角度出發,遵循SRP(Single Responsibility Principle)原則,合理拆分系統中的各個模塊,明確每一個模塊的職責。這樣能夠方便快速定位和排查問題,甚至能夠有針對性地對每一個模塊進行優化。架構
拆分方式基本上分爲兩種,路由拆分和物理拆 分。所謂路由拆分,就是按照請求特徵,將請求流量分攤到兩個或多個同質的集羣裏面;而物理拆分,就是在路由拆分的基礎上,按照業務和技術上的特徵,將同質的集羣進行完全拆分,成爲非同質集羣。優化
下面以交易流程爲例,來看一下如何操做拆分。spa
交易流程主要包括購物車、下單、支付等幾個環節,具體的拆分結果,如圖1所示。.net
圖1 交易流程拆分結果 架構設計
通過分析,整個交易流程按照架構層次能夠分解爲展現層、業務層及外圍應用三塊內容,這三部分因爲職責差別比較大,因此先按照物理拆分,讓層次清晰。設計
再來看展現層,因爲存在一些共享的東西,如頁面元素等,作物理拆分,會引入額外的成本,因此路由拆分是不錯的選擇。日誌
接着來看業務層。這一層是很容易按照角色和業務場景進行拆分的,例如,交易管理服務是給管理人員提供管理功能的,須要考慮權限、內控等問題;交易核心服務是給業務主流程提供主要業務功能,須要考慮可用性;交易查詢服務是讀取交易數據的主要途徑,須要考慮易用性;交易網關服務主要是對接外部支付渠道,須要考慮連通性。很明顯,這一層因爲自身的差別性比較大,因此採用物理拆分是上上策。orm
最後來看外圍應用,其中包括後臺管理、日誌查 詢、業務監控及交易超時控制等,這些應用基本上都是在底層系統平臺(管理平臺、日誌平臺、監 控平臺以及任務平臺)進行二次開發而成的,因此天生就適合進行物理拆分。ip
從上面不難看出,拆分是一個細活,能夠選擇的 維度不少,拆分方式也比較講究。良好的拆分方案,會讓系統更加清晰明瞭,每一個模塊該作什麼的就作什麼。這樣應對大型促銷活動時,能夠遊刃有餘地按照模塊特徵進行優化。