课时4:函数的开发与配置(二)

简介: 函数的开发与配置

Serverless AI训练营:课时4:函数的开发与配置(二)

课程地址https://developer.aliyun.com/trainingcamp/1eeaedf056f14ad98e9986c31068e939?spm=a2c6h.26142516.J_2566289780.1.37c67cbd7bCsFs

课时4:函数的开发与配置(二)

2、函数

  image.png

接下来看函数和函数配置。在函数计算中函数是核心概念,函数是管理和运行的基本单元,函数通常由一系列的配置和一个可运行的代码包组成。函数的配展如图所示:

Runtime是函数运行时的环境类型,函数计算目前支持PythonJavaPHP 等开发环境,同时也支持用户来定义这个运行环境。空Code 是函数代码包,函数计算的后端是指认代码包的,各个开发工具会自动帮助打包,比如可以在控制台上编写代码,控制台会将代码自动打包,并且创建函数或者更新函数。也可以在本地编写函数或者调试函数,通过部署工具部署函数计算。

代码包中主要是有代码以及代码所需要的第三方依赖,比如代码当中用到了一些第三方的库,也需要将第三方的库和代码一同打到这个代码包里面。Handler 是入口函数,在代码中写了非常多的函数。虽然有十个函数,但是入口就是这一个,handler就是告诉函数计算入口函数的位置;Timeout是函数的超时时间,如果函数计算执行超过了这个时间函数就会被强制停止执行;

Memory Size是为函数分配的执行环境的内存,目前的取值范围是128M3G,如果函数耗用的内存超过了分配的内存就会 OM 掉。接下来是 Initializer 叫做初始化函数,之前介绍函数计算执行环境的时候有讲到,函数计算会为函数分配执行环境,第一次分配的时候会有冷启动,当前这个请求执行完成后,函数计算不会立即释放,如果在一段时间内有新的请求来的时候,可以复用这个执行环境。Initializer 的逻辑就是在第一次分配环境中来执行的,并且保证同一个执行环境执行且执行一次。

第一次的时候函数计算会为这些请求来分配实例,然后这实例会立即被释放掉,第二个请求和第三个解决都可以复用这个实例,Initializer 就是第一次创建这个实例之后,立刻就执行了证明和逻辑,去找初始化函数。

其实这个特性同一执行环境中执行自身的特性,就可以将一些建立链接,加载音乐这些耗时的操作放到 Initializer 里面来执行。

3、触发器

上节课是介绍了函数计算支持的丰富的世界元类型,在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,触发器提供了一种集中统一的方式来管理不同的事件源。当事件发生时,如果满足触发器定义的规则,事件源会自动触发,自动调用这个触发器所对应的函数。典型的使用场景包括对上传的 OSS 当中的对象进行处理,比如图像处理,音视频转码,OSS 的包解压,然后也包括对 SLS 中的日志进行清洗与处理,转存等等。

4、版本

前面介绍了服务,函数和触发器,开发者就可以基于函数计算把应用搭建起来,但是又有了新的问题,开发者有了新需求,需要更新代码。如果要保证线上应用不受影响,在写更新代码的时候,更新的是线上应用的版本。为了解决这个问题,函数计算就引入了版本和别名,别名是版本相当于服务的快照,包括服务的配置,服务内所有的函数的代码及函数的配置。

在开发和测试完成后就可以发布一个版本单调递增,版本发布后已发布的版本不能更改,可以继续在latest 版本上开发测试,不会影响已发布的版本。调用函数的时候,只需要指定版本就可以调用指定函数了。版本名称是函数计算指定的,而且是单调递增的,每次发布一个版本都会有一个新的版本名称,每次发布版本之后,要在客户端指定对应哪个版本。

就客户端是否还需要不断的来更改代码来指向最新的版本这个问题,引入了别名的概念,别名就是指向特定服务版本的指针,它本身下面是没有任何资源的,它是一个指针。

