📒
cncf-serverless
  • 前言
  • Tools
  • Security
  • Framework
    • Dapr
    • Serverless
  • Hosted Platform
    • Alibaba Cloud Function Compute
    • AWS Lambda
    • Azure Functions
    • Google Cloud Functions
    • Huawei FunctionStage
    • Tencent Cloud Serverless Cloud Function
  • Installable Platform
    • Apache OpenWhisk
    • Fission
    • Kubeless
    • OpenFaas
    • KEDA
    • Knative
      • 最近 release
      • 部署
      • 架构
      • 概念
      • 基本使用
      • event source
      • event flows
  • WG Serverless
    • cloud events
    • workflow 规范
  • 结语
Powered by GitBook
On this page
  • 架构
  • 概念
  • 其它

Was this helpful?

  1. Installable Platform

Apache OpenWhisk

PreviousInstallable PlatformNextFission

Last updated 4 years ago

Was this helpful?

本文基于 71b7d564ff60bf6e89be5410ffcf59f785d17a4a 版本。因为对 scala 并不熟,这个项目就简单介绍一下

架构

OpenWhisk 复用了社区的 Nginx, Kafka, Docker, CouchDB 组件,新增了 Controller 和 Invoker 组件

这里给出一个简单的 demo:

  • 用户编写函数代码

      function main() {
          console.log('Hello World');
          return { hello: 'world' };
      }
  • 创建 action

      wsk action create myAction action.js
  • 触发 action

      wsk action invoke myAction --result

create 是一个简单的 crud,下面结合架构图,来说一下 invoke 的工作流:

  • wsk action invoke 命令向 nginx 发起了一个 http 请求

  • nginx 转发请求到 controller

  • controller 完成 request 的认证,并从 couchDB subjects 数据库获取信息完成鉴权

  • 鉴权通过后,controller 从 couchDB whisks 数据库获取 action 信息

  • controller 包含 Load Balancer 模块,它检查系统中所有 executor(称为 Invoker)的健康状况,获悉全局可用 invoker,发送信息到 kafka

  • invoker 获取 message,kafka 返回 activationID 给用户(异步)

  • invoker 启动 docker 容器,注入 action 代码,执行完后,将结果存储到 couchDB activations 数据库

  • invoker 销毁容器

参考文档:

概念

上文中提到了 action 等一些概念,本节会系统性的介绍 OpenWhisk 中的主要概念

  • Namespace:namespace 是 OpenWhisk 组织资源对象的方式,像 actions, triggers, 和 rules 都归属于某一个 namespace

其它

Package:和 namespace 类似,一个 namespace 可以包含多个 package。对 actions 等对象来说,可以归属 package 也可以不归属。package 的主要作用是共享和复用,例如 /whisk.system/github 就包含了对 github webhook 的支持。具体内容可参考

Action:action 就是用户定义的函数。支持多种语言,支持同步、异步调用,还可以控制 action 调用链顺序。借助 wsk 命令行可以方便的编写、触发、更新函数。具体内容可参考

Trigger & Rule:通过 wsk action invoke 可以触发 action,但一般在生产环境,需要通过 trigger 和 rule 来触发。其中,trigger 由 feed 触发,rule 则绑定 trigger 和 action。具体内容可参考

Feed:feed 是触发函数的事件源,OpenWhisk 支持三种 feed:Hooks, Polling 和 Connections。Hooks 指由一个 webhook 触发,如 github 提交代码;Polling 指靠 action 去主动轮询;Connections 则是指另起一个服务,它来关注事件源,在获取事件后,主动通知 OpenWhisk。具体内容可参考

OpenWhisk 还支持用户自定义自己的 runtime,具体内容可参考

图片来源
System overview
Using and creating OpenWhisk packages
OpenWhisk Actions
Creating triggers and rules
Implementing feeds
Developing a new Runtime with the ActionLoop proxy
Apache OpenWhisk
architecture