部署微服务应用

221 阅读2分钟

部署

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

image.png 有四种主要的部署选项:
1.使用编程语言特定的发布包格式部署服务,例如Java WAR或JAR文件
2.将服务部署为虚拟机,把服务打包为虚拟机镜像,这个镜像封装了服务的技术栈,这样可以简单化部署
3.将服务部署为容器,这些容器比虚拟机更轻量级。我将展示如何使用流行的Docker编排框架Kubernets部署FTGO应用程序的Restaurant Service
4.使用Serverless部署模式部署服务,这比容器更加现代化。我们将研究如何使用AWS Lambda(一种流行的Serverless平台)部署为Restaurant Service

部署模式:编程语言特定的发布包格式

image.png

image.png

好处

1.快速部署
2.高效的资源利用,尤其是在同一台机器上或同一进程中运行多个实例时

弊端

1.缺乏对技术栈的封装
2.无法约束服务实例消耗的资源
3.在同一台计算机上运行多个服务实例时缺少隔离
4.很难自动判定放置服务实例的位置

部署模式:将服务部署为虚拟机

image.png

image.png

好处

1.虚拟机镜像封装了技术栈
2.隔离的服务实例
3.使用成熟的云计算基础设施

弊端

1.资源利用效率较低
2.部署速度相对缓慢
3.系统管理的额外开销

部署模式:将服务部署为容器

image.png

image.png

image.png

构建Docker镜像

image.png

image.png

image.png

image.png

好处

1.封装技术栈,可以用容器的API实现对服务的管理
2.服务实例是隔离的
3.服务实例的资源受到限制

弊端

image.png

使用Kubernetes部署程序

Kubernetes是一个Docker编排框架,是Docker之上的一个软件层,它将一组计算机硬件资源转变为用于运行服务的单一资源池

Docker编排器的功能

1.资源管理
2.调度
3.服务管理

image.png

Kubernetes架构

Kubernetes的计算机集群分为主节点和普通节点(工作节点)
工作节点会运行一个或多个Pod。Pod是Kubernetes的部署单元,由一组容器组成。

image.png

image.png

image.png

Kubernetes关键概念

image.png

使用服务网格分割部署与发布流程

image.png

image.png

image.png

image.png

部署模式:Serverless部署

image.png

开发lambda函数

使用Lambda函数的好处

image.png

使用Lambda函数的弊端

image.png

AWS Lambda版本的服务

image.png