腾讯云函数SCF初探

前不久的微信开发者大会上在推他们的Serverless架构,即他们的产品腾讯云函数SCF
当然这个也不是新鲜的事物,在亚马逊提供的同类服务叫做lambda,阿里云提供的则叫做函数计算,Cloudflare的则名为workers

在编程语言的支持上,除了Cloudflare的workers只支持javascript
其余几家都支持python、php、golang、node,java等主流开发语言。

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

……Cloudflare Workers provides a lightweight JavaScript execution environment that allows developers to augment existing applications or create entirely new ones without configuring or maintaining infrastructure.

大意就是workers提供一个免运维的轻量级的js的运行环境

现在微信小程序开发这么火,那么就拿腾讯云的SCF云函数作为一个入门的helloword

首先抛出官方文档:https://cloud.tencent.com/document/product/583/9199

关于无服务器的概述,文档已经说得很清楚:

无服务器(Serverless)不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

大意就是运维可以下岗了,老板胆子大的话,后端也可以下岗了,一个前端就可以全干,啊不,是全栈(狗头保命)。

此处注册登录流程省略一千字。

创建云函数

创建函数主要有三种:

  • web控制台创建
  • 本地命令行CLI创建
  • VS Code插件创建

需要注意的是,使用golang开发在web控制台在线创建自定义代码时会失败,会报一个No Match Module: Get lambda file failed的错误。

如果语言是PHP和Python创建是成功的。
VS Code创建流程差不多,略过。

重点说说本地命令行CLI创建。
说明文档:https://cloud.tencent.com/document/product/583/37510

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

安装scf就一个命令:pip install scf
安装好之后可以查看scf版本: scf --version
继续执行:scf configure set进行配置。
相关的配置信息,可以打开腾讯云的web控制台查看。

接下来就是编写函数部分了。
执行项目初始化命令:scf init -n go_test -r go1
这个命令中参数-n是执行项目名,-r是指定开发环境,不指定的话默认初始化用的是Python3,具体可用的环境可以查看文档的相关部分或使用scf init --help查看帮助信息。

这样就在当前目录下生成到了一个go_test的目录。
cd go_test进入目录里面看可以看到初始化好的信息。

本文章选定的是golang,开发环境是windows,关于go的使用文档可以看:https://cloud.tencent.com/document/product/583/18032。

需要注意的是,最后生成的二进制文件的名字。
说明文档中使用的是:

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

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

[x] [ERROR]  default - go_test: Deploy function 'go_test' failure, No Match Modu
le: Get lambda file failed. RequestId: xxxxxxxxxxxxxxxxxxxx-xxxxx

最后找原因发现是scf部署时是按照template.yaml里面的handler字段来匹配的,而这个字段需要和二进制文件以及打压缩包的名字一致。

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

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

此时再去按照流程部署会发现能部署成功。

执行方式有几种,其中云端调用函数执行的命令是scf remote invoke -n go_test,具体文档里面也有交代,说明文档:https://cloud.tencent.com/document/product/583/38310

流程差不多就是这样,别的特性或功能,可以去官方文档去探索。

题外话

关于触发器,某些地区会缺少。
比如我选择创建云函数的地区是「成都」,触发器只有三种:
定时出发,cos出发,kafka触发三种。

而说明文档种提到的API网关触发方式在成都区是没有的,
换到广州区,创建的云函数就多了一个API网触发的选项。

如果刚好你是需要做web服务的话,是需要用到api网关触发器的,真要使用的话,除了换区也没啥选择了。

通常来说,很多云服务对内网流量是免费的,比如腾讯云COS,而云函数也有一些内网流量的免计费的说明,如果你的服务器刚好部署在成都区,那么,流量就变成走公网得收费了,当然还有时延问题。

这个也说明云函数还有待完善的地方,不过相信以后还是会越来越好。

来源:https://niyaoxuehao.cn/archives/151.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
腾讯云函数是一种Serverless服务,也称为SCF(Serverless Cloud Function),它允许用户在腾讯云的基础设施上弹性、安全地运行代码,而无需购买服务器和虚拟机。函数支持所有主流的编程语言,包括Spring Boot。\[1\] 使用函数时,程序员只需要上传函数代码,其他底层资源都由腾讯云上进行管理。这种函数级别的资源管理结合了腾讯云的各种能力,使得开发变得更加简单和高效。\[2\] 在使用函数时,还会有一个API网关作为函数的主要入口。API网关提供了HTTP接口、参数校验、鉴权、限流、自定义域名、自动化文档等功能,为函数提供了强大的支持。\[3\] 因此,如果你想在腾讯云函数中使用Spring Boot,你可以将Spring Boot应用程序的代码上传到函数中,并通过API网关来访问和管理你的应用程序。这样你就可以充分利用腾讯云的Serverless服务和能力来运行和扩展你的Spring Boot应用程序。 #### 引用[.reference_title] - *1* *2* *3* [实操教学|用Serverless 分分钟部署一个 Spring Boot 应用,真香!](https://blog.csdn.net/youanyyou/article/details/125532137)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值