系統架構演變
阿新 • • 發佈:2019-12-31
集中式架構
優點:開發起來容易 缺點:程式碼耦合度高,後期維護較為困難垂直拆分
集中式的架構是無法應對高併發的業務,所有請求都走一個模組,所以垂直拆分是根據業務功能對系統進行拆分
優點:解決了併發問題,可以對不同的模組進行優化 缺點:雖然對個業務進行了拆分,但還是存在許多的重複開發分散式服務
將拆分出來的模組,核心業務或者相同的業務拆分出來,作為獨立的服務
優點:提高了程式碼複用和開發效率 缺點:系統之間的耦合度變高,呼叫關係也比較複雜,難以維護SOA架構
服務之間通過相互依賴最終提供一系列功能,一個服務通常以獨立的形式存在與作業系統程式中,各個服務通過網路進行呼叫
微服務架構
微服務架構是使用一套小服務來開發單個應用的方式或途徑,每個服務基於單一業務能力構建,執行在自己的程式 中,並使用輕量級機制通訊,通常是HTTP API,並能夠通過自動化部署機制來獨立部署。這些服務可以使用不同的程式語言實現,以及不同資料儲存技術,並保持最低限度的集中式管理
微服務的特點:- 單一職責:微服務中每一個服務都對應唯一的業務能力,做到單一職責
- 微服務的服務拆分粒度很小,例如一個使用者管理就可以作為一個服務。每個服務雖小,但“五臟俱全”。
- 面向服務:面向服務是說每個服務都要對外暴露Rest風格服務介面API。並不關心服務的技術實現,做到與平臺 和語言無關,也不限定用什麼技術實現,只要提供Rest的介面即可。
- 自治:自治是說服務間互相獨立,互不幹擾
- 團隊獨立:每個服務都是一個獨立的開發團隊,人數不能過多。
- 技術獨立:因為是面向服務,提供Rest介面,使用什麼技術沒有別人干涉
- 前後端分離:採用前後端分離開發,提供統一Rest介面,後端不用再為PC、移動端開發不同介面
- 資料庫分離:每個服務都使用自己的資料來源部署獨立,服務間雖然有呼叫,但要做到服務重啟不影響其它服務。有利於持續整合和持續交付。每個服務都是獨立的元件,可複用,可替換,降低耦合,易維護
SOA 和 微服務架構的區別
微服務架構與SOA都是對系統進行拆分;微服務架構基於SOA思想,可以把微服務當做去除了ESB的SOA。ESB是 SOA架構中的中心匯流排,設計圖形應該是星形的,而微服務是去中心化的分散式軟體架構。兩者比較類似,但其實也 有一些差別:
功能 | SOA | 微服務 |
---|---|---|
元件大小 | 大塊業務邏輯 | 單獨任務或小塊業務邏輯 |
耦合 | 通常鬆耦合 | 總是鬆耦合 |
管理 | 著重中央管理 | 著重分散管理 |
目標 | 確保應用能夠互動操作 | 易維護、易擴充套件、更輕量級的互動 |