架构模式: 服务实例与虚拟机一一对应

架构模式: 服务实例与虚拟机一一对应

上下文

您已应用微服务架构模式并将系统架构为一组服务。每个服务都部署为一组服务实例,以实现吞吐量和可用性。

问题

如何打包和部署服务?

要点

  • 服务使用各种语言,框架和框架版本    
  • 编写每个服务包含多个服务实例
  • 用于吞吐量和可用性服务必须是可独立部署的
  • 可扩展的服务实例需要彼此隔离    
  • 您需要能够快速构建和部署服务  
  • 您需要能够约束服务所消耗的资源(CPU和内存)
  • 您需要监视每个服务实例的行为    
  • 您希望部署可靠    
  • 您必须尽可能经济高效地部署应用程序 

解决方案

将服务打包为虚拟机映像,并将每个服务实例部署为单独的VM

例子

  • Netflix将每个服务打包为EC2 AMI,并将每个服务实例部署为EC2实例。999

结果上下文

这种方法的好处包括:

  • 通过增加实例数量可以直接扩展服务。Amazon Autoscaling Groups甚至可以根据负载自动执行此操作。
  • VM封装了用于构建服务的技术的详细信息。例如,所有服务都以完全相同的方式启动和停止。
  • 每个服务实例都是隔离的
  • VM对服务实例消耗的CPU和内存施加限制
  • AWS等IaaS解决方案为部署和管理虚拟机提供了成熟且功能丰富的基础架构。例如,
    • Elastic Load Balancer -
    • Autoscaling groups

这种方法的缺点包括:

  • 构建VM映像既缓慢又耗时

关联的模式

  • 此模式是每个主机模式的单个服务的细化
  • 每个容器的服务实例模式是另一种解决方案
  • 无服务器部署模式是另一种解决方案。

posted on 2019-08-02 15:47  yaofengspark  阅读(379)  评论(0编辑  收藏  举报

导航