云函数 SCF 初体验
SCF 在 Serverless 中扮演了什么角色
在构建 Serverless 应用程序时,云函数 SCF 是运行应用程序代码的主要候选者之一。通常情况下,要完成一个 Serverless 技术栈,你需要:
- 计算服务
- 数据库服务
- HTTP 网关服务
SCF 填补了腾讯云上计算服务的主要角色。它还可以与许多其他腾讯云服务集成,与 API 网关、PostgreSQL 和 Redis 一起,构成了 Serverless 解决方案的基础。 说白了,SCF 就是我们实现业务代码的地方,我们可以使用一个 SCF 来跑一个脚本,也可以使用一组云函数来实现业务资源的CRUD。
如果你不清楚 Serverless 是什么,请看我的这篇帖子: 什么是 Serverless
SCF 实战:第一个云函数
这里将利用腾讯云作为演示平台:
第一步登录到腾讯云,接着打开云函数控制台:
第二步点击
新建按钮
创建一个 Web 函数,运行环境我选择了 Nodejs。
接着跳转到这个页面,我们可以看到腾讯云提供了一个 Dweb 端的 IDE,我们可以直接编写我们的业务代码。因为我们只是体验 SCF 的搭建,所以直接用它写好的 Http 接口。
在部署后,进入
触发管理
,点击公网 url 就会跳转到我们的页面。
SCF 的局限性
可以看到,上面例子中我们非常快速的建好了一个 Web Demo,但是我们也不要被它的方便快捷冲昏了头脑,既然依靠云服务商提供的服务,那必然会有所限制。
1.冷启动时间
当一个函数被激活来响应一个事件时,在事件和函数运行之间可能会有少量的延迟。如果我们的函数在过去15 - 30 分钟(和后台资源分配有关)内没有被使用过,那么延迟可能高达 5-10 秒,这使得对延迟要求较高的应用很难依赖云函数 SCF。(可以查看腾讯云的预置并发来降低冷启动的耗时。
2.函数限制
云函数 SCF 有如下一些限制:
- 执行/运行时间。 一个云函数在运行15分钟后会超时。没有办法改变这个限制。如果运行你的函数通常需要超过15分钟,云函数 SCF 可能不是适合您的任务的一个好的解决方案。
- 可用内存大小。云函数 SCF 可用的内存量的选项范围是 64MB 到 3,072MB,以 128MB 递增。
- 代码包大小。压缩后的云函数 SCF 代码包大小不应超过 500MB,为了最好的使用体验,建议压缩后的代码不应大于200MB。
- 并发数量。默认情况下,单个云函数账户内所有云函数 SCF 的并发执行被限制为1,000个。(可以通过联系腾讯云来申请增加并发数的限制)。 任何触发云函数 SCF 执行超过您的并发限制的请求将被阻止,并将被迫等待,直到其他函数完成运行。
- 请求负载大小。当使用 腾讯云 API 网关来触发云函数 SCF 以响应 HTTP 请求时(即构建 Web 应用程序时),API 网关可以处理的最大有效负载(payload)大小为 6MB。
3.不是一定会节省成本
在云函数 SCF 上,你只需为所使用的函数运行时间付费(以及相关费用,如网络流量)。这对某些使用模式来说可以产生显著的成本节约,例如,定时任务或其他按需任务。然而,当你的应用程序的负载增加时,云函数 SCF 的成本也会按比例增加,最终可能高于腾讯云 CVM 或其他云供应商的类似基础设施的成本。
4.有限的运行时
虽然腾讯云 SCF 允许添加自定义运行时,但创建这些运行时可能是一个工作量很大的工作。因此,如果你使用的编程语言的版本在 SCF 上不被支持,你可能最好使用腾讯云 CVM 或其他云服务供应商的产品。