Serverless 入门课
蒲松洋(秦粤)
前百度国际化前端组组长
16491 人已学习
新⼈⾸单¥29
Serverless 入门课
15
15
1.0x
00:00/00:00
登录|注册

03 | 原理:FaaS的两种进程模型及应用场景

你好,我是秦粤。上一讲我们通过一个 Node.js 纯 FaaS 的 Serverless 应用,给你介绍了 Serverless 引擎盖下的运作机制,总结来说,FaaS 依赖分层调度和极速冷启动的特性,在无事件时它居然可以缩容到 0,就像我们的声控灯一样,有人的时候它可以亮起来,没人的时候,又可以自动关了。
听完了原理,我估计你肯定会问,FaaS 这么好,但是它的应用场景是什么呢?今天我们就来一起看下。不过,想要理解 FaaS 的应用场景,我们就需要先理解 FaaS 的进程模型,这也是除了冷启动之后的另外一个重要概念。

FaaS 进程模型

咱先回想一下上节课的 FaaS 的冷启动过程,我们知道容器和 Runtime 准备阶段都是由云服务商负责的,我们只需要关注具体的函数执行就可以了。而函数执行在 FaaS 里是由“函数服务”负责的,当函数触发器通知“事件”到来时,函数服务就会根据情况创建函数实例,然后执行函数。当函数执行完之后,函数实例也随之结束自己的使命,FaaS 应用缩容到 0,然后开始进入节能模式。
上面这套逻辑是我们上节课讲的,课后有同学就问,函数执行完之后实例能否不结束,让它继续等待下一次函数被调用呢?这样省去了每次都要冷启动的时间,响应时间不就可以更快了吗?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Serverless 入门课》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(18)

  • 最新
  • 精选
  • 我来也
    # 最近几天实战了下阿里云的函数计算服务. 使用golang按着官方文档,实现了几个常驻进程模型的服务. 也照着老师的操作,建了node.js和python的函数. 相比之下,python和node.js的冷启动时长确实比较短,我这边看冷启动时接口的响应耗时在600-800ms. 但是之后热启动时的耗时就只有30-50ms. 而golang的冷启动时长不知道为什么要2.5s.而热启动后的接口耗时也才60ms. 我还发现,阿里云上,5分钟以后,常驻进程模型的函数就被干掉了.症状就是初次接口耗时又要2s+. 可以肯定的是,不到10分钟,无响应的函数就被系统回收了.肯定是没到15分钟. 我还发现,介于冷启动和热启动之间,还有一个状态,接口的响应耗时也是介于两者之间. # 对服务编排的个人感悟 感觉函数服务配合服务编排,就像是在linux上使用shell组合各种命令,实现复杂的功能. 虽然每个命令都很简单,但是组合后的功能就很强大了. 现在的云服务都会有很多现成的sdk,确实如老师所说,需要用到某个云服务时临时把官方的文档拿出来,几乎只需要做很少的变动,就可以马上投入使用. 我目前使用函数服务,配合nas和日志服务,就可以很容易的把东西存在nas上,在阿里云的日志服务中搜索相关日志. 不足之处就是调试没有之前方便了.

    作者回复: 必须给你手动点赞,写的非常详细。云服务商承诺的回收时间,目前其实是不确定的。能够承诺时间的只有AWS(所以我的文章中没有给出具体回收时间)。通常阿里云1分钟到10分钟,没有请求就会被回收,不过1分钟是可以承诺的。因为冷启动的时间很快,所以通常影响不大。如果对冷启动增加的几百毫秒比较敏感的场景,还是建议使用CaaS服务。

    4
    17
  • 一步
    阿里云 有个 serverless 工作流 是不是就是 一个阿里云提供的云服务的编排工具?

    作者回复: 手动给你点个赞,悟性很高。我后面也会介绍到,除了代码编排外,还可用事件流编排。

    9
  • 一步
    常驻型应用的冷启动时间会增加, 这里为什么会增加呢? 不应该是减少吗? 只需要第一次启动后,长驻内存不就行了吗?

    作者回复: 常驻进程启动后,就没有冷启动过程了。冷启动指的是函数实例的启动过程。

    8
    3
  • 左耳朵狮子
    老师 有没有什么好的Serverless 论文推荐推荐 CMU 啥的都可以哈。

    作者回复: 伯克利大学的这篇比较出名: https://www2.eecs.berkeley.edu/Pubs/TechRpts/2019/EECS-2019-3.pdf

    2
  • InfoQ_f14f3f64ad3e
    老师你好!函数服务一般是用在无状态场景下,但是看到发邮件的那个例子,存储验证码的常驻服务看起来是个有状态的,是常驻进程类型的可以处理有状态服务吗

    作者回复: 可以的,常驻进程类型,之前课程讨论区,我们说的,常驻进程型,如果没有流量1分钟会被销毁。所以如果你的验证码,有限期是1分钟以内,就可以用。当然也可以将数据用BaaS存储起来的。

    1
  • 有一种踏实
    课程微信群是哪个

    作者回复: 可以联系客服加你入群

    归属地:上海
  • Geek_d972f2
    "我们的 Web 服务主进程跟之前一样,创建一个子进程来处理这个请求事件"这里没明白,Web服务主进程是指Node进程吗?如果是,Node不是采用事件循环机制来处理请求吗?

    作者回复: javascript引擎的实现是一个进程拥有一个自己的事件循环。Node.js中可以通过child proceses创建子进程。这部分可以看看Node.js文档的cluster章节

    归属地:浙江
  • kkkkkkkk
    老师你好,我node基础薄弱的前端开发,这一节看得有点吃力,需要补充哪些知识可以更能理解老师的优质内容

    作者回复: 建议可以补习一下,朴灵老师的《Nodejs深入浅出》

  • 贫困山区杨先生
    请问一下老师:按照上面的做,也设置了SDK的access key和secret key Response Module '/code/index.php' is missing.

    作者回复: 需要跟多的信息,你可以加一下课程微信群,在群里聊。

    6
  • piboye
    php 最初的模型就是一个请求创建一个进程。

    作者回复: 是的,后面php也支持fastcgi,各有利弊。具体还是看应用场景。

收起评论
显示
设置
留言
18
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部