《微服务架构设计模式》读书笔记---第十二章:部署微服务应用

部署包含两个相关联的概念:流程和架构

部署流程包括一些由开发人员和运维人员执行的步骤,以便将软件投入到生产环境。
部署架构,定义了该软件运行的环境结构。

四种部署选项:

  1. 使用编程语言特定的发布包格式部署服务,例如JAVA JAR或者WAR文件。
  2. 将服务部署为虚拟机,把服务打包为虚拟机镜像
  3. 将服务部署为容器
  4. 使用Serverless部署模式部署服务。

使用编程语言特定的发布包格式部署服务

好处是快速高效;高效的利用资源,一台机器上,可以运行多个实例

弊端是:

  1. 缺乏对技术栈的封装,运维团队需要了解每个服务的细节,以准备对应的环境和web容器。
  2. 无法约束服务实例消耗的资源
  3. 同一台服务器上运行多个服务实例,缺乏隔离

将服务部署为虚拟机

将作为虚拟机镜像打包的服务部署到生产环境中,每个服务实例都是一个虚拟机。
好处:

  • 封装了技术栈
  • 隔离的服务实例

弊端:

  • 资源利用率较低
  • 部署速度较慢。构建镜像,从镜像实例化虚拟机都比较耗时
  • 系统管理的额外开销。需要负责更新镜像的操作系统和运行时打补丁

将服务部署为容器

在构建时,部署流水线使用容器镜像构建工具,该工具读取服务代码和镜像描述,以创建容器镜像并将其存储在镜像仓库中。在运行时,从个景象仓库中拉取容器镜像,并用于创建容器。
好处是:

  • 封装技术栈
  • 服务实例是隔离的。
  • 服务实例的资源收到限制

弊端,还是需要负责更新镜像的操作系统和运行时打补丁

Serverless部署

之前的三种部署方式,

  1. 都会存在资源浪费的情况,例如即使处于闲置状态,也需要为容器和虚拟机付费
    2.需要负责系统管理,必须承担操作系统和软件打补丁的工作

Serverless提供一种受约束的编程模型,以换取最小化的系统管理开销。如果需要更加精细化的管理基础设施,那么就不要选择Serverless
以AWS Lambda为例,只需要将应用程序打包为ZIP或者JAR文件,上载到AWS Lamdba,并指定相应请求的函数名称。AWS Lambda会自动运行你的微服务实例来影响请求,只需要为所花费的时间和消耗的内存付费。

好处:

  • 消除系统管理任务
  • 弹性,不需要预测负载,而判断实例数量。AWS Lamdba会帮忙处理。
  • 基于使用情况定价

弊端:

  • 长尾延迟。AWS需要花费时间来配置应用程序实例和启动应用程序,可能导致某些请求具有高延迟。
  • 基于有限事件与请求的编程模型。不适应长时间运行的服务,例如消息代理服务。

你可能感兴趣的:(《微服务架构设计模式》读书笔记---第十二章:部署微服务应用)