客户端只需要指定别名就可以保证最新的代码或者回归到某一个版本的代码,别名只有指挥发布的功能,10%的流量指向最新的版本,90%的流量指向老版本,这是可以的。只需要将别名指向以前的版本就可以迅速完成回滚。版本和别名解决了,函数不断更新迭代的问题让函数在开发的同时不会影响线上正在应用的服务。

 

三、开发流程

这是一个完整的开发流程,如图所示,开发者需要先创建服务,设置日志、权限这些配置,然后创建函数。当前版本是 Latest 版本,在 Latest 版本下编写代码开发函数,测试通过后可以发布版本。

第一次发布的版本是版本一,创建别名指向版本一就可以对外提供服务了。客户端调用函数的日志会记录在开发者配置的Log Store 里,函数计算提供完备的监控图表,应用上线后发布者可以通过监控图表和日志来查看应用的健康状况。

开发者有新的需求的时候,可以继续在 Latest 版本来更新代码开发函数,测试通过后就可以发布版本。这个时候线上的版本是刚才的版本编码,测试的版本 Latest 版本就是当前版本,当前版本是通过后就发布一个新的版本即版本二。

如果有现场业务进行灰度发布,先切换线上别名 10%的流量到版本二,接下来的请求10%会落到新的版本上,90%会落到老的版本上,这样就可以实现灰度发布,观察一段时间以后没有问题就可以切换百分之百的流量到版本二。

image.png

 

四、操作演示

最后通过一个事例来为大家演示应用完整的开发流程。

打开函数极端的控制台,然后创建一个服务开始,在这里新建服务 Demo Service。这里有一个绑定日志,指的就是正常情况下可以配置自己的 Log Project Log store,但是往往第一次的时候不知道怎么配置,所以函数计算这里默认创建了一个 Project,然后创建一个 Log Store,这个服务下面的所有日志都会打到这个 project 中,选择绑定日志,就是函数计算自动的帮助创建一个 project,并且将 project 设置为service对应下的 Loft Fik

 image.png

image.png

image.png

在创建这个 Service 的时候,它就只指定了 Loft Fik 的,可以在这其中对它进行更多的配置,可以点击修改。

这就是函数计算控制台默认帮助创建的,这个默认配置是允许访问公网,然后是不允许访问 VPC。如果是访问 VPC 的话就把允许访问 VPC 资源键打开,选择一下要访问的 VPC 的信息。

创建好服务之后继续来创建一个函数,选择这个服务,再点新建函数,这里有三个事件函数,HTTP 函数和函数模板,HTTP 函数是函数的入参就是 HTTP request 的返回值,APPresponse可以直接做应用的 solo,事件函数是函数的入参是用户可以指定的一个入参,它不是request,不是指定什么就是什么,返回值也是指定什么就是什么,就是像平时写的函数一样。模板是提供的一些比较常用的模板,以 hello word 函数为例,也是可以切换到其他服务的。

