1. 程式人生 > 程式設計 >系統架構演變

系統架構演變

集中式架構

優點:開發起來容易 缺點:程式碼耦合度高,後期維護較為困難

垂直拆分

集中式的架構是無法應對高併發的業務,所有請求都走一個模組,所以垂直拆分是根據業務功能對系統進行拆分

優點:解決了併發問題,可以對不同的模組進行優化 缺點:雖然對個業務進行了拆分,但還是存在許多的重複開發

分散式服務

將拆分出來的模組,核心業務或者相同的業務拆分出來,作為獨立的服務

優點:提高了程式碼複用和開發效率 缺點:系統之間的耦合度變高,呼叫關係也比較複雜,難以維護

SOA架構

服務之間通過相互依賴最終提供一系列功能,一個服務通常以獨立的形式存在與作業系統程式中,各個服務通過網路進行呼叫

微服務架構

微服務架構是使用一套小服務來開發單個應用的方式或途徑,每個服務基於單一業務能力構建,執行在自己的程式 中,並使用輕量級機制通訊,通常是HTTP API,並能夠通過自動化部署機制來獨立部署。這些服務可以使用不同的程式語言實現,以及不同資料儲存技術,並保持最低限度的集中式管理

微服務的特點:

  • 單一職責:微服務中每一個服務都對應唯一的業務能力,做到單一職責
  • 微服務的服務拆分粒度很小,例如一個使用者管理就可以作為一個服務。每個服務雖小,但“五臟俱全”。
  • 面向服務:面向服務是說每個服務都要對外暴露Rest風格服務介面API。並不關心服務的技術實現,做到與平臺 和語言無關,也不限定用什麼技術實現,只要提供Rest的介面即可。
  • 自治:自治是說服務間互相獨立,互不幹擾
    • 團隊獨立:每個服務都是一個獨立的開發團隊,人數不能過多。
    • 技術獨立:因為是面向服務,提供Rest介面,使用什麼技術沒有別人干涉
    • 前後端分離:採用前後端分離開發,提供統一Rest介面,後端不用再為PC、移動端開發不同介面
    • 資料庫分離:每個服務都使用自己的資料來源部署獨立,服務間雖然有呼叫,但要做到服務重啟不影響其它服務。有利於持續整合和持續交付。每個服務都是獨立的元件,可複用,可替換,降低耦合,易維護

SOA 和 微服務架構的區別

微服務架構與SOA都是對系統進行拆分;微服務架構基於SOA思想,可以把微服務當做去除了ESB的SOA。ESB是 SOA架構中的中心匯流排,設計圖形應該是星形的,而微服務是去中心化的分散式軟體架構。兩者比較類似,但其實也 有一些差別:

功能 SOA 微服務
元件大小 大塊業務邏輯 單獨任務或小塊業務邏輯
耦合 通常鬆耦合 總是鬆耦合
管理 著重中央管理 著重分散管理
目標 確保應用能夠互動操作 易維護、易擴充套件、更輕量級的互動