当前位置: 首页 > 编程日记 > 正文

re:Invent大会第四天:为什么Lambda值得你更多关注?

2018年11月29日的拉斯维加斯,AWS re:Invent大会进入第四天,上午照例由AWS CTO Werner Vogels带来主题演讲。

从主题演讲之前到主题演讲之后,改变最大的产品毫无疑问就是Lambda,有至少8个相关的最新发布。Vogels在2014年正式对外发布了Lambda,到现在已经过去了四年,他自己对此的评价是:那是他有生以来做过的最精彩的一个主题演讲。从那开始,Serverless这个说法开始在圈内流行,成为全球趋势;而直到今天,Lambda仍然是独树一帜,正式上线三年以来已经发展了超过十万个客户,每个月平均处理万亿级别的请求,在AWS服务线当中使用量相当可观了。

InfoQ中文站记者与AWS产品市场经理Aaron Kao进行了一对一的交流,对这一系列Lambda的新发布进行了梳理。我们基本可以认为,如果你没有时间深入了解本次的发布,那么可以只记住两个东西:

  1. Firecracker
  2. Lambda Custom Runtime(自选运行时)

一、Firecracker

Firecracker是大会第二天发布的,AWS在晚场活动上宣布了该项目的开源。作为Lambda背后的支持技术之一,Firecracker在serverless的技术栈当中处于Hypervisor层之上、Guest OS层之下,如图:

\"\"

根据官方介绍,Firecracker与docker或者Kata containers并不存在替代关系。Firecracker真正要替代的是QEMU——因为QEMU要支持各种不同种类的设备类型,搞得非常粗重、启动费时;而Firecracker可以从云计算的角度进行设计,仅仅针对单一设备类型,就可以做到非常轻便。以下摘录两段官方介绍:

Firecracker跟QEMU的区别:

Firecracker是云原生的QEMU替代者,专门针对容器运行的安全和效率进行设计。Firecracker对guest OS的设备规格设置了最低限度的要求,把非必要的功能都去掉了(仅仅留下了4个模拟设备:virtio-net、virtio-block、serial console,以及一个专门用来关闭microVM的单键控制器)。由此,在一个流水线内核加载进程中,启动时间可以达到125ms以下,内存占用也较小。Firecracker进程还提供了RESTful的控制API,用于设置microVM的资源使用上限,并给microVM提供元数据服务,方便host与guest之间共享配置数据。

那么,Firecracker现在能跟Kubernetes、Docker、Kata containers一起用吗?

现在还不行。我们开源Firecracker,是因为我们认为它在运行容器的安全方面有一些独到的意义,我们希望社区里的同行们能从中收到一些启发。我们在努力让Firecracker能够与容器生态自然集成,未来的目标是让容器负载隔离这件事情有更多的选项,选项之间能够有无缝的集成。

根据AWS计算服务总监Deepak Singh的介绍,Firecracker的研发是从大概一年前开始的,最初的起点是crosvm——也就是Google Chrome OS的VM技术。于是,因为crosvm是用Rust语言写的,所以Firecracker也是基于Rust语言。

Firecracker一经开源,短短几天就收获了四千多的star https://github.com/firecracker-microvm/firecracker 以及大量的pull request。

二、Lambda Custom Runtime

在今天之前,Lambda已经支持了五种编程语言——node.js、Python、Java、.NET、Go,以及shell脚本。今天,Vogels发布了Lambda对Ruby语言的支持,紧接着发布了Lambda Custom Runtime。

这个Custom Runtime什么意思呢?

就是说,你可以自己上传为Lambda定制的运行时,从而让Lambda能够支持你想用的编程语言。在今天第一批发布的Runtime里面,有C++,有Rust,有Elixir,有Erlang,有PHP,还有一个叫做COBOL(真是令人意想不到)。

所以理论上,现在的Lambda可以支持任意一种编程语言!

三、其他发布

Vogels主题演讲中的其他发布包括:

