02 | 原理:通过一个案例,理解FaaS的运行逻辑
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
- 深入了解
- 翻译
- 解释
- 总结
FaaS极速启动的原理及其与传统应用部署方式的区别是本文的重点。文章通过具体案例和详细解释,帮助读者深入理解了FaaS的运行原理。首先介绍了Serverless的概念,然后通过快速部署纯FaaS的Serverless应用展示了FaaS应用背后的运行原理。文章从FaaS是如何运行的角度出发,对Serverless的运行逻辑进行了详细解释。作者指出,FaaS并没有改变应用运行的逻辑,只是通过技术手段屏蔽了复杂性,将全链路的模型简化了。具体来说,FaaS应用将构建代码的运行环境、负载均衡和反向代理、上传代码和启动应用等步骤抽象为函数服务、HTTP函数触发器和函数代码。文章还介绍了FaaS应用的调用链路,并对FaaS与应用托管PaaS平台的区别进行了比较。最后,作者引入了冷启动的概念,解释了FaaS如何实现极速启动。整体而言,本文通过具体案例和详细解释,帮助读者深入理解了FaaS的运行原理和其与传统应用部署方式的区别。 FaaS的冷启动时间短的主要原因是FaaS在设计上牺牲了用户的可控性和应用场景,来简化代码模型,并且通过分层结构进一步提升资源的利用率。
《Serverless 入门课》,新⼈⾸单¥29
全部留言(29)
- 最新
- 精选
- 程序员二师兄采用留言式学习法学习本专栏,小结: 1、Serverless 是对服务端运维体系的极端抽象。 2、关于 Faas 三层结构非常形象的描述,容器是操作系统,Runtime 是播放器,代码是小电影。 3、容器、Runtime 和函数实例的关系,一旦容器和 Runtime 启动后,就会维持一段时间,这段时间内函数实例可以直接处理用户数据请求。当一段时间内没有用户请求时,则会销毁函数实例,这样子可以达到缩容为 0。这里举手提个小问题,文章中提到的一段时间通常是多久呢? 今天把作业完成了再来留言 ~~
作者回复: 阿里云是15分钟,AWS是5分钟,腾讯云还不清楚这个数据。知道的同学,可以帮忙回复一下。
2020-04-2039 - 奕老师有个疑问,一个函数实例就会启动启动一个 runtime 吗? 会不会出现一个 runtime 运行多个函数实例? 每个函数实例都初始化一个runtime 会不会浪费资源? 还有在新建函数的时候都会有个函数运行内存,这个是一个runtime 限制的内存吗? 如果超过这个内存限制会怎么样的?
作者回复: 好问题,说明你在认真学习。 每个函数实例对应一个runtime。runtime运行多个函数实例是可以的,就是常驻进程模型,我们下节课会讲到。每个函数初始化一个runtime不会浪费资源,如果函数执行完就销毁,就是用完即毁型,我们下节课会讲到。 函数运行的内存,是容器层的限制,不是runtime。如果内存超过了内存限制,会报内存溢出的错误。
2020-04-208 - 张英杰目前发展来说,是不是更适合一些个人项目?
作者回复: 整个应用部署上FaaS的话,一些个人项目比较合适。在大型项目中,可以利用FaaS的特性,处理部分事件驱动的场景。
2020-04-2426 - 北天魔狼老师:我最近在做即时通讯,faas可以创建websocket数据类应用吗
作者回复: 据我所知还不行,主要是需要等HTTP 触发器支持才行。而且要维持WS的长链接,估计后续也很难支持(因为影响FaaS资源的快速释放)。这种场景可以用容器即服务CaaS自己处理。
2020-05-0244 - 麦乐老师您好,如何解决这个 "F" 不够纯函数的问题?FaaS 里面的函数理论上应该尽可能以函数式编程的思想去编写,那就意味着,函数本身是无状态的,但是业务逻辑是有状态的。比如,用户鉴权,如果只用一个函数去完成这样的逻辑,那这个函数与业务就强耦合了。怎么让这个函数与业务解耦呢? 第二个问题是怎么实现像 Koa 中间件那样的场景呢?是一个 函数实例 调用另一个 函数实例吗?
作者回复: 后面的课程会讲到,状态要放到BaaS中。FaaS虽然叫函数即服务,实际使用也可以部署整个应用,不过有体积大小限制。拆解成一堆函数也有调用成本,所以通常是需要折中。中间件的用法是一样的,你可以通过npm安装,在代码中require使用。
2020-06-203 - Monday“云服务商可以预热大量的容器实例,将物理服务器的计算资源碎片化。Runtime 的实例适用性较低,可以少量预热” Runtime实例适用性较低,指的是语言的多样性和单个语言的多版本?
作者回复: 这里指约束性,越靠近应用实例约束性越高,适用性就会越低。runtime里面包含了具体的语言版本,系统lib,定制的依赖库等等。
2020-12-252 - lyonger请问下老师,serverless当前只支持http类型的触发器是吧?
作者回复: 不是的,serverless支持的触发器很多,不过每个云服务商提供的不一样。除了HTTP触发器,基本的OSS触发器,MQ触发器,DB触发器都有。
2020-05-0532 - 郭嵩阳老师能不能说一下如果是java服务的流程应该是怎样启动的,还有就是FaaS如果调用的是java的服务 这个java的微服务是否应该是先部署的
作者回复: Java FaaS的启动流程是一样的,拉取你的Java代码构建docker镜像。调用Java的时候则从镜像启动。不过有些云厂商可能会用JVM黑科技,加速。Java做微服务,往往受限于FaaS的runtime,适用FaaS的场景比较少。因此微服务还是推荐CaaS。我课程后面的专栏会讲到后端应用BaaS化,介绍FaaS的runtime限制如何通过CaaS打破。
2020-04-202 - 寻云“一旦容器 &Runtime 启动后,就会维持一段时间,这段时间内……数据请求。当一段时间内没有用户请求事件发生(各个云服务商维持实例的时间和策略不同),则会销毁这个函数实例。” 请问老师,函数应用实例具体会在什么时候(或者说多少时间无访问后)被缩容释放?各个主流云平台具体是多少?
作者回复: 阿里云是1分钟~5分钟无请求。AWS是5分钟。腾讯云1分钟~30分钟。
2020-04-2052 - 吴小智runtime 是一个进程吗?
作者回复: runtime是进程的上下文,node.js的话你可以理解为就是require加载进内容的依赖模块。
2020-04-2022