本文说明了微服务架构的部署模式之一:每个容器一个服务实例。
场景
已经通过微服务架构的分解模式(参考按业务领域分解模式划分微服务),将整个应用程序划分为多个独立的微服务。
目标
- 每个服务由多个服务实例组成,用于提高吞吐量和可用性。
- 服务必须可独立部署和扩展。
- 服务实例需要彼此隔离。
- 需要能够快速构建和部署服务。
- 需要能够约束服务所消耗的资源(CPU和内存)。
- 需要监视每个服务实例的性能和行为。
- 部署必须是可靠的。
- 部署必须是经济高效的。
方法
将服务打包为(Docker)容器映像,并将每个服务实例在本地容器引擎中运行,或者通过容器编排工具部署运行,常见容器编排工具有:
- Kubernetes
- Swarm
- Mesos
优点
- 通过更改容器实例的数量可以直接扩展和缩小服务能力。
- 容器封装了用于构建服务的技术的细节,所有服务都以完全相同的方式启动和停止。
- 每个服务实例都是隔离的。
- 容器对服务实例消耗的CPU和内存施加限制。
- 容器的构建和启动速度极快。
缺点
- 部署容器的基础架构不如部署虚拟机的基础架构丰富。