简介: 事件驱动是指事件在继续事务管理过程中,进行决策的一种策略。能够通过调动可用资源执行相干工作,从而解决一直呈现的问题。艰深地说是当用户触发应用行为时对用户行为的响应。在 Serverless 场景下,事件驱动完满合乎其设计初衷之一:按需付费。
作者 | 李鹏(元毅)
起源 | Serverless 公众号
一、事件驱动框架:Knative Eventing
事件驱动是指事件在继续事务管理过程中,进行决策的一种策略。能够通过调动可用资源执行相干工作,从而解决一直呈现的问题。艰深地说是当用户触发应用行为时对用户行为的响应。在 Serverless 场景下,事件驱动完满合乎其设计初衷之一:按需付费。
-
Knative 模型
图:Knative 模型
Knative 次要包含两大部分:一是用于工作负载的 Serving,包含版本治理、灰度流量、主动弹性;二是 Eventing(事件驱动框架)。
-
外围玩家
- Google;
- IBM;
- Pivotal;
- RedHat;
- SAP。
-
友商相干产品
- Google CloudRun;
- IBM;
- Pivotal Function Service(PFC);
- OpenShift。
-
事件驱动框架:Eventing
Knative 的 Eventing 提供了一个残缺的事件模型,不便接入各个内部零碎的事件。事件接入当前,通过 Cloud Event 规范在外部流转,联合 Broker-Trigger 模型进行事件处理。
从上图能够看到,Eventing 中蕴含三局部内容:
- 事件源
- Broker-Trigger:事件驱动模型,这个模型在晚期 16 年的版本开始呈现,其原理是 Trigger 订阅 Broker 信息并过滤,最初将事件发送到对应的服务进行生产。
- 音讯零碎:在 Eventing 中每个 Broker 上面对应一个音讯的零碎,来承载对事件的整个流转。目前社区反对的音讯零碎包含 Kafka、NATS、Rocket MQ、Rabbit MQ 等。
-
要害个性:事件规定
事件规定的外围是 Broker-Trigger 模型,它蕴含以下个性:
- Trigger 的 filter 的作用是对 Event 进行内容过滤;
- 反对对 Event 的 Attribute 以及 Data 的内容进行过滤;
- 反对 Common Expression Language(CEL)表达式过滤;
- 反对通过 SourceAndType(事件源类型)进行过滤。
二、事件驱动引擎 - 事件源
-
事件源介绍
Knative 社区中提供了丰盛的事件源接入,包含 Kafka、Github,也反对接入音讯云产品的一些事件,比方 MNS、RocketMQ 等。
如上图所示,接入事件源之后,能够通过 Broker-Trigger 模型申请相应的服务。这些服务包含一些具体场景,比方从源码构建镜像、自动化镜像公布、AI 音视频解决、定时工作等。所有的事件都须要这样的事件源来拉取,而后下发到 Eventing 整个事件流转过程。
-
事件接入
- 接入音讯云产品事件源;
- 通过 MNS 接入更多云产品的事件。
-
事件处理
- Knative Eventing 外部实现事件的订阅、过滤和路由机制;
- 事件最终通过 Knative 治理的 Serverless 服务进行生产。
-
典型案例
- AI 音视频解决;
- 代码提交主动构建镜像。
-
RocketMQ 事件源
音讯队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低提早、高并发、高可用、高牢靠的分布式消息中间件。
音讯队列 RocketMQ 版既可为分布式应用零碎提供异步解耦和削峰填谷的能力,同时也具备互联网利用所需的海量音讯沉积、高吞吐、牢靠重试等个性。
RocketMQSource 是 Knative 平台的 RocketMQ 事件源。其能够将 RocketMQ 集群的音讯以 Cloud Event 的格局实时转发到 Knative 平台,是 Apahe RocketMQ 和 Knative 之间的连接器。
-
Kafka 事件源
音讯队列 Kafka 版是阿里云基于 Apache Kafka 构建的高吞吐量、高可扩展性的分布式音讯队列服务,宽泛用于日志收集、监控数据聚合、流式数据处理、在线和离线剖析等,是大数据生态中不可或缺的产品之一,阿里云提供全托管服务,用户无需部署运维,更业余、更牢靠、更平安。
三、AI 事件驱动场景实际
以具体场景为例,该案例是一个 直播零碎,零碎每天都有海量的直播拜访,访问量依据直播热度随时变动,弹性有稳定,同时存在不定时的增量。客户的诉求,一是业务弹性稳定,音讯并发性比拟高;二是互动实时响应,要求低提早。
为了满足对音讯解决的 弹性稳定、高并发及低提早 的要求,客户抉择阿里云的 Knative 服务进行数据的弹性解决。阿里云 Knative 齐全符合了用户以后的诉求,并且在接入 K8s 规范之上,提供了基于事件和音讯的弹性调度。
当利用实例数随着业务的波峰波谷进行扩容和缩容时,真正做到了 按需应用、实时弹性 的能力。整个过程齐全自动化,缩小业务开发人员在基础设施上的累赘。在这个案例中,Knative 次要提供了三个能力:极致弹性、事件处理、开箱即用。
上面进行示例演示,演示内容次要有:
- 部署 Kafka 事件源
- 部署事件网关
- 部署服务
- 模仿事件处理
作者简介:
李鹏,花名:元毅,阿里云容器平台高级开发工程师,2016 年退出阿里,深度参加了阿里巴巴全面容器化、间断多年反对双十一容器化链路。专一于容器、Kubernetes、Service Mesh 和 Serverless 等云原生畛域,致力于构建新一代 Serverless 平台。以后负责阿里云容器服务 Knative 相干工作。
原文链接
本文为阿里云原创内容,未经容许不得转载。