部署模式 - 每个主机多个服务实例
本文说明了微服务架构的部署模式之一:每个主机多个服务实例。
场景
已经通过微服务架构的分解模式(参考按业务领域分解模式划分微服务),将整个应用程序划分为多个独立的微服务。
目标
- 每个服务由多个服务实例组成,用于提高吞吐量和可用性。
- 服务必须可独立部署和扩展。
- 服务实例需要彼此隔离。
- 需要能够快速构建和部署服务。
- 需要能够约束服务所消耗的资源(CPU和内存)。
- 需要监视每个服务实例的性能和行为。
- 部署必须是可靠的。
- 部署必须是经济高效的。
方法
在同一个主机(物理或虚拟机)上运行不同服务的多个实例。有2种部署方式:
- 在同一个JVM进程中部署一个服务实例。例如,每个服务实例都作为独立进程运行在Tomcat或Jetty中。
- 在同一个JVM进程中部署多个服务实例。例如,Web应用程序或OSGI捆绑软件。
优点
比每个主机一个服务实例模式的资源利用率更高。
缺点
- 存在资源需求冲突的风险。
- 存在版本依赖冲突的风险。
- 难以限制服务实例的资源消耗。
- 如果在同一JVM进程中部署了多个服务实例,则很难监测每个服务实例的资源消耗,也很难针对每个实例做资源隔离。
相关模式
作者:羽客 | 出处:https://www.cnblogs.com/yorkwu | 本文版权归作者和博客园共有,欢迎转载,但请保留此段声明。
你现在的气质里,藏着你走过的路,读过的书,爱过的人。