部署:每虚拟机单个服务实例
2018-08-26 本文已影响0人
scheshan
背景
你已经采用了微服务架构并且将你的系统架构为一组服务。每个服务为了吞吐量和可用性,部署为一组服务实例。
问题
怎样将服务打包和部署?
限制
- 服务采用不同语言,不同框架,不同框架版本编写
- 每个服务为了吞吐量和可用性,存在多个服务实例
- 服务必须独立部署和扩展
- 服务实例彼此之间应该隔离
- 你需要可以快速的构建和部署服务
- 你需要可以限制服务消费的资源(CPU和内存)
- 你需要监控每个服务实例的行为
- 你想要可靠部署
- 你必须尽可能小成品的部署应用程序
解决方案
服务打包为虚拟机镜像,在不同的虚拟机上部署服务实例
示例
- Netflix将服务打包为EC2 AMI,并将服务实例部署为EC2实例。
结果
这个方法的优势包括:
- 简单直接的通过提升实例数量扩展服务。Amazon自动扩展组还可以基于负载自动做到这点。
- 虚拟机封装了用于构建服务的技术细节。所有服务,举个例子,都用相同的方法启动和停止。
- 服务实例之间是隔离的
- 虚拟机限制了服务实例可以消耗的CPU和内存
- IaaS解决方案商,比如AWS,为部署和管理虚拟机提供了成熟和有特色的基础设施。例如,
- 弹性负载均衡
- 自动扩展组
- 。。。
这个方法的弊端包括:
- 构建一个虚拟机镜像缓慢而耗费时间的。