一些IDE插件:本次Keynote针对PyCharm、IntelliJ、VS Code这三个工具发布了AWS的插件。

Lambda Layers:这个功能可以提升代码的复用率。将一个通用组件打包成ZIP文件上传给Lambda,做成一个Lambda Layer,就可以在不同的Lambda Functions之间共享这个组件。

Nested Applications:这个功能也可以提升代码的复用率,不过是通过另一条方式,也就是去年发布的Serverless Application Repository。

Step Functions与更多服务的集成:Step Functions是去年发布的功能,给serverless应用做调试比较方便。本次发布之后,现在AWS的Batch、ECS、Fargate、Glue、DynamoDB、SNS、SQS、SageMaker也都支持Step Functions了。

API Gateway现在支持WebSocket了:这是一个支持实时双向通讯的功能。

ALB可以指向Lambda了:应用负载均衡原本不能指向Lambda,只能指向EC2和容器,现在可以指向Lambda了。

Kafka托管服务:AWS在2013年发布了Kinesis服务之后,经常遇到用户问:你这个做的事情不是跟Kafka一样吗,为啥不干脆在你们平台上面提供Kafka的服务呢?当时的AWS对此是不同意的,因为当时的Kafka项目发展也没几年,并不成熟,万一跟着人家跑坑里去了咋办?就这样,5年时间过去了。期间,AWS用户还是可以用Kafka的,只不过得自己架设配置。今天AWS发布Kafka托管服务可能有很多原因,但有一点是肯定的:Kafka真的有很多人在用。

Well-Architected Tool:这是一个用户自检工具,可以引导用户、帮助他们发现自己的架构是否与AWS推荐的最佳实践一致。

此外,有一个服务并没有出现在Vogels的主题演讲上,但Aaron Kao和Deepak Singh都推荐我们可以关注一下,那就是AWS App Mesh。这是AWS Serverless技术体系中第一次提供Service Mesh服务。

针对re:Invent Werner Vogels 第四日发布,前线记者也专访了InfoQ特约观察员,看看他们如何解读这一系列的发布及其背后的某些衍生逻辑:

相关文章:

1145 Hashing - Average Search Time

目录 思路 样例解释 AC代码 思路 要做出这道题必须直到除留余数法和平方探测法的原理。 除此之外有两个注意点: 1. 在查找时,如果当前位置上不是要找的数会继续找下去(如果k没超过表长的话),但是如果当前位置上是0,说明表里…

C#和Java的闭包-Jon谈《The Beauty of Closures》

第一段略。。。 大多数讲闭包的文章都是说函数式语言,因为它们往往对闭包的支持最完善。当你在使用函数式语言时,很可能已经清楚了解了什么是闭包,所以我想写一篇在经典OO语言出现的闭包有什么用处应该也是很合适的事情。这篇文章我准备讲一下…

谷歌浏览器输入框背景颜色变黄的解决方案

