Serverless入门课
蒲松洋(秦粤)
前百度国际化前端组组长
立即订阅
3292 人已学习
课程目录
已更新 6 讲 / 共 14 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (2讲)
开篇词 | 说来说去,到底Serverless要解决什么问题?
免费
特别放送 | 为什么阿里要举集团之力趟坑Serverless?
基础篇 (4讲)
01|定义:到底什么是Serverless?
02 | 原理:通过一个案例,理解FaaS的运行逻辑
03 | 原理:FaaS的两种进程模型及应用场景
04 | 原理:FaaS应用如何才能快速扩缩容?
Serverless入门课
15
15
1.0x
00:00/00:00
登录|注册

02 | 原理:通过一个案例,理解FaaS的运行逻辑

蒲松洋 2020-04-20
你好,我是秦粤。上一讲我们介绍了什么是 Serverless,从概念的角度我们已经对 Serverless 有了一个深入的了解;那从应用角度来看,Serverless 对于开发者究竟有什么魔力呢?这一讲,我准备通过快速部署纯 FaaS 的 Serverless 应用,给你讲一讲 FaaS 应用背后的运行原理。
为了让你更好地体验 Serverless 带来的变革,这节课我们以 Serverless 版本的"Hello World"实操例子进行展示。鉴于我的熟悉程度,我选择了阿里云,当然,你也可以选择你熟悉的云服务商(我在专栏的最后一课还会讲到如何解除云服务商的限制,混合使用多云运营商服务等等)。
另外,需要注意的是,如果你是跟着我一步步实操练习的,那么开通云服务可能会产生少量费用,遇到充值提示你要自行考虑一下。当然,如果你不着急体验,我觉得看我的视频演示也已经足够了。
00:00 / 00:00
我们从上面的演示也看到了,会用 Serverless 这个目标我觉得不难实现,但这不是我们这节课的终极目的。今天我就想带着你打开这个 FaaS "Hello World"应用的引擎盖,来看看它内部到底是如何运行的。为什么要急着给你讲原理呢?因为如果你不理解原理的话,后面在应用 Serverless 化的时候就无从下手了。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Serverless入门课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 欢喜哥
    如果一套商城,服务端用go语言开发,数据库mysql,现在faas,完全解决方案有吗?老师

    作者回复: 现在做FaaS解决方案的都是大厂,他们的方案,会沉淀成解决方案后逐步放出。不过没有那么快。简单的低流量的商城,用FaaS实现其实不难。不过,商城的产品稳定性很重要,你可以考虑用CaaS方案。后续的课程也会讲到。

    2020-04-21
    1
    2
  • 罗祥
    采用留言式学习法学习本专栏,小结:
    1、Serverless 是对服务端运维体系的极端抽象。
    2、关于 Faas 三层结构非常形象的描述,容器是操作系统,Runtime 是播放器,代码是小电影。
    3、容器、Runtime 和函数实例的关系,一旦容器和 Runtime 启动后,就会维持一段时间,这段时间内函数实例可以直接处理用户数据请求。当一段时间内没有用户请求时,则会销毁函数实例,这样子可以达到缩容为 0。这里举手提个小问题,文章中提到的一段时间通常是多久呢?
    今天把作业完成了再来留言 ~~

    作者回复: 阿里云是15分钟,AWS是5分钟,腾讯云还不清楚这个数据。知道的同学,可以帮忙回复一下。

    2020-04-20
    1
    2
  • wc
    “一旦容器 &Runtime 启动后,就会维持一段时间,这段时间内……数据请求。当一段时间内没有用户请求事件发生(各个云服务商维持实例的时间和策略不同),则会销毁这个函数实例。”

    请问老师,函数应用实例具体会在什么时候(或者说多少时间无访问后)被缩容释放?各个主流云平台具体是多少?

    作者回复: 阿里云是15分钟无请求。AWS是5分钟。腾讯云不太清楚。

    2020-04-20
    4
    2
  • 唔多志
    runtime 是一个进程吗?

    作者回复: runtime是进程的上下文,node.js的话你可以理解为就是require加载进内容的依赖模块。

    2020-04-20
    1
    2
  • 一步
    老师有个疑问,一个函数实例就会启动启动一个 runtime 吗? 会不会出现一个 runtime 运行多个函数实例? 每个函数实例都初始化一个runtime 会不会浪费资源?

    还有在新建函数的时候都会有个函数运行内存,这个是一个runtime 限制的内存吗? 如果超过这个内存限制会怎么样的?

    作者回复: 好问题,说明你在认真学习。
    每个函数实例对应一个runtime。runtime运行多个函数实例是可以的,就是常驻进程模型,我们下节课会讲到。每个函数初始化一个runtime不会浪费资源,如果函数执行完就销毁,就是用完即毁型,我们下节课会讲到。
    函数运行的内存,是容器层的限制,不是runtime。如果内存超过了内存限制,会报内存溢出的错误。

    2020-04-20
    1
  • 张英杰
    目前发展来说,是不是更适合一些个人项目?

    作者回复: 整个应用部署上FaaS的话,一些个人项目比较合适。在大型项目中,可以利用FaaS的特性,处理部分事件驱动的场景。

    2020-04-24
  • leo
    解释性语言在这里可能是个优势, 静态语言的编译耗时、运行时加载耗时都是很大的问题吧。
    另外更期待课程聊聊如何自己搞Serverless平台而不是借助公有云实现, 因为在业务场景实现上可能会有限制, 自己测试玩玩还是可以的

    作者回复: 介绍到docker的原理,其实这些地方就不难理解了。自己搭建Serverless平台,成本也挺高的呢。FaaS还是便宜。

    2020-04-22
  • 胡浩🐸
    FAAS 的应用,每个函数都是平级的吗,还是也是多个函数构成一个对象,多个对象构成一个包呀,不会几千个函数怼一块把

    作者回复: 这个是下节课的内容,目前有2种做法,一种是将函数都放在一起,将整个应用部署到FaaS上。另一种是将函数拆开来部署,一个FaaS只部署单一功能的一个函数。

    2020-04-22
  • dony.zhang
    老师,Faas平台目前主流云厂商也是通过文章中分层来实现,其中:
    1. 容器:通过k8s集群管理docker容器;
    2. runtime:定制各运行时中间件平台,如Node.js, Java等,并开发各平台的framework,提供给云函数开发者;
    3. function code:基于各平台framework,开发者编写云函数代码;
    其中runtime这层具体实现原理,可以讲解下吗?

    作者回复: 你如果理解Docker镜像分层,其实比较好理解runtime这块的:其实就是函数库和二进制包打包构建好了一层docker runtime镜像。最后上面一层docker镜像,只需要拉取你的代码,构建函数代码镜像就可以了。

    2020-04-21
  • Fxjeep
    有没有可能自己的机器上搭一个serverless环境?

    作者回复: 有,后面的课程会讲到这个内容。请同学先按部就班,一步步学习。

    2020-04-21
  • 炒鸡辣鸡
    serverless是基于rpc实现的吗?对请求链路的抽象是不是相当于隐藏了rpc调用过程中的command处理,最后直接返回结果?

    作者回复: 你指的是hold请求访问那里吗?通常这里,就是个简单的TCP长连接等待返回。有些像代理模式,处理完返回结果,写回TCP链接就行了。

    2020-04-20
    1
  • liuyu5337
    复杂应用场景适合吗?比如要用到连接池 数据库 redis Kafka等中间件,这些中间件都是一个函数实例吗?

    作者回复: 现在有很多人尝试用FaaS去实现复杂场景,云服务商也还在发展,所以会遇到很多FaaS的限制。有些场景定制Runtime,也无法处理。所以复杂场景,我建议还是采用CaaS方案。

    2020-04-20
  • 郭嵩阳
    老师能不能说一下如果是java服务的流程应该是怎样启动的,还有就是FaaS如果调用的是java的服务 这个java的微服务是否应该是先部署的

    作者回复: Java FaaS的启动流程是一样的,拉取你的Java代码构建docker镜像。调用Java的时候则从镜像启动。不过有些云厂商可能会用JVM黑科技,加速。Java做微服务,往往受限于FaaS的runtime,适用FaaS的场景比较少。因此微服务还是推荐CaaS。我课程后面的专栏会讲到后端应用BaaS化,介绍FaaS的runtime限制如何通过CaaS打破。

    2020-04-20
收起评论
13
返回
顶部