FunctionGraph 入门:从概念到第一个云函数
提到 Serverless,很多开发者第一反应就是“不用管服务器”。华为云的函数计算服务 FunctionGraph,正是这种理念的落地形态:你只管写业务代码,资源的调度、扩缩容、运维都由平台完成。本文带你从零认识 FunctionGraph,并动手创建第一个云函数。
一、FunctionGraph 是什么
FunctionGraph 是华为云提供的无服务器(Serverless)函数计算服务。它以“函数”为最小部署单元,你上传代码后,平台负责运行环境的准备、实例的创建与回收。
和传统方式对比:
- 传统方式:买云服务器 → 装环境 → 部署应用 → 自己处理扩缩容和故障恢复。
- FunctionGraph:写一个函数 → 配置触发器 → 有事件来就执行。没请求时不占用资源,按实际执行付费。
它特别适合事件驱动、流量波动大、或者还在验证阶段的业务:比如 Webhook 回调、定时任务、图片处理、物联网数据上报等。
二、四个核心概念
1. 函数(Function)
函数是代码的载体,由入口方法(handler)、运行时、内存规格等组成。平台支持 Python、Node.js、Java、Go 等多种运行时,创建时选择与业务语言匹配的即可。
2. 触发器(Trigger)
触发器定义了“什么事件会唤起函数”。常见类型:
- APIG 触发器:通过 API 网关把函数暴露为 HTTP 接口;
- 定时触发器:按 Cron 表达式周期执行,如每天凌晨跑批;
- OBS 触发器:对象存储中有新文件上传时自动触发处理;
- LTS/SMN 等:日志、消息通知等事件源。
一个函数可以绑定多个触发器,灵活组合。
3. 版本与别名
每次发布代码会生成一个新版本(v1、v2……),别名则指向某个版本。生产流量走别名,灰度或回滚时只需切换别名指向,发布更安全。
4. 预留实例
默认情况下,无请求时实例会缩容到 0,新请求到来要经历“冷启动”。对延迟敏感的接口,可以配置预留实例,提前预热好一批热实例,请求直接命中,基本消除冷启动。代价是预留实例会产生常驻费用,适合核心链路按需配置。
三、计费怎么看
FunctionGraph 的计费主要看三个维度:调用次数、执行时长、内存规格。
- 内存规格越大,分配的 CPU 能力越强,执行越快,但单价也越高;
- 执行时长按 GB-秒累积,代码跑得快就花得少;
- 合理设置内存和超时时间,是控制成本的关键。
新手建议:先用小规格跑通逻辑,再通过实测数据调大规格,不要一上来就选最大配置。
四、动手:创建第一个云函数
在控制台按以下步骤操作,全程约五分钟:
- 进入 FunctionGraph 控制台,点击“创建函数”,选择“创建空白函数”;
- 运行时选择 Python,函数名自定义,内存保持默认;
- 在代码编辑区写入入口方法,例如:
def handler(event, context):
name = event.get('name', 'world')
return {
'statusCode': 200,
'body': f'Hello, {name} from FunctionGraph!'
}
- 点击“部署”,等待部署完成;
- 使用“测试”功能,构造一个测试事件
{"name": "开发者"},点击执行,观察返回结果和日志; - (可选)为函数添加 APIG 触发器,即可通过 HTTP 地址在浏览器里调用它。
到这里,你已经拥有了一个按需运行、无需维护服务器的云函数。
五、典型应用场景
- Web API 后端:配合 API 网关,快速搭建无服务器的 REST 接口;
- 定时任务:定时触发器替代常驻的 Cron 服务器,如数据同步、报表生成;
- 文件处理流水线:OBS 上传触发图片压缩、转码、内容审核;
- 事件粘合层:在消息队列、数据库变更等事件之间做轻量编排。
六、新手常见的四个坑
- 冷启动:低频函数首次调用延迟较高。核心接口用预留实例,非核心链路可接受或用定时预热折中。
- 依赖包过大:代码包越大,下载解压越慢。只打包必需依赖,大依赖考虑延迟加载。
- 超时设置不合理:默认超时较短,长任务记得调大,并配合异步调用避免前端等待。
- 连接不复用:数据库连接、HTTP 客户端放在 handler 之外初始化,实例复用时直接复用,避免每次调用重复建连。
七、小结
FunctionGraph 把“写代码”和“运维服务器”解耦:函数承载逻辑,触发器连接事件,版本别名保障发布,预留实例兜底延迟。掌握这四个概念,再亲手部署一个 Hello World,Serverless 的开发体感就建立起来了。下一步可以试着给函数加上 APIG 触发器,或者用 OBS 触发器做一个自动处理上传文件的小流水线,在实践中继续加深理解。
- 点赞
- 收藏
- 关注作者
评论(0)