什么是AWS Lambda?——事件驱动的函数执行环境
AWS CTO Werner Vogels在AWS re:Invent 2014大会的第二场主题演讲上公布了两个新服务和一系列新的实例,两个新服务都相当令人瞩目:第一个宣布的新服务是Amazon EC2 Container Service,跟Docker紧密联合的管理服务,令人兴奋,不过不是本篇报道的重点。
本篇报道主要想向大家介绍一下今天宣布的第二个服务:AWS Lambda。
什么是AWS Lambda?
根据Jeff Barr在博客上的描述,Lambda是一个“可简单创建Lambda函数、无需管理的计算平台”。不过我们也可以这么理解:Lambda是一个针对AWS计算资源的IFTTT脚本创建器和管理器。
举个例子:你有一个照片类应用。照片上传到S3之后,需要在DynamoDB上记录新照片的元数据。Lambda的作用就是可以有一个地方放一个触发脚本来执行这个任务,而不用关心这个脚本运行在什么机器或者虚拟机上。
Vogels在专访中表示,也可以将Lambda理解为将functions(函数)从计算资源层抽象出来的服务。
Lambda的设计理念
Werner Vogels在主题演讲上简要叙述了Lambda设计思路的由来。
Vogels首先抛出一个问题:什么是云计算的根本(primitives)?
答案:云计算是一个执行环境。
Vogels再抛出第二个问题:什么是应用的根本?
答案:函数(functions,即业务逻辑的载体)+数据(data,即跟业务相关的输入与输出),以及这两者之间的交互——即事件(events。常见的事件如增加、变更、删除等)。
换言之,对于一个应用来说,除了functions、data、events这三个东西是根本之外,其他无论什么代码和框架,无非都是胶水或者UI罢了。
既然如此,理想的情况是用最少的时间写胶水,将做多的时间投入到应用的核心当中。
而最常见的胶水代码,就是触发器(trigger):当发生一个事件(event)时,执行某个函数(function),输出新的数据 (data)。Vogels以Excel表单为例:在一个表单当中,一个单元格数值的变更,触发总和列对应单元格数值的变更,就是一个事件触发函数将新的 变量纳入计算得出新的数值的过程。这个过程是自动的,还可以是并发的,即一处变更同时触发多个函数。
基于这个思路,AWS做了Lambda服务。
Lambda的用法
以下内容来自于Jeff Barr的博文:
Lambda服务的核心概念是Lambda function(简称function,函数),目前仅支持Node.js。围绕function可以定义情景,包括执行环境(语言、内存、超时、 IAM角色)以及这个function要触发的另一个function。function的代码和有关情景的元数据均存储在AWS中,以ARN(Amazon Resource Name)的方式被外部识别。如需包含第三方库,可以放在ZIP文件中上传。
function上传之后,开发者可以将其指定到指定的AWS资源(如某个S3 bucket,某个DynamoDB表,某个Kinesis流),然后Lambda就会建立该资源跟你的function之间的关联。当资源方面发生变 动,Lambda就会去自动张罗资源去执行你的function。用于运行function的资源的创建分配和释放都有Lambda自动来做,开发者完全 不需要去干预。
每一个function默认会指定一个比较短的执行时间上限,不过这个上限最高可以调整到60秒。
每一个function具有双重的IAM角色:一个是触发角色(invocation role),决定Lambda执行某个function的权限;另一个是执行角色(execution role),决定该function操作AWS资源的权限。
Lambda会监控每个function的执行情况,并将请求数、延时、可用性、错误率等指标记录在CloudWatch里。控制台里可以看到过去30日的指标。
使用Lambda的两点须知:
- 情景信息设置了该function的可用内存,可设置到128MB到1GB之间的任何数值。Lambda会这个数值选择相应的CPU能力、网络带宽和IO带宽。
- 每个function的触发可以使用最多256个进程或线程,占用本地512MB存储空间,1024个文件描述符,以及10个出口网络连接。
- Lambda对每个AWS账户设置了一系列管理限制。预览版期间,每个function最多可同时触发另外25个function。
Lambda服务的定价见官网,由请求数、function运行期间使用的存储、运行期间使用的内存三部分组成。预览版期间有一部分免费的用量。
总结
Lambda是让开发者们兴奋的服务,在Twitter上激起了大量讨论。Jeff Barr表示Lambda后续还会有很多更新,比如对更多AWS资源的支持和对更多语言的支持。
除了Amazon EC2 Container Service和AWS Lambda之外,本次主题演讲还宣布了高性能EC2实例C4,可挂载的EBS卷(SSD)可支持到16TB的尺寸。
转自:http://www.infoq.com/cn/news/2014/11/aws-lambda-summary
什么是AWS Lambda?——事件驱动的函数执行环境的更多相关文章
- Qwiklab'实验-API Gateway, AWS Lambda'
title: AWS之Qwiklab subtitle: 2. Qwiklab'实验-API Gateway, AWS Lambda' date: 2018-09-20 17:29:20 --- In ...
- Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ...
- JavaScript语言精粹--执行环境及作用域,this
1.执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为. 每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中. 虽然我们无法访问,但是解析器在处理数据时 ...
- JavaScript执行环境
执行环境(Execution Context,也称为"执行上下文")是JavaScript中最为重要的一个概念.执行环境定义了变量或函数有权访问的其它数据,决定了各自的行为.当Ja ...
- JavaScript值类型与执行环境和垃圾处理机制
JavaScript变量分为基本值类型和引用值类型,基本值类型就是以下这五种:Boolean,Number,String,Null,Undefined.基本值类型和引用值类型具有以下特点: 1.基本值 ...
- 深入理解javascript作用域系列第五篇——一张图理解执行环境和作用域
× 目录 [1]图示 [2]概念 [3]说明[4]总结 前面的话 对于执行环境(execution context)和作用域(scope)并不容易区分,甚至很多人认为它们就是一回事,只是高程和犀牛书关 ...
- js执行环境的深入理解
第一个例子中 :之所以每个函数都返回不同的值的原因 有2点 (简写如下文) 就是[SCOPE]内部属性,函数可能拥有相同的父作用域时,多个函数引用同一个[SCOPE]属性,所以return i的值还是 ...
- 深入理解javascript中执行环境(作用域)与作用域链
深入理解javascript中执行环境(作用域)与作用域链 相信很多初学者对与javascript中的执行环境与作用域链不能很好的理解,这里,我会按照自己的理解同大家一起分享. 一般情况下,我们把执行 ...
- 【原】javascript执行环境及作用域
最近在重读<javascript高级程序设计3>,觉得应该写一些博客记录一下学习的一些知识,不然都忘光啦.今天要总结的是js执行环境和作用域. 首先来说一下执行环境 一.执行环境 书上概念 ...
随机推荐
- ORACLE MOS 翻译
http://blog.csdn.net/msdnchina/article/details/53174196
- Android -- native关键字
native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中.Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口 ...
- 在Intellij上面导入项目 & AOP示例项目 & AspectJ学习 & Spring AoP学习
为了学习这篇文章里面下载的代码:http://www.cnblogs.com/charlesblc/p/6083687.html 需要用Intellij导入一个已有工程.源文件原始内容也可见:link ...
- requests(爬虫常用)库的使用
Requests库的使用 基于urllib改写的库 示例: import requests response=requests.get('http://www.baidu.com')#get请求 pr ...
- mysql 海量数据删除
百度知道 - mysql删除海量数据 MySQL 数据库删除大批量数据的优化 看到这儿的话,最后看下这篇文章,对于操作海量数据的sql深入分析 cnblogs - 深度分析DROP,TRU ...
- Libx264 编码错误 Input picture width(320) is greater than stride (0)
Ffmpeg libx264编码出现 Input picture width(320) is greater than stride (0),问题出在视频格式不正确. libx264 编码要求输入源的 ...
- Excel应用----制作二级下拉菜单【转】
应用: 原始数据源是两列的源数据,那该如何制作二级下拉菜单, 当然可以将这两列的数据源,转换成上面的那种格式,再用上面的方法来制作. 今天教大学的方法是直接通过这种两列式的数据源来制作下拉菜单,如果A ...
- 【每日Scrum】第二天(4.12) TD学生助手Sprint1站立会议
TD学生助手Sprint1站立会议(4.12) 任务看板 站立会议内容 组员 昨天 今天 困难 签到 刘铸辉 (组长) 做了几个Sqlite编辑事件导入数据库没成功,就编辑图片滑动显示功能 今天学习了 ...
- CentOS minimal 安装ssh 服务 和客户端
检查是否装了SSH包 如果现实有openssh-server 说明系统已经安装了ssh 2 如果系统没有安装ssh 那么可以在线安装 yum install openssh-server 3 设置 ...
- 实习日记)select option 选择不同的option时, 页面发生不同的变化
怎么在下拉框的选择不同的option时, 页面发生响应的变化 因为option是没有点击事件什么的, 只有select才有, 所以不能通过option的点击事件来完成, 所以开始的尝试都失败了(之前 ...