第十章 分層架構(面向流程拆分) 保證各層的差異足夠清晰,邊界足夠明顯 隔離關註點 層層傳遞 例如:MVC:分離數據處理,視圖顯示,業務邏輯 第十一章 SOA架構(面向服務拆分) 背景: 企業內部的IT系統重覆建設且效率低下。 企業各部門都有獨立的IT系統,人力資源部門,財務部門,銷售部門....當 ...
第十章 分層架構(面向流程拆分)
- 保證各層的差異足夠清晰,邊界足夠明顯
- 隔離關註點
- 層層傳遞
例如:MVC:分離數據處理,視圖顯示,業務邏輯
第十一章 SOA架構(面向服務拆分)
背景:
企業內部的IT系統重覆建設且效率低下。
- 企業各部門都有獨立的IT系統,人力資源部門,財務部門,銷售部門....當一個員工離職後,需要很多部門同時註銷信息。(冗餘)
- 業務發展,各部門合作的複雜度升高。
SOA思想
服務
所有業務功能都是一項服務,對外提供開放介面。例如上述各部門的人員管理就可以單獨劃分出一個服務,實現復用。【服務粒度的劃分是關鍵】
ESB企業服務匯流排
屏蔽系統對外提供介面的方式,實現服務連接。
松耦合
減少服務的依賴和影響。
ESB問題和被背景
ESB功能強大,支持HTTP,RPC,JMS等多種協議和轉換格式,但同時帶來了大量資源消耗。
ESB的背景是在各種異構系統存在多年的情況下產生的,實屬無奈之舉。
第十四章 微服務
微服務和SOA的關係
1996 年,第一個SOA報告被髮布
2014年, Martin Flower一篇關於微服務的學術性文章將微服務推向了高潮
從歷史的角度看,微服務和SOA是有一定先後次序的,兩者雖不相同,但也許有些淵源。
服務粒度
微服務比SOA更細
服務通信
SOA採用ESB匯流排,而微服務採用HTTP輕量級通信
服務交付
SOA慢,而微服務倡導持續交付,速度快
應用場景
SOA的ESB是針對已有大量異構系統的企業級設計的;而微服務更適合互聯網公司。
SOA和微服務並不存在優劣之分,兩者應用的場景應對的問題完全不一樣,就像你不能用一顆糖的好壞衡量一塊磚的價值。
微服務的坑
- 服務劃分過細,服務間關係複雜【單個系統複雜度下降,整個系統的複雜度上升】
- 服務數量太多,團隊效率下降
- 調用鏈過長導致的性能下降和排查問題困難
- 自動化部署複雜
微服務最佳實踐
- 服務粒度拆分(推薦三人開發一個微服務)
- 基於業務邏輯拆分
- 基於可擴展拆分(拆分出穩定,變動不大的微服務)
- 基於可靠性拆分(將可靠性要求高的核心業務拆分出來)
- 基於性能拆分(將性能要求高的拆分出來)
- 基礎設施
- 自動化測試,部署
- 配置中心
- API網關
- 服務註冊
- 服務發現
- 服務路由
- 服務容錯
- 服務監控
- 服務跟蹤
- 服務安全