一、微服務架構
微服務架構(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)差,內核通常是一個獨立單元,不容易做成分佈式
開發難度相對較高,因為涉及到插件與內核的通信,以及內部的插件登記機制
閱讀更多 老孔說編程 的文章