2019独角兽企业重金招聘Python工程师标准>>> input:-webkit-autofill, input:-webkit-autofill:hover, input:-webkit-autofill:focus { box-shadow:0 0 0 60px #eee inset; -webkit-text-fill-color: #878787; } 转载于:https://my.oschina.net/kitty0107/blog/296…

男人最不该做的7件事

1.没有目标 2.浪费时间 3.不独立 4.被动地活着 5.不规划自己的人生 6.不学习吸收信息 7.不接受爱情转载于:https://www.cnblogs.com/jiu0821/p/4315660.html

1085 Perfect Sequence

明确题目的核心是要找到 找到第一个满足 M > m*p 的M的下标。然后用该下标减去起点的下标即为序列元素个数。 二分区间应当是M所有可能的取值范围。起点是i1,终点是N而不是N-1,虽然A[N]上无元素。注意啊,原题要找的M是小于等于m*p的&…

[笔记]Go语言在Linux环境下输出彩色字符

Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例: fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B) 其中0x1B是标记,[开始定义颜色,1代表高亮&#xf…

javascript中this那些事

定义 this是函数执行的上下文。 调用方式 1. 作为函数调用,指向window(严格模式报undefined的错)。 var namehello; function a() { console.log(this.name) } a(); //hellovar c{ name:haha, d: function(){ a(); } } c.d(…

java序列化的作用-这个挺有用的,不妨学学

http://bbs.tech.ccidnet.com/read.php?tid249048 最近在阅读Core J2EE Patterns 的时候发现例子里用于在各个层次里进行传输的TO(Data Transfer Object)都实现了java.io.Serializable接口,看到这些偶突然感到茅塞顿开~困扰了很久…

二分法典例:木棒切割问题

Input : 输入木棒根数n,要得到的等长木棒数量K,以及n根木棒的长度。 Output : 等长木棒的最大长度。 用二分法求解这道题,首先要找到以得到的等长木棒数量为因变量、等长木棒长度为自变量函数。 int getK(int l){//随着l增大,返…

对Android 开发者有益的 40 条优化建议(转)

下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题对每个你像添加的特征重复上述过程。这种方法能够激励你,因为你在保持不断迭代,不经意中你学到…

英语语法总结--连词

连词 连词是一种虚词, 它不能独立担任句子成分而只起连接词与词,短语与短语以及句与句的作用。连词主要可分为两类:并列连词和从属连词。并列连词用来连接平行的词、词组和分 句。如:and, but, or, nor, so, therefore, yet, howe…

开放平台鉴权以及OAuth2.0介绍

OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容。OAuth 2.0不兼容1.0。协议的参与者 RO (resource owner): 资源所有者&#xf…

1044 Shopping in Mars

这题我写了两个二分函数。 BS借用的模板是找到第一个大于等于总价的商品下标,然后返回的是钻石价值和减去商品总价,通过遍历来得到最小的差值,注意遍历的最后一个数字的时候可能会返回负值,所以只有当返回值大于等于0才可以用来竞…

nodeJS之eventproxy源码解读

1.源码缩影 !(function (name, definition) { var hasDefine typeof define function, //检查上下文环境是否为AMD或CMD hasExports typeof module ! undefined && module.exports; //检查上下文环境是否为Node if (hasDefine) { define(definition); //AMD环境或CM…

解决phpmyadmin3.4空密码登录被禁止登陆的方法

很多时候我们在本机测试时会将root用户密码设置为空。因为我把php升级到了5.3.1,以前的phpmyadmin版本不能用了,就升级到phpMyAdmin 3.2.4版的时候,会遇到无法以空密码登录root用户的情况。怎么解决呢? 请参照如下步骤: 1、打开程…

CentOS安装新版RabbitMQ解决Erlang 19.3版本依赖

2019独角兽企业重金招聘Python工程师标准>>> 通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守。 RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是安装的时候会提示需要erl…

1048 Find Coins(二分法解法)

非常基础的二分法-寻找序列中是否存在某一条件的元素 的应用 AC代码 #include<cstdio> #include<iostream> #include<set> #include<vector> #include<map> #include<algorithm>using namespace std;const int SUP 100000000; const in…

关于chrome等浏览器不支持showModalDialog的解决方案

目前&#xff0c;新版本的chrome和opera、Firefox等浏览器已经不支持showModalDialog方法。 如果是没有接收返回值的&#xff0c;可以直接将window.showModalDialog改为window.open。 需要接收返回值的情况&#xff1a; 父页面设置&#xff1a; var uIdName; function chooseus…

Flex Javascript 交互实现代码

关键字&#xff1a;ExternalInterface所用类库&#xff1a;SWFObject/*** Flex调用Javascript函数* params functionName:String Javascript函数名称* params ...params Javascript函数参数* return 返回Javascript函数的return内容**/ExternalInterface.call(functionName:Str…

C#反射使用时注意BindingFlags的用法(转载)

最近刚刚开始用反射做项目&#xff0c;遇到一个小的知识点&#xff0c;记录一下。 c#反射查找方法时&#xff0c;默认只能查到public方法。如果想要查找private方法&#xff0c;需要设定BindingFlags. 即&#xff1a; BindingFlags.Public|BindingFlags.Instance 默认…

1126 Eulerian Path

主要考英语或者数学基础。 一幅连通图的奇点个数为0或2时才能够被一笔画。 连通图的判断用DFS来计数。 连通图0个奇点&#xff1a;Eulerian 连通图2个奇点&#xff1a;semi-Eulerian 非连通图/连通图其他数量的奇点&#xff1a;non-Eulerian AC代码 #include<cstdio&…

各种小的 dp (精)

Q~ 抛一枚硬币 n 次&#xff0c;每次可能是正面或者反面向上&#xff0c;求没有连续超过 k 次硬币向上的方案数 A &#xff1a; dp[ i ] 表示到 i 位置的方案数&#xff0c; 1 . 当 i < k 时&#xff0c; dp[i] dp[i-1]*2 2 . 当 i k 时&#xff0c; dp[i] dp[i-1]*2 - 1…

写给还在大学的兄弟姐妹

看到软件专业毕业生之一个月攻略 这篇文章之后&#xff0c;忽然想起了自己两个多月前找工作时的写的一篇文章&#xff0c;便拿出来与大家分享。这仅是个人的一些看法&#xff0c;不正确之处还请各位指出&#xff0c;有砖尽管拍。 基础很重要 许多企业招聘&#xff0c;要求大学…

grunt学习

1、http://javascript.ruanyifeng.com/tool/grunt.html Grunt&#xff1a;任务自动管理工具 2、转载于:https://www.cnblogs.com/king-bj/p/4322794.html

IP地址和MAC地址

MAC地址又称硬件地址&#xff0c;是MAC帧的头部&#xff0c;在数据链路层只能看见MAC地址。 IP地址是逻辑地址&#xff0c;是IP数据报的头部&#xff0c;路由器根据IP地址进行路由选择。 IP地址为4个字节32位&#xff0c;编制经历了3个历史阶段。 MAC地址为6个字节48位。

ie9下console不兼容的问题

最近在调整项目在ie9下的展示问题&#xff0c;发现在ie9下&#xff0c;js文件不执行&#xff0c;打开控制台才执行&#xff0c;原因是ie9不支持console&#xff0c;以下给出两种解决方案&#xff1a;1. 在webpack.prod.conf.js 中添加并修改js插件配置项&#xff08;我用的是we…

[转载] linux、Solaris下xdmcp远程桌面服务

原文链接 http://youlvconglin.blog.163.com/blog/static/52320420106243857254/ 使用图形界面远程登录linux和Solaris&#xff0c;首先要在服务端开启xdmcp服务&#xff0c;windows下使用xmanager连接 Ubuntu下则使用下默认也安装了该客户端&#xff0c;一次打开[应用程序]-[…

3.2.4 控制图层显示的范围

为了是地图更加简洁 和 减小地图负载 &#xff0c;达到分级显示某些图层的效果&#xff0c;应该为每一个图层设置 合理的 可见比例尺范围。1 begin2 3 aeMapMain.Layer[2].MaximumScale :500000;//最大可见比例尺 分母4 aeMapMain.Layer[2].MinimumScale :1000000;//最小可见比…

1103 Integer Factorization 需再做

本题是典型的DFS剪枝 我对DFS有了更深的认识&#xff1a;整个过程就是一片森林(根节点不唯一)的生长&#xff0c;到了界限就得到结果并返回或者得不到结果也返回&#xff0c;DFS的参数存放的是所有需要积累的变量。 提示&#xff1a; 1. 最外层的while或者for可以看成是一个…

POJ1001--Exponentiation(幂计算)翻译

Exponentiation幂计算Time Limit: 500MSMemory Limit: 10000KTotal Submissions: 141868Accepted: 34673 Description 描述 Problems involving the computation of exact values of very large magnitude and precision are common. 高精度、大数值的计算问题是很常见的&…