應用分層設計
從垂直方向劃分應用,分為服務層、業務邏輯層和數據層。
每一層儘量做到解耦:上層依賴下層,而下層不要反向依賴上層。
應用分層最核心的目的是每個層都會封裝一些信息、完成一些特定的功能需求,層與層之間通過接口交互,而且交互的數據是清晰和固定的,做到隔離和交互。
判斷分層是否合理
1.分層的職責需要清晰。
2.每個層內部的修改不會導致接口的修改,也不會導致其他層的修改,每個層都做到了收斂。
分層設計中最可怕的就是在接口中設計一些超級數據結構,如傳遞一個對象,然後把這個對象一直傳遞下去,而且每個層都可能修改這個對象,問題:
1.一旦該對象更改,所有層都要隨之更改。
2.無法知道該對象的數據在哪個層被修改,在排查問題時會比較複雜。
建議:在設計接口時要儘量使用原生數據類型。
微服務化
從水平劃分的角度儘量把服務分得更細,每個業務只負責一個功能單元,這樣可以把這些微服務組合成更大的功能模塊。
有目的地拆小應用,形成單一職責從而提升系統可維護性、擴展性和開發效率。