原文地址:http://microservices.io/patterns/deployment/service-per-container.html
Context
您已经应用了Microservice架构模式,并将您的系统构建为一组服务。每个服务被部署为一组用于吞吐量和可用性的服务实例。
Problem
服务如何打包和部署?
Forces
•服务使用各种语言,框架和框架版本编写
•每个服务由多个服务实例组成,用于吞吐量和可用性
•服务必须可独立部署和可扩展
•服务实例需要彼此隔离
•您需要能够快速构建和部署服务
•您需要能够限制服务使用的资源(CPU和内存)
•您需要监视每个服务实例的行为
•您希望部署可靠
•您必须尽可能划算地部署应用程序
Solution
将服务打包为(Docker)容器映像,并将每个服务实例部署为容器
Examples
Docker正在成为一种非常受欢迎的打包和部署服务的方式。每个服务都打包成Docker映像,每个服务实例都是一个Docker容器。有几个Docker集群框架包括:
Resulting context
这种方法的好处包括:
•直接通过更改容器实例的数量来扩展和缩小服务。
•容器封装了用于构建服务的技术细节。例如,所有服务都以完全相同的方式启动和停止。
•每个服务实例都是隔离的
•容器对服务实例占用的CPU和内存进行限制
•容器构建和启动非常快。例如,将应用程序打包为Docker容器比将其打包为AMI的速度要快100倍。由于只有应用程序进程启动而不是整个操作系统,Docker容器的启动速度要比VM快得多。
这种方法的缺点包括:
•用于部署容器的基础架构不如部署虚拟机的基础设施那么丰富。
Related patterns
- This pattern is a refinement of the Service Instance per Host pattern
- The Service Instance per VM pattern is an alternative solution
- The Serverless deployment pattern is an alternative solution.