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