Serverless入门课
蒲松洋(秦粤)
前百度国际化前端组组长
立即订阅
4029 人已学习
课程目录
已更新 11 讲 / 共 14 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (2讲)
开篇词 | 说来说去,到底Serverless要解决什么问题?
免费
特别放送 | 为什么阿里要举集团之力趟坑Serverless?
基础篇 (4讲)
01|定义:到底什么是Serverless?
02 | 原理:通过一个案例,理解FaaS的运行逻辑
03 | 原理:FaaS的两种进程模型及应用场景
04 | 原理:FaaS应用如何才能快速扩缩容?
进阶篇 (3讲)
05 | 后端BaaS化(上):NoOps的微服务
06 | 后端BaaS化(中):业务逻辑的拆与合
07 | 后端BaaS化(下):Container Serverless
实战篇 (2讲)
08 | 搭建私有Serverless(一):K8s和云原生CNCF
09 | 搭建私有Serverless(二):基于K8s的Serverless
Serverless入门课
15
15
1.0x
00:00/00:00
登录|注册

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

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

FaaS 进程模型

咱先回想一下上节课的 FaaS 的冷启动过程,我们知道容器和 Runtime 准备阶段都是由云服务商负责的,我们只需要关注具体的函数执行就可以了。而函数执行在 FaaS 里是由“函数服务”负责的,当函数触发器通知“事件”到来时,函数服务就会根据情况创建函数实例,然后执行函数。当函数执行完之后,函数实例也随之结束自己的使命,FaaS 应用缩容到 0,然后开始进入节能模式。
上面这套逻辑是我们上节课讲的,课后有同学就问,函数执行完之后实例能否不结束,让它继续等待下一次函数被调用呢?这样省去了每次都要冷启动的时间,响应时间不就可以更快了吗?
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Serverless入门课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • 我来也
    # 最近几天实战了下阿里云的函数计算服务.
    使用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
    2
    8
  • 一步
    阿里云 有个 serverless 工作流 是不是就是 一个阿里云提供的云服务的编排工具?

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

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

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

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

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

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

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

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

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

    2020-04-27
  • Authority
    你好老师,我的没收到邮件,显示如下,请问是什么问题??怎么解决?
    Response

    email send!

    Function Logs

    FC Invoke Start RequestId: 2607ad8c-02c9-41b0-b062-16f2ac5507c5

    InvalidAccessKeyId.NotFoundSpecified access key is not found.FC Invoke End RequestId: 2607ad8c-02c9-41b0-b062-16f2ac5507c5


    Duration: 116.70 ms, Billed Duration: 200 ms, Memory Size: 512 MB, Max Memory Used: 9.97 MB

    Request ID
    2607ad8c-02c9-41b0-b062-16f2ac5507c5

    作者回复: 同学你的access key没有找到。这个需要开通一下access key和secret key。然后将这2个值填写到代码里面。

    2020-04-26
  • 八哥
    服务编排应该后面会讲到serverless framework。
    2020-04-24
  • Bora.Don
    对老师关于数据编排的看法,存在一点疑问:数据不在本地,会不会存在稳定性和速度的问题?
    FaaS感觉看上去很美,实际操作空间还有待考验,个人观点。

    作者回复: FaaS目前的确有使用场景限制,不是银弹。
    数据不在本地确实会有稳定性和速度问题,所以也要准备容灾和缓存策略,避免依赖的数据不可用的场景。
    SOA的一个重要思想就是:面向失败编程。

    2020-04-24
  • Marooned。
    因为用完即毁型对传统 MVC 改造的成本太大 为什么会大呢?
    2020-04-22
    1
收起评论
10
返回
顶部