基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(2)Serverless 的技术种类
- UID
- 1066743
|
基于 Kubernetes 集群的 Serverless 在 IoT 中的应用(2)Serverless 的技术种类
Serverless 的技术种类Serverless 较早在公有云上得到了实现,大多基于闭源的技术。但近年来,基于开源、可在私有云上部署的 Serverless 架构发展很快。
接下来,我们看一下主流 Serverless 技术种类和其启动的时间:
表 1. Serverless 技术种类项目是否开源是否支持 Kubernetes启动时间 Yes Yes 2017 Apache OpenWhisk Yes Yes 2015 Fission Yes Yes 2016 Funktion Yes Yes 2017 Project Riff Yes Yes 2017 Amazon Lambda No No 2014 Azure Functions No No 2016 Google Cloud Functions (beta) No No 2016
在 Serverless 的相关开源社区中,Apache OpenWhisk 是规模最大的,同时还支持 Kubernetes,该项目由 IBM 在 2016 年公布并贡献给开源社区。因此,本文接下来将针对 OpenWhisk 在私有 Kubernetes 上展开。
OpenWhisk 的核心概念在 OpenWhisk 中有六个较为核心的概念:Triger、Action、Rule、Sequence、Package、Feeds,我们先介绍这六个概念的含义。
Trigger 是一类事件的命名通道,以便 OpenWhisk 具备事件驱动的能力。以下是触发器的示例:
- 位置更新事件的触发器。
- 文档上传到网站的触发器。
- 传入电子邮件的触发器。
- 可以使用键值对字典来触发(激活)触发器。
Action 是无状态函数,它封装了要在 OpenWhisk 平台上运行的代码。一个 Action 可以写成 JavaScript、Swift、Python 或 PHP 函数、Java 方法,任何二进制兼容的可执行文件,包括 Go 程序和打包为 Docker 容器的自定义可执行文件。
Action 可以显式调用操作,也可以响应事件运行操作。每次运行操作都会生成由唯一激活 ID 标识的激活记录。Action 的输入和 Action 的结果是键值对的字典,其中键是字符串,值是有效的 JSON 值。Action 也可以由对其他 Action 的调用或定义的 Action 序列组成。
Rule 将一个 Trigger 与一个 Action 相关联,Trigger 的每次触发都会导致以 Trigger 事件作为输入调用相应的操作。
使用适当的规则集,单个触发器事件可以调用多个操作,或者可以调用操作作为对来自多个触发器的事件的响应。
图 1. Trigger、Rule 和 Action 之间的关系
在了解了 Triger、Action、Rule 三个概念以及三者之间的关系后,接下来,我们再看另外三个概念:Sequence、Package、Feeds。
Sequence: 比较好理解,它创建 Action 之间的调用关系。OpenWhisk 提供将多个操作链接在一起的功能,其中一个操作的输出是另一个操作的输入。此功能称为序列。序列是完全独立的操作,并定义了执行操作的顺序。
Package: 我们可以将多个相关 Action 组合放到一个 Package 中。Package 允许将常见的资源集(例如参数)应用于多个 Action。
Feeds: 本质的作用是将环境外部的事件连接到 Trigger 上。Feed 是 OpenWhisk 中的一个高级概念,用户可以在 Package 中暴露 event producer service。Feed 由 Feed Action 控制,Feed Action 处理删除、暂停和恢复事件流。 |
|
|
|
|
|