邏輯層職責: 負責整個系統 中業務邏輯的處理。 邏輯層架構特點: 邏輯層業務複雜; 設計方式: 1、All In ONE方式:所有業務一個整體、一個文件、一個類里。 特點:簡單,適合業務量小; 問題:耦合性嚴重;文件內容複雜、開發維護代價高、牽一發動全身; 適合場景:創業期、業務不複雜; 2、業務垂... ...
邏輯層職責:
負責整個系統 中業務邏輯的處理。
邏輯層架構特點:
邏輯層業務複雜;
設計方式:
1、All In ONE方式:所有業務一個整體、一個文件、一個類里。
特點:簡單,適合業務量小;
問題:耦合性嚴重;文件內容複雜、開發維護代價高、牽一發動全身;
適合場景:創業期、業務不複雜;
2、業務垂直方式:按業務拆分
特點:業務獨立、耦合性降低、業務間開發互不影響、開發效率高、運維相對簡單;
缺點:業務上仍是一個模塊;編譯成本高;一個業務修改需重新上線;重啟影響所有業務;
適合場景:業務需求變化較大的互聯網公司。
3、業務(物理)垂直劃分方式:
特點:每個業務 形成一個獨立的業務模塊(或進程);
優點:業務間完全解耦,互不影響;模塊獨立;單獨開發、上線、運維;效率高;
無狀態業務邏輯層:
什麼是無狀態:
系統不存儲業務的上下文信息;
多模塊(子系統)之間完全對稱;
關鍵特點:
不保存請求狀態;不保存數據;
所有業務邏輯層伺服器完全對稱;
高可用:請求提交到任意可用邏輯層伺服器,部分宕機仍可用;負載均衡。
負載均衡:
可用狀態實時監測機制;
自動轉移失敗任務的機制;
流量和數據分攤機制;
心跳檢測機制;
伺服器恢復可用後自動重連機制。
業務邏輯層的純非同步調用:
什麼是同步:發出一請求調用時,在無結果返回前不進行一步處理,形成線程阻塞;
什麼是非同步:調用發出,調用者立即返回。結果完成後,通過狀態\通知和回調來通知調用者。這是非阻塞模式。
非同步調用特點:非阻塞不需等待,CPU利用率高,性能高;吞吐量高; 缺點:實現成本稍高;
非同步調用方案:
- 消息隊列方案一:通過消息隊列實現非同步調用;
消息隊列:具備緩衝、持久化、解決非同步;
非同步調用場景:
阻塞I/O模型:
輪詢非阻塞I/O模型:
I/O復用模型:
復用模型適用於多連接
邏輯層分級管理
硬體分級:
核心系統—使用好的機器
邊緣系統--使用差的機器
部署層面:
服務部署隔離;
避免故障帶來的連鎖反應;
核心系統部署在物理機上、不同的機房;
邊緣系統部署虛擬機或公用機器;
管理分級:
--監控分級層面:
響應分級:
開發響應迅速;上線響應迅速;運維響應迅速;上線問題處理迅速。
設置合理超時:
超時時間應是平均響應延遲的2倍,避免過長時間等待。
響應延遲高,超時時間設置長些(比如3S);
響應延遲低,超時時間設置短些(比如1000ms);
下游請求超時後,業務層根據預設的調度策略;
重試次數:一般3次,多次無好處。
業務邏輯層服務降級設計:
降級原因:網路高峰期,併發量大,服務能力有限;性能下降甚至服務宕機,系統雪崩等;
怎麼辦:服務降級。
策略:保證核心服務可用;非核心服務弱可用,甚至不可用;
降級設計方案:拒絕部分請求、關閉請求。
拒絕部分請求:拒絕低優先順序服務調用;減少服務調用併發數;
隊列方式:入隊、出隊時間,超出一定時間就丟棄;
關閉部分服務:比如非核心服務直接關閉、業務邏輯層
伺服器冪等設計:
請求失敗後,會繼續重試。