Func Stateless Q&A
Func Stateless Q&A
1. Func 服务的 Stateful 和 Stateless 模式有什么区别?
Func Stateful 和 Stateless 区别在于 Stateful 应用是长时间运行的,而 Stateless 则是一次性的。Stateful 应用通常由 socket server 构成,用来处理用户的连接。Stateless 应用通常是由一系列代码指令构成,当应用执行完成后即销毁此应用。
2. Func Stateless 的云函数生命周期有哪几个阶段?
Func Stateless 的云函数生命周期周期如下:
在 Func Stateless 的函数页面进行"创建新版本","停用函数","回退历史版本"等操作后,随着应用状态的变化,所涉及的相应版本中的函数状态也会进行变更:
启用中:代表初次创建函数版本,该云函数已上传成功,正在部署以及分配函数地址。
已启用:代表该云函数上传和部署成功, 且成功分配函数的地址。
停用中:代表正在停用该云函数。
更新中:代表正在基于旧的版本创建新版本的云函数(此时旧版本的云函数及其函数地址仍然可用)。
已停用:代表当前版本的云函数已停止使用(新版本云函数已创建/ Func Stateless已停用),如有需要,可以将 Func Stateless 回滚至该版本以重新启用该函数。
回滚中:代表该云函数正在回滚至指定的版本。
3. Func Stateless 支持哪些编程语言?
当前 Func Stateless 支持 Node.js 和 C# 语言,在后续更新中会陆续支持其他常见的编程语言。如果有特殊的支持需求,可以 联系我们。
4. Func Stateless 支持分批上传函数吗?
目前,Func Stateless 不支持分批上传函数。在 Func Stateless 的使用过程中,每一批次上传的函数只要部署成功,就会标定为新的版本,而原先的旧版本函数就会停用。因此,我们建议您在使用过程中,可以对您需要使用的云函数进行统一的打包和上传,Func Stateless 会识别您的打包文件中的函数入口,单独为它们分配不同的函数地址。如果在后续过程中,需要对单个函数进行修改,您也需要对所有函数一同打包上传部署,构成新的版本。
5. Func Stateless 支持回滚吗?
支持的。Func Stateless 会为上传且部署成功的云函数标定版本号。每次上传新的函数时,版本号也会随之更新。您可以在函数页面查看当前版本号,亦可以浏览全部的历史版本及其对应的函数。如有需要,您只要指定版本号,就可以便捷地将 Func Stateless 回滚至该版本。
6. Func Stateless 支持跨域吗?我可以在 WebGL 应用或者小程序中调用云函数吗?
云函数默认是支持跨域的。在函数上传并且部署成功之后,Func Stateless 会为云函数默认开启 CORS 跨域,参见 开发指南 。
7. Func Stateless 的云函数支持上传二进制文件吗?
Func Stateless 的云函数不支持直接上传二进制文件,必须经过 Base64 编码后上传。 Func Stateless 提供了 "Base64 编码"的功能在服务端将请求体进行编码后再传递给云函数。启用该功能后,您无需改造客户端代码即可将二进制文件上传至云函数,参见 开发指南 。
8. 如何自主控制云函数返回的状态码,Headers 和 Body 内容?
Func Stateless 为云函数提供了集成响应的功能配置。通过使用集成响应,可以通过代码自主控制响应的状态码、headers、body 内容,可以实现自定义格式的内容响应,例如响应 XML、HTML、JSON 甚至 JS 内容。在使用集成响应时,函数的返回值需要符合特定的数据结构,才可以 Func Stateless 成功解析,参见 开发指南 。
9. 云函数的调用会超时吗?如何配置云函数的超时时间?
云函数的默认超时时间为3秒,若函数执行时间超过超时时长则会视作调用失败。在云函数部署成功之后,可以云函数的页面对超时时间进行配置,参见 开发指南 。
10. 小程序/小游戏需要用到的域名白名单?
如在小游戏/小程序中使用云函数,请将云函数域名 https://stateless.unity.cn 加入到小游戏/小程序域名白名单中。
11. Func Stateless Mysql 连接报错
在执行示例代码 await MysqlClientManager.GetConnection("", "", DBName); 时会抛出错误 Unexpected error: Index was outside the bounds of the array.
该报错与 Unity Editor 版本有关。建议先升级到最新的小版本(如 2021.3.45f1c1 或 2022.3.55f1c1 )再尝试,如依旧存在请 联系我们 。
12. 什么是云函数的冷启动与预热?
云函数的冷启动指的是当函数长时间未被调用时,其运行实例会被云平台回收。当再次被请求时,系统需要重新分配资源、初始化代码来启动一个新实例,这个过程会引入显著的延迟。
为了解决冷启动带来的延迟问题,可以采用预热策略。其核心思路是主动保持函数实例的“活跃”状态。
最直接有效的预热方法之一是:配置一个定时触发器。通过设置一个定时任务(例如每5-10分钟触发一次),定期调用您的云函数。这样可以阻止云平台回收函数实例,使其始终处于“热”的待命状态。当真实的业务请求到来时,函数就能被立即执行,从而避免冷启动延迟,保障服务的响应速度。
13. 云函数的CORS跨域默认开启吗?能自定义配置吗?
默认状态:是,云函数默认开启CORS跨域功能。
返回内容:默认返回以下CORS响应头:
Access-Control-Allow-Origin: *(允许所有域名访问)
自定义配置:不支持。系统采用统一的默认跨域设。
注意:此默认设置是为了确保Web应用(包括小程序)能正常调用云函数,并支持平台的在线调试功能。如果禁用跨域设置,相关功能将无法使用。
非Web应用调用:不会有影响。CORS是浏览器的安全机制,只在浏览器环境中生效。通过服务器端调用、命令行工具、移动端原生应用等非浏览器方式访问云函数时,不会执行CORS检查,完全不受跨域配置的影响。
14. 云函数支持哪些配置?如何开启这些功能?
要开启云函数的配置功能,请先登录云函数控制台,在函数列表中找到您的目标函数,点击进入函数详情页。在详情页的左侧菜单栏中点击"配置函数"选项。注意:所有配置功能都需要升级为正式用户后才能使用。
在配置页面中,您可以设置请求方法、固定公网IP、集成响应、Base64编码、执行超时时间、运行内存、环境变量、定时触发器等功能。
