Apache OpenWhisk 2.0.0 介绍与选型指南

Apache OpenWhisk 2.0.0 官方资料溯源:Serverless 函数平台的版本基准、架构、功能、快速上手与 OpenFaaS、Knative 选型对比

Apache OpenWhisk2026/10/18

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.orghttps://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 ,本文不进行本地部署实测。

  1. 部署平台:按官方 README Quick Start 指引,可选 Standalone 单机模式(本机体验)或 openwhisk-deploy-kube 项目在 Kubernetes 上部署(开发与生产推荐)。
  2. 配置 wsk 命令行工具:设置 API host、命名空间与鉴权密钥(官方 CLI 文档给出 wsk property set 命令)。
  3. 创建并调用第一个函数(官方文档示例形态):
# hello.js 内容为 function main(params) { return { msg: "Hello, " + params.name + "!" } }
wsk action create hello hello.js
wsk action invoke hello --result --param name World
  1. 建立事件驱动:创建触发器并绑定规则,将定时或消息事件源连接到 hello 函数(官方 trigger/rule 文档提供完整命令)。
  2. 更多示例见官方 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.0OpenFaaSKnative Serving
开源许可Apache-2.0MIT(社区版,另设商业版)Apache-2.0
GitHub stars + 最近发版6,805;核心仓库 v2.0.0(2024-04-07),组件仓库各自发版26,253;0.27.136,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。

八、参考链接

  1. 官网:https://openwhisk.apache.org/
  2. 官方文档页:https://openwhisk.apache.org/documentation
  3. GitHub 核心仓库:https://github.com/apache/openwhisk
  4. Kubernetes 部署项目:https://github.com/apache/openwhisk-deploy-kube
  5. 官方函数示例:https://github.com/apache/openwhisk-samples
  6. ASF 发行目录:https://downloads.apache.org/openwhisk/
  7. Apache 许可证:https://www.apache.org/licenses/LICENSE-2.0
  8. OpenFaaS 仓库:https://github.com/openfaas/faas
  9. Knative 仓库:https://github.com/knative/serving