亚马逊AWS的Serverless架构
作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs
Serverless平台允许运行应用程序,包括计算、存储和网络——无需启动和管理单个(虚拟)机器。本文主要介绍AWS上的Serverless架构,包括Lambda、API Gateway、DynamoDB、S3等。Serverless架构模式也可以转移到其他云平台实施。
能够专注于软件开发而不是操作一组服务器是Serverless的主要驱动力。或者正如Amazon.com首席技术官Werner Vogels所说:“没有服务器比不管理服务器更容易管理。”Serverless基础设施的另一个重要方面是细粒度的计费和极高的可扩展性。为了给你一个典型用例的印象,这里列举了一些Serverless应用程序:
- 在高负载场景使用REST API从Web应用程序收集指标
- 从传入的包含订单和状态信息的电子邮件中提取和存储数据
- 创建提供标准后端CRUD操作的REST API
- 在大数据场景的ETL过程中收集和转换数据
- 分析来自实时数据流的日志消息
- 构建一个在后台可以与多个API交互的聊天机器人chatbot
限制
在高可用性和高可扩展性的基础设施上执行源代码的能力是每个Serverless平台的核心。例如,AWS Lambda允许运行源代码以响应事件。AWS提供了计算基础设施和针对JavaScript(Node.js)、Java、Python或.NET Core(C#)等编程语言的运行时环境。典型的Serverless应用程序由多个函数组成。在AWS Lambda上,每个函数执行的超时时间为5分钟。但可以通过高度并行的方式执行相同或不同的函数。
遵循Serverless方法时,需要将应用程序划分为多个小功能。利用微服务架构可以帮助实现这个功能划分的目标。Serverless最适合事件驱动的架构。当编排多个Serverless函数来构建一个系统时,事件是触发Serverless函数的源。
基于以下事件可以触发一个AWS Lambda的函数:
- 传入HTTPS请求
- 更改存储在数据库或对象存储中的数据
- 传入邮件(例如电子邮件)
- 将任务发布到主题或实时数据流
- 计划事件(与cronjob相似)