04.04 軟件常見架構分類介紹(上)

一、微服務架構

微服務架構(microservices architecture)是服務導向架構(service-oriented architecture,縮寫 SOA)的升級。

每一個服務就是一個獨立的部署單元(separately deployed unit)。這些單元都是分佈式的,互相解耦,通過遠程通信協議(比如REST、SOAP)聯繫。

軟件常見架構分類介紹(上)

微服務架構分成三種實現模式。

  • RESTful API 模式:服務通過 API 提供,雲服務就屬於這一類

  • RESTful 應用模式:服務通過傳統的網絡協議或者應用協議提供,背後通常是一個多功能的應用程序,常見於企業內部

  • 集中消息模式:採用消息代理(message broker),可以實現消息隊列、負載均衡、統一日誌和異常處理,缺點是會出現單點失敗,消息代理可能要做成集群

優點

擴展性好,各個服務之間低耦合

容易部署,軟件從單一可部署單元,被拆成了多個服務,每個服務都是可部署單元

容易開發,每個組件都可以進行持續集成式的開發,可以做到實時部署,不間斷地升級

易於測試,可以單獨測試每一個服務

缺點

由於強調互相獨立和低耦合,服務可能會拆分得很細。這導致系統依賴大量的微服務,變得很凌亂和笨重,性能也會不佳。

一旦服務之間需要通信(即一個服務要用到另一個服務),整個架構就會變得複雜。典型的例子就是一些通用的 Utility 類,一種解決方案是把它們拷貝到每一個服務中去,用冗餘換取架構的簡單性。

分佈式的本質使得這種架構很難實現原子性操作,交易回滾會比較困難。

二、微核架構

微核架構(microkernel architecture)又稱為"插件架構"(plug-in architecture),指的是軟件的內核相對較小,主要功能和業務邏輯都通過插件實現。

內核(core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信,應該減少到最低,避免出現互相依賴的問題。

軟件常見架構分類介紹(上)

優點

良好的功能延伸性(extensibility),需要什麼功能,開發一個插件即可

功能之間是隔離的,插件可以獨立的加載和卸載,使得它比較容易部署,

可定製性高,適應不同的開發需要

可以漸進式地開發,逐步增加功能

缺點

擴展性(scalability)差,內核通常是一個獨立單元,不容易做成分佈式

開發難度相對較高,因為涉及到插件與內核的通信,以及內部的插件登記機制


分享到:


相關文章: