# 微服務架構
微服務架構(microservices architecture)是服務導向架構(service-oriented architecture,SOA的縮寫)的升級。
每一個服務就是一個獨立的部署單元(separately deployed unit)。這些單元都是分布式的,互相解耦,通過遠程通信協議(像REST、SOAP)來聯系。

微服務架構分成三種實現模式。
> * Restful API模式:服務通過API提供,云服務屬于這一類
> * Restful 應用模式:服務通過傳統的網絡協議或者應用協議提供,背后通常是一個多功能的應用程序,常見于企業內部
> * 集中消息模式:采用消息代理(message broker),可以實現消息隊列,負載均衡、統一日志和異常處理,缺點是會出現單點失敗,消息代理可能要做成集群
優點
>* 擴展性好,各個服務之間低耦合
>* 容易部署,軟件從單一可部署單元,被拆分成多個服務,每個服務都是可部署單元
>* 容易開發,每個組件都可以進行持續集成式的開發,可以做到實時部署,不間斷地升級
>* 易于測試,可以單獨測試每一個服務
缺點
>* 由于強調互相獨立和低耦合,服務可能會拆分的很細。這導致系統依賴大量的微服務,變得很凌亂和笨重,性能也會不佳。
>* 一旦服務之間需要通信(即一個服務要用到另一個服務),整個架構就會變得復雜。典型的例子就是一些通用的Utility類,一種解決方案是把它們拷貝到每一個服務中去,用冗余換取架構的簡單性。
>* 分布式的本質使得這種架構很難實現原子性操作,交易回滾會比較困難。