前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云函数初探

腾讯云函数初探

作者头像
槽痞
发布2020-06-23 15:09:07
1.7K0
发布2020-06-23 15:09:07
举报

前不久的微信开发者大会上在推他们的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,而云函数也有一些内网流量的免计费的说明,如果你的服务器刚好部署在成都区,那么,流量就变成走公网得收费了,当然还有时延问题。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建云函数
  • 题外话
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档