微信开发者大会上的 Serverless 架构:腾讯云函数 SCF 与其他云服务的比较

2024-11-19
来源:网络整理

在最近的微信开发者大会上,他们的架构,即他们的产品腾讯云功能SCF得到了推广。

当然,这并不是什么新鲜事。亚马逊提供的类似服务称为函数计算,阿里云提供的服务称为函数计算。

在编程语言支持方面,仅 .

剩下的都支持php、node、java等主流开发语言。

关于描述,官网是这样描述的:

…… 一个或新的或。

总体思路是提供一个轻量级、免运维的js运行环境。

既然微信小程序开发如此流行,我们就以腾讯云的SCF云功能作为入门。

首先抛出官方文档:

关于的概述,文档非常清楚:

()并不是说没有服务器,而是说你在使用的时候,不需要关心底层资源,也不需要登录服务器,也不需要对服务器进行优化。您只需要专注于核心代码片段,可以跳过复杂繁琐的基础工作。核心代码片段完全由事件或请求触发,平台根据请求自动并行调整服务资源。它具有近乎无限的扩展能力,空闲时不运行任何资源。代码无状态运行,轻松实现快速迭代和极速部署。

总体思路是运维可以下岗。如果老板有胆量,后端也可以裁员。一个前端就能搞定这一切,啊不,是全栈(狗头救命)。

这里省略了注册和登录过程一千字。

创建云函数

创建函数主要分为三类:

需要注意的是,使用开发在Web控制台在线创建自定义代码时,会失败,并报No: Get file错误。

如果语言是PHP并且创建成功。

VS Code创建过程几乎一样,所以略过。

专注于本地命令行 CLI 创建。

文档:

云开发微信小程序_微信小程序云开发初探_微信小程序云开发项目

大前提:无论使用哪种编程语言作为开发语言,都必须先安装环境。

只需一个命令即可安装 scf:pip scf

安装后可以查看scf版本:scf --

继续执行:scf set to 。

相关配置信息,您可以打开腾讯云Web控制台查看。

下一步是编写函数部分。

执行项目初始化命令:scf init -n -r go1

该命令中的参数-n是执行项目的名称,-r指定开发环境。如果未指定,则使用默认初始化。对于具体的可用环境,可以查看文档的相关部分或者使用scf init --help查看帮助信息。

这样就在当前目录下生成了一个目录。

cd 进入目录即可看到初始化信息。

本文选择的开发环境是。 go的使用文档可以参见:。

需要注意的是最终生成的二进制文件的名称。

文档中使用的是:

set GOOS=linux set GOARCH=amd64 go build -o main main.go

按照说明打包、部署、执行scf,会报错:

[x] [ERROR] default - go_test: Deploy function 'go_test' failure, No Match Modu

云开发微信小程序_微信小程序云开发项目_微信小程序云开发初探

le: Get lambda file failed. RequestId: xxxxxxxxxxxxxxxxxxxx-xxxxx

最后查找原因时发现scf是根据部署时.yaml中的字段来匹配的,而这个字段需要与二进制文件和压缩包的名称保持一致。

所以解决办法要么把yaml配置文件中的名字改成main,要么重新编译

go build -o index index.go //如果没有修改生成的默认文件名index.go

如果此时按照部署流程进行操作,就会发现部署成功了。

执行方法有多种。其中,调用云端函数的命令为scf -n。具体文件中也有说明。指导文件:

过程差不多是这样的。对于其他特性或功能,您可以去官方文档探索。

题外话

关于触发因素,有些方面还欠缺。

比如我选择创建云函数的地区是“成都”,触发器只有三个:

分为三种:计划出发、cos出发、触发出发。

文档中提到的API网关触发方式在成都地区不可用。

切换到广州区,创建的云函数多了一个API网络触发选项。

如果你恰好需要做web服务,那么就需要使用api网关触发器。如果你真的想使用它,你别无选择,只能改变地区。

一般来说,很多云服务都是免费内网流量的,比如腾讯云COS,云功能也有一些免内网流量的说明。如果你的服务器恰好部署在成都,那么流量就会变成使用公网是收费的,当然还有延迟的问题。

这也说明云功能还有待完善,但相信未来会越来越好。

分享