本文說明了微服務架構的部署模式之一:每一個主機多個服務實例。html
場景
已經經過微服務架構的分解模式(參考按業務領域分解模式劃分微服務),將整個應用程序劃分爲多個獨立的微服務。架構
目標
- 每一個服務由多個服務實例組成,用於提升吞吐量和可用性。
- 服務必須可獨立部署和擴展。
- 服務實例須要彼此隔離。
- 須要可以快速構建和部署服務。
- 須要可以約束服務所消耗的資源(CPU和內存)。
- 須要監視每一個服務實例的性能和行爲。
- 部署必須是可靠的。
- 部署必須是經濟高效的。
方法
在同一個主機(物理或虛擬機)上運行不一樣服務的多個實例。有2種部署方式:微服務
- 在同一個JVM進程中部署一個服務實例。例如,每一個服務實例都做爲獨立進程運行在Tomcat或Jetty中。
- 在同一個JVM進程中部署多個服務實例。例如,Web應用程序或OSGI捆綁軟件。
優勢
比每一個主機一個服務實例模式的資源利用率更高。性能
缺點
- 存在資源需求衝突的風險。
- 存在版本依賴衝突的風險。
- 難以限制服務實例的資源消耗。
- 若是在同一JVM進程中部署了多個服務實例,則很難監測每一個服務實例的資源消耗,也很難針對每一個實例作資源隔離。
相關模式