架构模式:无服务器部署

12次阅读

上下文

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

如何打包和部署服务?

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

使用隐藏任何服务器概念(即保留或预分配资源)的部署基础结构 – 物理或虚拟主机或容器。基础架构获取服务的代码并运行它。根据消耗的资源,您需要为每个请求付费。

要使用此方法部署服务,请将代码打包(例如,作为 ZIP 文件),将其上载到部署基础结构并描述所需的性能特征。

部署基础结构是由公共云提供商运营的实用程序。它通常使用容器或虚拟机来隔离服务。但是,这些细节对您来说是隐藏的。您或您组织中的任何其他人都不负责管理任何低级基础架构,如操作系统,虚拟机等。

有几种不同的无服务器部署环境:

它们提供类似的功能,但 AWS Lambda 具有最丰富的功能集。AWS Lambda 函数是一个无状态组件,可以调用它来处理事件。要创建 AWS Lambda 函数,请将您的服务的 NodeJS,Java 或 Python 代码打包到 ZIP 文件中,然后将其上载到 AWS Lambda。您还可以指定处理事件和资源限制的函数的名称。

发生事件时,AWS Lambda 会找到您的函数的空闲实例,如果没有可用的则启动一个,并调用处理函数。AWS Lambda 运行足够的函数实例来处理负载。在封面下,它使用容器来隔离 lambda 函数的每个实例。正如您所料,AWS Lambda 在 EC2 实例上运行容器。

有四种方法可以调用 lambda 函数。一种选择是配置要调用的 lambda 函数,以响应由 AWS 服务(如 S3,DynamoDB 或 Kinesis)生成的事件。事件的示例包括以下内容:

  • 在 S3 存储桶中创建的对象,
  • 在 DynamoDB 表中创建,
  • 更新或删除项目,
  • 可以从 Kinesis 流中读取通过简单电子邮件服务接收的电子邮件的消息。

调用 lambda 函数的另一种方法是配置 AWS Lambda Gateway 以将 HTTP 请求路由到 lambda。AWS Gateway 将 HTTP 请求转换为事件对象,调用 lambda 函数,并从 lambda 函数的结果生成 HTTP 响应。

您还可以使用 AWS Lambda Web Service API 显式调用 lambda 函数。您调用 lambda 函数的应用程序提供一个 JSON 对象,该对象将传递给 lambda 函数。Web 服务调用返回 lambda 返回的值。

调用 lambda 函数的第四种方法是定期使用类似 cron 的机制。例如,您可以告诉 AWS 每五分钟调用一次 lambda 函数。
每次调用的成本是调用持续时间的函数,调整持续时间以 100 毫秒为增量,并消耗内存。
 

结果上下文

使用无服务器部署的好处包括:

  • 它消除了花费时间在管理低级基础架构上的无差别的繁重工作的需要。相反,您可以专注于您的代码。

  • 无服务器部署基础架构非常有弹性。它会自动扩展您的服务以处理负载。

  • 您为每个请求付费,而不是配置可能未充分利用的虚拟机或容器。

无服务器部署的缺点包括:

  • 显着的限制和约束 – 无服务器部署环境通常具有基于 VM 或基于容器的基础结构的更多约束。例如,AWS Lambda 仅支持几种语言。它仅适用于部署响应请求而运行的无状态应用程序。您无法部署长时间运行的有状态应用程序,例如数据库或消息代理。

  • 有限的“输入源”–  lambdas 只能响应来自有限的一组输入源的请求。AWS Lambda 并非旨在运行服务,例如,订阅诸如 RabbitMQ 之类的消息代理。

  • 应用程序必须快速启动 – 无服务器部署不适合您的服务需要很长时间才能启动

  • 高延迟风险 – 基础架构配置功能实例和初始化功能所需的时间可能会导致严重的延迟。此外,无服务器部署基础架构只能对负载增加做出反应。您无法主动预先配置容量。因此,当负载突然出现大量峰值时,您的应用程序最初可能会出现高延迟。

部署基础结构将使用其他模式之一在内部部署您的应用程序。它很可能会使用每个主机模式的服务服务。

关联的模式

  • 每个主机的多个服务实例模式是备用部署解决
  • 方案每个主机的单个服务模式是备用部署解决方案

 

原文链接:https://www.cnblogs.com/paxlyf/p/11289058.html

正文完
 
追风者
版权声明:本站原创文章,由 追风者 2024-01-02发表,共计1828字。
转载说明:声明:本站内容均来自互联网,归原创作者所有,如有侵权必删除。 本站文章皆由CC-4.0协议发布。