image.png

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
API 对象存储 Java
实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
实现从oss(阿里云)服务器以附件形式下载文件(含批量下载) 笔者在项目中写一个从阿里云服务器上面以附件形式下载文件的接口时,遇到了问题,网上搜索无任何相关的解决方案,最后通过通过自己查阅API文档,再结合自己的经验,实现了下载功能。
7293 0
|
并行计算 Linux C语言
PaddleOCR
PaddleOCR
2112 0
|
3月前
|
人工智能 运维 JavaScript
云上及本地部署OpenClaw/Clawdbot指南:附免费 API 和阿里云百炼 API 配置集成保姆级教程
2026年,OpenClaw(曾用名Clawdbot、Moltbot)凭借强大的任务自动化能力与灵活的多模型兼容特性,成为AI助手领域的热门选择。它支持系统控制、浏览器自动化、多平台渠道交互等核心功能,可通过API集成各类大模型,实现“自然语言指令驱动全流程自动化”。本文将完整拆解OpenClaw的**本地部署**、**2026年阿里云极简部署**、**Discord Bot配置**,并重点详解**阿里云百炼API集成**(含免费额度申请),所有代码命令可直接复制执行,覆盖从环境准备到功能验证的全流程,零基础也能快速落地。
770 12
|
3月前
|
存储 人工智能 安全
如何在 OpenClaw (Clawdbot) 配置阿里云百炼 API +云上+本地部署OpenClaw及常见问题解答
在AI自动化工具爆发的2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借开源轻量化架构、强大的任务调度能力及丰富的技能生态,成为个人与轻量团队搭建专属AI助手的首选。其核心价值在于“自然语言指令+模块化技能扩展”,而阿里云百炼大模型的接入,更让OpenClaw具备了顶尖的推理能力,可轻松处理邮件自动化、代码开发、文件管理等复杂任务。
2711 3
|
8月前
|
机器学习/深度学习 数据采集 人工智能
通义实验室Mobile-Agent-v3开源,全平台SOTA的GUI智能体,支持手机电脑等多平台交互
近日,通义实验室MobileAgent团队正式开源全新图形界面交互基础模型 GUI-Owl,并同步推出支持多智能体协同的自动化框架 Mobile-Agent-v3。该模型基于Qwen2.5-VL打造,在手机端与电脑端共8个GUI任务榜单中全面刷新开源模型性能纪录,达成全平台SOTA。
2544 2
|
4月前
|
自然语言处理 数据挖掘 测试技术
Qwen3-VL-Embedding系列上新:探索统一多模态表征与排序
2025年6月,Qwen3-VL-Embedding与Qwen3-VL-Reranker开源,基于Qwen3-VL打造,支持文本、图像、视频等多模态检索与跨模态理解,具备统一表示学习、高精度重排序能力,广泛适用于全球化多语言场景,助力高效多模态信息检索。
2122 5
|
5月前
|
数据采集 缓存 监控
闲鱼 item_get - 商品详情接口对接全攻略:从入门到精通
闲鱼item_get接口可精准获取二手商品详情,支持商品ID查询标题、价格、成色、卖家信息等全量数据,适用于比价、运营、风控等场景。本文提供从权限申请、签名认证到生产优化的全流程对接指南,确保稳定高效调用。
|
缓存 监控 数据库
缓存穿透、击穿、雪崩的应对策略
本文系统分析了缓存穿透、击穿与雪崩的成因及应对策略,涵盖布隆过滤器、空值缓存、分布式锁、逻辑过期、随机过期时间、多级缓存等解决方案,并结合代码示例与监控告警机制,助力构建高可用缓存体系。
620 1
|
11月前
|
机器学习/深度学习 自然语言处理 前端开发
国内快递地址解析技术的工作原理详解
随着电商和快递行业快速发展,非结构化地址问题日益突出,如字段混杂、拼写错误等,传统方式难以高效处理。为此,探数平台推出基于NLP和地理信息的快递地址解析API,可将原始地址文本解析为标准结构化字段(如省、市、区、街道等),并支持收件人姓名与电话提取。 技术上,该API采用深度学习模型(如BERT、BiLSTM)进行语义理解,结合地址知识图谱实现纠错与补全。服务支持SaaS调用或私有化部署,性能稳定,适用于各类前端场景。通过地址结构化处理,企业可显著提升订单处理效率,减少配送错误,优化用户体验,助力全链路智能化升级。无论是电商平台还是物流系统,均可从中受益。
931 0
|
缓存 边缘计算 监控
301重定向进阶实战:从基础到企业级解决方案
本文深入探讨301重定向的进阶技巧,涵盖企业级流量无损迁移、正则表达式优化及服务器性能调优等方案。通过复杂域名迁移策略(如Nginx多域名跳转)、Apache动态参数过滤、HTTP/2与CDN性能优化,以及Python权重分析和死链自动化处理,助你规避常见错误。此外,文章总结缓存雪崩预防、国际站点处理及监控预警系统等避坑指南,并展望边缘计算时代的Serverless架构与机器学习优化趋势,提供每月检查清单确保重定向稳定性。
296 0