1 定義
Single Service Instance per Host(單實例單節點)是一種常用的微服務部署模式,微服務的一個實例獨立部署在一臺主機之上,實例獨佔該主機運行。該模式有兩種變體:Single Service Instance per VM(單實例單虛擬機)和Single Service Instance per Container(單實例單容器)。
2 上下文和問題
系統採用了微服務架構模式並將系統劃分爲一組服務,爲了吞吐量和可用性每個微服務部署多個實例。考慮服務具有下面的特點,如何打包和部署服務是一項挑戰:
- 服務使用不同的編程語言,框架或不同版本的框架編寫
- 爲了提高吞吐量和可用性,每個服務有多個實例
- 服務必須獨立部署和擴展
- 服務實例互相隔離
- 需要快速構建並部署一個服務
- 服務使用的資源(cpu和內存)可控制
- 監控每個服務實例的行爲
- 服務部署是可靠的
- 儘可能經濟高效的部署服務
3 解決方案
採用單實例單節點的模式部署服務實例,每個實例獨佔主機,兩種相關的變體便是:單實例單虛擬機和單實例單容器,現在容器技術應用的越來越廣泛,單實例單容器部署模式得到了廣泛的應用。
3.1 單實例單虛擬機部署
將服務打包爲VM鏡像,每個服務實例都是使用該鏡像啓動的VM實例。
單實例單容器部署
將服務打包爲容器鏡像,並將服務實例以容器的方式部署。
4 優缺點
4.1 優點:
- 服務互相隔離
- 不存在資源和依賴衝突
- 一個服務實例最多消耗一個虛擬/容器的資源
- 監控、管理、部署服務的每個實例非常的簡單直接
4.2 缺點:
- 資源利用率不高
- 需要更多的虛擬機/容器