介绍
函数型云托管 是云开发推出的支持在 云托管 上运行 函数式代码 的一种 函数托管模式,因此也可以称为 云托管-函数模式。
函数型云托管 本质上是 云托管 服务的一种开发和运行模式,支持在 云托管 上开发和运行 函数式代码,而不需要像开发传统容器服务一样开发一个完整的服务。
函数型云托管 可以让容器服务开发像开发云函数一样简单。
技术原理:函数型云托管 = 云托管 + 函数框架 (@cloudbase/functions-framework) + 函数代码。函数框架 通常也称为 运行时(Runtime),可以加载云函数并运行。云托管 提供云端容器化运行环境。
Q:函数型云托管 解决什么问题?
- 相比
云托管,函数型云托管具备更简单的开发方式 - 相比
云函数,函数型云托管可支持更多场景能力
函数型云托管 在一定程度上结合了两者的优点,开发者可以根据自己的业务场景进行选择
Q:如何选择是否需要 函数代码 部署到 云托管?
- 如果业务场景需要支持
WebSocket 长连接、Server-Sent Events (SSE)、表单提交、文件上传下载、流式响应、单实例多函数、函数间共享内存数据等特性,需要使用函数型云托管 - 如果业务场景对响应耗时更高要求,更好的用户体验,推荐使用
函数型云托管 - 如果需要在函数中连接
Redis、MySQL等数据库,推荐使用函数型云托管 - 如果需要在函数中对接
Kafka、Pulsar等消息队列,需要使用函数型云托管 - 如果业务场景中需要进行长耗时异步任务处理,推荐使用
函数型云托管 - 如果需要更好的
日志查询能力,推荐使用函数型云托管 - 如果想获得更好的开发调试体验,推荐使用
函数型云托管 - 目前
函数型云托管还在不断迭代中,如某些功能特性在函数型云托管中尚未支持,推荐使用云函数进行开发
函数框架
@cloudbase/functions-framework提供了更好的能力支持
Q:函数型云托管 是否需要理了解云托管或容器
- 需要了解
云托管,例如需要决定选择实例规格、实例数量等,云托管本身也比较简单,也很容易上手 - 不需要理解
容器,开发者不需要了解容器的概念和原理以及如何使用容器等 - 总体上来说,相比
云函数并没有需要学习和了解很多新内容
Q:现有云函数代码如何迁移到 云托管?
- 现有云函数代码进行简单的改造后可以运行到云托管环境中
- 除了云函数代码本身进行改造外,客户端侧代码也需要进行简单的改造
因
函数框架 (@cloudbase/functions-framework)与云函数运行时机制存在一定差异,因此可能需要进行一定的改造。
Q:基于函数型云托管编写的函数代码是否可以运行在其他环境?
- 可以,通过
函数框架 (@cloudbase/functions-framework)即在任何支持node.js运行的环境中运行函数代码 - 支持 本地运行,主要针对开发调试场景
- 支持 部署在传统主机环境中,例如云服务器环境中
- 支持 部署在容器环境中,例如
Docker环境中
相比运行在云托管环境中,部署在其他环境中时,需要自行解决构建部署等问题。
更多详细的差异对比见 对比其他方案-对比云函数 文档。
注意:函数型云托管 和 云函数 在调用方式、调用链路、和运行时机制上是不同的,现有 云函数代码 在 函数型云托管 上运行需要进行简单的改造。