云函数 SCF 初体验

SCF 在 Serverless 中扮演了什么角色

在构建 Serverless 应用程序时,云函数 SCF 是运行应用程序代码的主要候选者之一。通常情况下,要完成一个 Serverless 技术栈,你需要:

  • 计算服务
  • 数据库服务
  • HTTP 网关服务

SCF 填补了腾讯云上计算服务的主要角色。它还可以与许多其他腾讯云服务集成,与 API 网关、PostgreSQL 和 Redis 一起,构成了 Serverless 解决方案的基础。 说白了,SCF 就是我们实现业务代码的地方,我们可以使用一个 SCF 来跑一个脚本,也可以使用一组云函数来实现业务资源的CRUD。

如果你不清楚 Serverless 是什么,请看我的这篇帖子: 什么是 Serverless

SCF 实战:第一个云函数

这里将利用腾讯云作为演示平台: 第一步登录到腾讯云,接着打开云函数控制台: image.png 第二步点击新建按钮创建一个 Web 函数,运行环境我选择了 Nodejs。 image.png 接着跳转到这个页面,我们可以看到腾讯云提供了一个 Dweb 端的 IDE,我们可以直接编写我们的业务代码。因为我们只是体验 SCF 的搭建,所以直接用它写好的 Http 接口。 image.png 在部署后,进入触发管理,点击公网 url 就会跳转到我们的页面。 image.png

SCF 的局限性

可以看到,上面例子中我们非常快速的建好了一个 Web Demo,但是我们也不要被它的方便快捷冲昏了头脑,既然依靠云服务商提供的服务,那必然会有所限制。

1.冷启动时间

当一个函数被激活来响应一个事件时,在事件和函数运行之间可能会有少量的延迟。如果我们的函数在过去15 - 30 分钟(和后台资源分配有关)内没有被使用过,那么延迟可能高达 5-10 秒,这使得对延迟要求较高的应用很难依赖云函数 SCF。(可以查看腾讯云的预置并发来降低冷启动的耗时。

2.函数限制

云函数 SCF 有如下一些限制:

  1. 执行/运行时间。 一个云函数在运行15分钟后会超时。没有办法改变这个限制。如果运行你的函数通常需要超过15分钟,云函数 SCF 可能不是适合您的任务的一个好的解决方案。
  2. 可用内存大小。云函数 SCF 可用的内存量的选项范围是 64MB 到 3,072MB,以 128MB 递增。
  3. 代码包大小。压缩后的云函数 SCF 代码包大小不应超过 500MB,为了最好的使用体验,建议压缩后的代码不应大于200MB。
  4. 并发数量。默认情况下,单个云函数账户内所有云函数 SCF 的并发执行被限制为1,000个。(可以通过联系腾讯云来申请增加并发数的限制)。 任何触发云函数 SCF 执行超过您的并发限制的请求将被阻止,并将被迫等待,直到其他函数完成运行。
  5. 请求负载大小。当使用 腾讯云 API 网关来触发云函数 SCF 以响应 HTTP 请求时(即构建 Web 应用程序时),API 网关可以处理的最大有效负载(payload)大小为 6MB。

3.不是一定会节省成本

在云函数 SCF 上,你只需为所使用的函数运行时间付费(以及相关费用,如网络流量)。这对某些使用模式来说可以产生显著的成本节约,例如,定时任务或其他按需任务。然而,当你的应用程序的负载增加时,云函数 SCF 的成本也会按比例增加,最终可能高于腾讯云 CVM 或其他云供应商的类似基础设施的成本。

4.有限的运行时

虽然腾讯云 SCF 允许添加自定义运行时,但创建这些运行时可能是一个工作量很大的工作。因此,如果你使用的编程语言的版本在 SCF 上不被支持,你可能最好使用腾讯云 CVM 或其他云服务供应商的产品。