系統架構進化歷程以及優缺點
微服務的提出:james Lewis & Martin Fowler 在2014年3月25號在一篇《Microservice》中提出微服務
《Microservice》原文:https://martinfowler.com/articles/microservices.html
微服務是一種架構風格,並具有如下特點:
一系列微小服務共同組成
跑在自己的程序裡
每個服務為獨立的業務開發
獨立部署
分散式管理
系統架構
系統架構的發展歷程:
ps:本圖來自Dubbo官網
單體架構的優缺點:
優點:容易測試:由於沒有外部依賴,可以在本地完全啟動系統,所以很容易測試。
容易部署:系統是一個整體,只需要把專案打包,既可以釋出。
缺點:開發效率低:專案是整體架構,程式碼之間相互依賴過於強,開發者之間很難協作,程式碼也容易衝突。
程式碼難維護:業務程式碼龐大且在一起,很難梳理清晰。
部署不夠靈活:構建時間長,專案中任意一處修改都需要進行重新打包釋出,浪費時間,資源。
穩定性不高:專案中任何一個位置出現問題,專案整體崩潰,牽一髮而動全身。
擴充套件性不夠:專案需要負載均衡時,單體架構的專案很難做到。
前後端分離架構的優缺點:
優點:減輕伺服器壓力:js能夠處理大多情況的資料處理。
介面友好:後端伺服器出現bug,不會直接顯示到前端頁面。
缺點:如果是 PC 端的站點,需要考慮是否需要強支援 SEO ,前後端分離的架構,很可能需要搜尋引擎的 spider 執行完 js 才能得 到完整的可收錄的頁面,而“執行 js ”並不是所有搜尋引擎都支援的,此時勢必影響站點的收錄。
分散式架構:
定義:旨在支援應用程式和服務開發,可以利用物理架構由多個自治的處理元素,不共享主記憶體,但通過網路傳送訊息合作
------------Leslie Lamport
微服務架構的基礎框架/元件
服務註冊發現:服務提供方註冊,並將本身的地址以及位元組資訊提供,由服務呼叫方來發現,並正確使用。
服務閘道器(Service Gateway):對外遮蔽後臺的具體實現細節;具有路由功能,能夠將外部請求指向內部具體的微服務;認證,授權,安全,限流等功能。
後端通用服務(也稱中間層服務Middle Tier Service):
前端服務(也稱邊緣服務Edge Service):