Serverless 入门课
蒲松洋(秦粤)
前百度国际化前端组组长
16754 人已学习
新⼈⾸单¥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
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

FaaS的两种进程模型及应用场景 FaaS(函数即服务)是一种Serverless架构,其进程模型包括“用完即毁型”和“常驻进程型”。前者在函数执行完后直接结束,而后者在执行完函数后继续等待下一次函数调用。这两种模型对应不同的应用场景。常驻进程型适合传统MVC架构的部署,可以通过少量修改即可在FaaS上部署。而用完即毁型则更适合一些自然的场景。 在常驻进程型中,虽然不会持续收费,但冷启动时间会增加,需要额外的工作来避免冷启动,可能会增加额外费用。而在用完即毁型中,虽然冷启动时间由云服务商负责,但每个请求都会增加冷启动时间,响应时间会更长一些,但不需要考虑额外成本。 总的来说,FaaS的进程模型和应用场景需要根据具体情况来选择,常驻进程型适合传统MVC架构的部署,而用完即毁型更适合一些自然的场景。同时,FaaS的收费标准主要包括调用函数次数和函数耗时,需要根据具体情况来选择合适的模型和优化策略。 此外,文章还介绍了BFF到SFF的演进过程,以及FaaS在服务编排方面的应用。通过FaaS和云服务商的能力,可以实现更加强大的组合服务场景,提升研发效能。文章还强调了FaaS的语言无关性,使团队可以利用不同语言的优势进行混合开发,从而创造出各种复杂的服务编排场景。 总的来说,本文深入探讨了FaaS的进程模型和应用场景,以及在服务编排方面的应用,为读者提供了全面的技术视角和实践经验。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《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服务。

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

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

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

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

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

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

    2020-05-02
    2
  • 技术修行者
    Serverless要想发展的好,一定要有一套标准的应用迁移方案,这样才能保证现有的大量应用可以平滑的过渡。 目前来看,我个人的理解,对于现有应用,可能常驻进程方式合适一些,对于新应用,用后即销毁的方式更合适。这里搞了一刀切,可能不太对哈。

    作者回复: 你可以换个角度思考一下,虽然2种模型收费是一样的。但是对于云服务商来说,用完即毁型,显然对碎片化的机器资源利用率更高。 常驻进程型,云服务商如果自己资源比较紧张时,可能会采用比较激进的销毁实例做法。 我的第11课会讲回这部分,目前的FaaS做Serverless应用,这2种做法都有。

    2020-05-10
    1
  • suke
    用完即毁型的服务里如果有mysql的连接查询,建立连接岂不是很慢?而且如果查询不频繁,那岂不是每次都查询要等好久?老师有这方面的实践么

    作者回复: 这个是后面课的内容,将mysql变成RESTFul HTTP。不过更好的做法是,云服务商提供mysql BaaS服务。

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

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

    2020-04-27
    1
  • 有一种踏实
    课程微信群是哪个

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

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

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

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

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

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