Apache OpenWhisk 2.0.0 介绍与选型指南
Apache OpenWhisk 2.0.0 官方资料溯源:Serverless 函数平台的版本基准、架构、功能、快速上手与 OpenFaaS、Knative 选型对比
Apache OpenWhisk 2.0.0 介绍与选型指南
一、信息基准
1.1 版本基准
| 项目 | 内容 |
|---|---|
| 查询日期 | 2026-10-18 |
| 软件名称 | Apache OpenWhisk(Apache 软件基金会开源 Serverless 函数平台) |
| 本次介绍版本 | 2.0.0(核心仓库最新正式发布,GitHub Release 记录时间 2024-04-07) |
| 开源许可 | Apache License 2.0 |
| 版本依据 | GitHub releases/latest 重定向指向 v2.0.0;Release 时间线为 2.0.0(2024-04-07)、1.0.0(2020-11-10)、0.9.0-incubating(2018-10-31);downloads.apache.org/openwhisk/ 仅保留 20.11 目录下的 1.0.0 源码包 |
| 发布模式 | 联邦式项目:核心仓库与数十个组件仓库(多语言运行时、命令行工具、部署工具等)各自独立发版 |
1.2 官方来源清单
| 来源 | 地址 | 说明 |
|---|---|---|
| 官网 | https://openwhisk.apache.org/ | 项目介绍与社区入口 |
| 官方文档页 | https://openwhisk.apache.org/documentation | 全量文档索引 |
| GitHub 核心仓库 | https://github.com/apache/openwhisk | 源码、README 与 Release 记录 |
| ASF 发行目录 | https://downloads.apache.org/openwhisk/ | 签名源码包(早期 1.0.0) |
| 部署项目 | https://github.com/apache/openwhisk-deploy-kube | 面向 Kubernetes 的官方部署方案 |
| samples 仓库 | https://github.com/apache/openwhisk-samples | 官方函数示例 |
| projects.apache.org | https://projects.apache.org/ | Apache 项目总目录 |
二、软件概述
Apache OpenWhisk 是 Apache 软件基金会开源的 Serverless 函数平台,提供"事件—函数—规则"的编程模型:开发者将代码以函数(Action)形式部署到平台,通过触发器(Trigger)与规则(Rule)将定时任务、消息队列、HTTP 请求等事件源连接到函数,函数在受隔离的执行环境中按需运行并按执行计费式地伸缩,无需常驻运维。平台另提供序列(Sequence)机制将函数编排为无服务工作流,以及 API 网关能力把函数发布为无服务器 API。
本文介绍的版本为 Apache OpenWhisk 2.0.0,即核心仓库 GitHub releases/latest 当前指向的正式版本(2024-04-07 发布)。需要如实说明的是:OpenWhisk 采用联邦式发布模式,核心仓库的整版发布节奏较慢(上一次整版 1.0.0 为 2020-11-10),而多语言运行时、CLI、部署工具等组件仓库保持各自的发版节奏,因此对 OpenWhisk 的版本评估应结合具体使用的组件仓库状态。
官网 README 对平台的自我定位是"用于构建云应用的无服务器函数平台",支持在本机部署体验,也可面向开发与生产环境部署到 Kubernetes。
三、核心架构
3.1 总体结构
- 入口层:提供 REST API 供命令行工具与程序调用,负责鉴权、路由与配额控制(官方架构文档中的 Controller 职责)。
- 执行层:激活请求经内部消息总线投递后,由执行组件在受隔离的执行环境中拉起函数进程运行(官方架构文档中的 Invoker 职责)。
- 编排与调度:Scheduler 负责激活的调度排队,支撑大规模并发下的任务分配。
- 状态与数据:使用 CouchDB 存储实体(函数、规则、命名空间)与激活记录;激活事件经消息组件在组件间传递。
3.2 编程模型
- Action:以函数为部署单元,支持将多函数串联为 Sequence 组成工作流。
- Trigger 与 Rule:事件源产生 Trigger,Rule 将 Trigger 映射到 Action,实现事件驱动。
- Feed:连接外部事件系统(定时、消息等)的适配机制。
3.3 运行时与扩展
- 多语言运行时以独立组件仓库形式提供(Node.js、Python、Java、Go、PHP、Ruby、Swift 等,见官方 GitHub 组织)。
- 函数可运行于受隔离的沙箱化执行环境,同一函数实例可配置并发执行以提升资源利用率。
四、功能特性
4.1 无服务器核心能力
- 事件驱动函数执行:按需拉起、执行完毕即释放,无需常驻服务。
- 自动伸缩:按激活并发量动态分配执行资源,支持函数内并发参数调优。
- 序列编排:Sequence 将函数组合为流水线;组合式编程模型支持把 API 编排为工作流。
4.2 集成能力
- 触发器/规则/Feed 的事件生态,官方提供定时(alarms)、Kafka 等事件源扩展。
- API 网关:将 Action 直接发布为受管理的 REST 端点。
- 命令行工具 wsk 与 REST API 双通道管理所有资源。
4.3 部署形态
- Kubernetes 部署:官方 openwhisk-deploy-kube 项目提供 Helm 方案,面向开发与生产环境。
- Standalone 单机模式:以可执行包方式在本机快速启动完整平台,用于开发体验。
- 多语言运行时可按需裁剪,配合包(packages)机制扩展事件源与外部服务连接。
五、快速上手
以下步骤引自官方核心仓库 README 的 Quick Start 章节与官方文档页 https://openwhisk.apache.org/documentation ,本文不进行本地部署实测。
- 部署平台:按官方 README Quick Start 指引,可选 Standalone 单机模式(本机体验)或 openwhisk-deploy-kube 项目在 Kubernetes 上部署(开发与生产推荐)。
- 配置 wsk 命令行工具:设置 API host、命名空间与鉴权密钥(官方 CLI 文档给出 wsk property set 命令)。
- 创建并调用第一个函数(官方文档示例形态):
# hello.js 内容为 function main(params) { return { msg: "Hello, " + params.name + "!" } }
wsk action create hello hello.js
wsk action invoke hello --result --param name World
- 建立事件驱动:创建触发器并绑定规则,将定时或消息事件源连接到 hello 函数(官方 trigger/rule 文档提供完整命令)。
- 更多示例见官方 samples 仓库 https://github.com/apache/openwhisk-samples 。
六、适用场景与限制
适用场景:
- 事件驱动的轻量计算:定时任务、消息处理、IoT 事件、Webhook 等短时函数负载。
- 需要完全开源自托管 Serverless 平台、且希望以 Kubernetes 为承载环境的团队。
- 多语言函数并存(Node.js、Python、Java、Go 等)的异构技术栈。
限制:
- 核心仓库整版发布节奏缓慢:最新整版 2.0.0 发布于 2024-04-07,之后的演进主要体现在组件仓库,需自行跟踪各组件状态。
- 组件链路复杂:入口、调度、执行、消息、状态存储等组件需一并运维,小规模使用时运维成本偏高。
- 社区热度中等(核心仓库星标数千级),明显低于 OpenFaaS 等同类项目。
- 冷启动延迟对实时性敏感场景需要专门调优(预热、并发参数等)。
七、同类选型对比
对比对象选取同为开源 Serverless/FaaS 平台的 OpenFaaS 与 Knative。数据来源:GitHub 仓库页面与 releases/latest(2026-10-18 查询)、各官方文档。
| 维度 | Apache OpenWhisk 2.0.0 | OpenFaaS | Knative Serving |
|---|---|---|---|
| 开源许可 | Apache-2.0 | MIT(社区版,另设商业版) | Apache-2.0 |
| GitHub stars + 最近发版 | 6,805;核心仓库 v2.0.0(2024-04-07),组件仓库各自发版 | 26,253;0.27.13 | 6,110;knative-v1.23.0 |
| 版本节奏 | 核心整版年更级别甚至更慢,演进分散在组件仓库 | 社区版高频小步发布,发布说明清晰 | 主仓库按月度节奏滚动,v1.x 序列稳定推进 |
| 兼容矩阵 | Kubernetes 部署为主(Helm),另支持 Standalone 单机;多语言运行时组件自选 | 函数以 OCI 制品打包,Kubernetes 原生运行,亦提供轻量单机形态(faasd) | 深度绑定 Kubernetes,依托其底层设施实现按需伸缩与缩零 |
补充说明:OpenWhisk 的差异化在"事件—函数—规则"模型与 Sequence 编排,适合事件驱动架构;OpenFaaS 开发者体验好、社区最活跃,函数即 OCI 制品的心智模型简单;Knative 由大厂生态共同推进,缩零与流量治理能力最完善,但体系最重。
选型建议:以事件驱动编排为核心诉求且接受 Apache 治理生态时选 OpenWhisk;追求简单上手与活跃社区选 OpenFaaS;已深度使用 Kubernetes 并需要标准化 Serverless 运行时与缩零能力选 Knative。
八、参考链接
- 官网:https://openwhisk.apache.org/
- 官方文档页:https://openwhisk.apache.org/documentation
- GitHub 核心仓库:https://github.com/apache/openwhisk
- Kubernetes 部署项目:https://github.com/apache/openwhisk-deploy-kube
- 官方函数示例:https://github.com/apache/openwhisk-samples
- ASF 发行目录:https://downloads.apache.org/openwhisk/
- Apache 许可证:https://www.apache.org/licenses/LICENSE-2.0
- OpenFaaS 仓库:https://github.com/openfaas/faas
- Knative 仓库:https://github.com/knative/serving