部署:无服务器部署模式

2018-08-27  本文已影响0人  scheshan

背景

你已经采用了微服务架构并且将你的系统架构为一组服务。每个服务为了吞吐量和可用性,部署为一组服务实例。

问题

怎样将服务打包和部署?

限制

解决方案

采用一种隐藏了任何服务器概念-物理机,虚拟机,容器-的基础设施(例如,预留资源或者预分配资源)。这个基础设施获取你的代码并运行。根据每个请求的资源消耗向你收费。

使用这种方法部署你的服务,你将代码打包(例如,打包成ZIP文件),将它上传到部署基础设施,并描述期待的性能特点。

部署基础设施是公有云提供商操作的工具。它通常采用容器或者虚拟机隔离服务。然而,这些细节对你是隐藏的。不止是你,你的公司的其他任何人都无须对操作底层基础设施,例如操作系统,虚拟机等等负责。

示例

有少数几个不同的无服务器部署环境:

他们提供类似的功能,但是AWS Lambda有更丰富的特性。一个AWS Lambda是个无状态组件,执行和处理的事件。创建AWS Lambda函数,你需要打包你的NodeJS,Java或者Python代码为ZIP文件,上传到AWS Lambda。你还需要指定函数名字和资源限制。

当一个事件触发,AWS Lambda找到函数的一个空闲实例,如果没有可用的就启动一个,然后调用函数。AWS Lambda运行足够多的实例来应对负载。隐藏的细节是,它用容器来隔离lambda function的实例。像你可能期待的那样,AWS Lambda在EC2实例上运行这些容器。

有四种方法可以运行lamda函数。一个选择是配置你的lamda函数在AWS服务,例如S3,DynamoDB或者Kinesis产生事件时调用。事件的例子包括如下几种:

另外一种执行lambda函数的方法,是配置AWS Lambda网关,将HTTP请求路由到你的lambda。AWS网关将HTTP请求转换为事件对象,执行lambda函数,从lambda函数返回结果中生成HTTP响应。

你可以通过AWS Lambda Web Service API直接执行你的lambda函数。你的应用提供一个JSON对象,传递到lambda函数。Web Service返回lambda返回的结果。

第四种方法是通过cron类似的机制定时调用。举个例子,你可以让AWS每五分钟执行你的lambda函数。

每种执行方式的开销,是函数执行的时间,以100毫秒增量度量,和内存消耗。

结果

无服务器部署的优势包括:

无服务器部署的弊端包括:

部署基础设施将在内部采用其他一种模式部署你的应用。它很可能采用每主机单个服务实例

相关模式

上一篇 下一篇

猜你喜欢

热点阅读