计算服务的演进
EC2------Container-------Lambda
虚拟机---容器--------------serverless无服务器架构
什么是AWS Lambda?
AWS lambda的核心是事件驱动,驱动可能来自,Alexa,SNS,DynamoDB,S3,Kinesis等;
AWS lambda在整个AWS这个版图中占有非常重要的地位。
根据Jeff Barr在博客上的描述,Lambda是一个“可简单创建Lambda函数、无需管理的计算平台”。不过我们也可以这么理解:Lambda是一个针对AWS计算资源的IFTTT脚本创建器和管理器。
举个例子:你有一个照片类应用。照片上传到S3之后,需要在DynamoDB上记录新照片的元数据。Lambda的作用就是可以有一个地方放一个触发脚本来执行这个任务,而不用关心这个脚本运行在什么机器或者虚拟机上。
Vogels在专访中表示,也可以将Lambda理解为将functions(函数)从计算资源层抽象出来的服务。
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是AWS提供的一款无服务器计算服务。您不需要管理服务器、不需要安装操作系统、不需要维护运行时环境、不需要担心应用的可用性和扩展性。
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自动来做,开发者完全 不需要去干预。
什么是AWS Lambda?_Data+Science+Insight的博客-CSDN博客