作者 | 李鹏(元毅)

来源 | Serverless 公众号

一、事件驱动框架:Knative Eventing

事件驱动是指事件在持续事务管理过程中,进行决策的一种策略。可以通过调动可用资源执行相关任务,从而解决不断出现的问题。通俗地说是当用户触发使用行为时对用户行为的响应。在 Serverless 场景下,事件驱动完美符合其设计初衷之一:按需付费。

1. Knative 模型

图:Knative 模型

Knative 主要包括两大部分:一是用于工作负载的 Serving,包括版本管理、灰度流量、自动弹性;二是 Eventing(事件驱动框架)。

  • 核心玩家

    • Google;
    • IBM;
    • Pivotal;
    • RedHat;
    • SAP。
  • 友商相关产品

    • Google CloudRun;
    • IBM;
    • Pivotal Function Service(PFC);
    • OpenShift。

2. 事件驱动框架:Eventing

Knative 的 Eventing 提供了一个完整的事件模型,方便接入各个外部系统的事件。事件接入以后,通过 Cloud Event 标准在内部流转,结合 Broker-Trigger 模型进行事件处理。

从上图可以看到,Eventing 中包含三部分内容:

  • 事件源
  • Broker-Trigger:事件驱动模型,这个模型在早期 16 年的版本开始出现,其原理是 Trigger 订阅 Broker 信息并过滤,最后将事件发送到对应的服务进行消费。
  • 消息系统:在 Eventing 中每个 Broker 下面对应一个消息的系统,来承载对事件的整个流转。目前社区支持的消息系统包括 Kafka、NATS、Rocket MQ、Rabbit MQ 等。

3. 关键特性:事件规则

事件规则的核心是 Broker-Trigger 模型,它包含以下特性:

  • Trigger 的 filter 的作用是对 Event 进行内容过滤;
  • 支持对 Event 的 Attribute 以及 Data 的内容进行过滤;
  • 支持 Common Expression Language(CEL)表达式过滤;
  • 支持通过 SourceAndType(事件源类型)进行过滤。

二、事件驱动引擎-事件源

1. 事件源介绍

Knative 社区中提供了丰富的事件源接入,包括 Kafka、Github,也支持接入消息云产品的一些事件,比如 MNS、RocketMQ 等。

如上图所示,接入事件源之后,可以通过 Broker-Trigger 模型请求相应的服务。这些服务包括一些具体场景,比如从源码构建镜像、自动化镜像发布、AI 音视频处理、定时任务等。所有的事件都需要这样的事件源来拉取,然后下发到 Eventing 整个事件流转过程。

  • 事件接入

    • 接入消息云产品事件源;
    • 通过 MNS 接入更多云产品的事件。
  • 事件处理

    • Knative Eventing 内部实现事件的订阅、过滤和路由机制;
    • 事件最终通过 Knative 管理的 Serverless 服务进行消费。
  • 典型案例

    • AI 音视频处理;
    • 代码提交自动构建镜像。

2. RocketMQ 事件源

消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。

消息队列 RocketMQ 版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

RocketMQSource 是 Knative 平台的 RocketMQ 事件源。其可以将 RocketMQ 集群的消息以 Cloud Event 的格式实时转发到 Knative 平台,是 Apahe RocketMQ 和 Knative 之间的连接器。

3. Kafka 事件源

消息队列 Kafka 版是阿里云基于 Apache Kafka 构建的高吞吐量、高可扩展性的分布式消息队列服务,广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等,是大数据生态中不可或缺的产品之一,阿里云提供全托管服务,用户无需部署运维,更专业、更可靠、更安全。

三、AI 事件驱动场景实践

以具体场景为例,该案例是一个直播系统,系统每天都有海量的直播访问,访问量根据直播热度随时变化,弹性有波动,同时存在不定时的增量。客户的诉求,一是业务弹性波动,消息并发性比较高;二是互动实时响应,要求低延迟。

为了满足对消息处理的弹性波动、高并发及低延迟的要求,客户选择阿里云的 Knative 服务进行数据的弹性处理。阿里云 Knative 完全契合了用户当前的诉求,并且在接入 K8s 标准之上,提供了基于事件和消息的弹性调度。

当应用实例数随着业务的波峰波谷进行扩容和缩容时,真正做到了按需使用、实时弹性的能力。整个过程完全自动化,减少业务开发人员在基础设施上的负担。在这个案例中,Knative 主要提供了三个能力:极致弹性、事件处理、开箱即用。

下面进行示例演示,演示内容主要有:

  • 部署 Kafka 事件源
  • 部署事件网关
  • 部署服务
  • 模拟事件处理

演示过程观看链接:https://developer.aliyun.com/live/246128

作者简介:

李鹏,花名:元毅,阿里云容器平台高级开发工程师,2016 年加入阿里, 深度参与了阿里巴巴全面容器化、连续多年支持双十一容器化链路。专注于容器、Kubernetes、Service Mesh 和 Serverless 等云原生领域,致力于构建新一代 Serverless 平台。当前负责阿里云容器服务 Knative 相关工作。

AI 事件驱动场景 Serverless 实践的更多相关文章

  1. 5分钟Serverless实践 | 构建无服务器的敏感词过滤后端系统

    前言 在上一篇“5分钟Serverless实践”系列文章中,我们介绍了什么是Serverless,以及如何构建一个无服务器的图片鉴黄Web应用,本文将延续这个话题,以敏感词过滤为例,介绍如何构建一个无 ...

  2. 5分钟Serverless实践:构建无服务器的图片分类系统

    前言 在过去“5分钟Serverless实践”系列文章中,我们介绍了如何构建无服务器API和Web应用,从本质上来说,它们都属于基于APIG触发器对外提供一个无服务器API的场景.现在本文将介绍一种新 ...

  3. 从零入门 Serverless | 在线应用的 Serverless 实践

    作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...

  4. 搞懂分布式技术6:Zookeeper典型应用场景及实践

    搞懂分布式技术6:Zookeeper典型应用场景及实践 一.ZooKeeper典型应用场景实践 ZooKeeper是一个高可用的分布式数据管理与系统协调框架.基于对Paxos算法的实现,使该框架保证了 ...

  5. 【沙龙报名中】集结腾讯技术专家,共探AI技术原理与实践

    | 导语 9月7日,上海市长宁区Hello coffee,云+社区邀您参加<AI技术原理与实践>沙龙活动,聚焦人工智能技术在各产业领域的应用落地,共话AI技术带来的机遇与挑战,展望未来. ...

  6. 当课堂因监控技术变“囚笼”,存在争议的AI使用场景该被抵制吗?

    当马云和马斯克高谈阔论AI是否会影响人类社会时,尚无"感情"的AI已在校园中"作恶".近日,一张AI监控课堂的GIF在网上迅速刷屏.这张GIF中记录了课堂中所有 ...

  7. Serverless实践-静态网站托管

    Serverless实践-静态网站托管 超多图预警!!! 本文旨在帮助不懂运维/网络/服务器知识的小白,在不租用云服务器的情况下,实现Web站点的上线部署 适合边看文章边跟着动手做 包含使用Githu ...

  8. 5分钟Serverless实践 | 构建无服务器图片鉴黄Web应用

    Serverless是什么 Serverless中文译为“无服务器”,最早可以追溯到2012年Ken Fromm发表的<Why The Future Of Software And Apps I ...

  9. [转]Serverless实践

    转载的,原文: https://www.cnblogs.com/middleware/p/9470533.html ------------------------------------------ ...

随机推荐

  1. URL的加密解密方法

    package day11.about_url_encoder; import java.io.UnsupportedEncodingException; import java.net.URLDec ...

  2. Java HdAcm1069

    import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { Lis ...

  3. reids rdb与aof

    rdb:时合高并发场景,容易备份恢复,会丢失部分数据 1.默认开启的方式,可以进过压缩,可以根据时间点生成快照 2.数据量大的情况下恢复快 3.bgsave一边开启fork保存文件,一边继续响应客户端 ...

  4. linux上传下载文件(转载https://www.jb51.net/article/143112.htm)

    转载于:https://www.jb51.net/article/143112.htmLinux下目录复制:本机->远程服务器 1 scp -r /home/shaoxiaohu/test1 z ...

  5. Linux的基础——虚拟机的克隆

    1.虚拟机的安装 虚拟机的安装在另一个文档 安装jdk(在另外一个文档中) 2.虚拟机的克隆 准备工作:一台装有Linux系统的主机(已经配置好jdk) 选择主机进行克隆 注意:这里一定要选择创建完整 ...

  6. jquery mobile常用的data-role类型

    data-role参数表: page        页面容器,其内部的mobile元素将会继承这个容器上所设置的属性 header     页面标题容器,这个容器内部可以包含文字.返回按钮.功能按钮等 ...

  7. 【HMS Core 6.0全球上线】Network Kit全链路网络加速技术,应用无惧网络拥塞

    HMS Core 6.0已于7月15日全球上线,本次版本向广大开发者开放了众多全新能力与技术.其中HMS Core Network Kit开放了全链路网络加速技术,助力开发者为用户提供低时延的畅快网络 ...

  8. 在同一台计算机中运行多个MySQL服务

    目录 一.问题的来源 二.配置 1. 修改原来MySQL系统的my.ini文件 2. 修改注册表 3. 重新启动服务 4. 最终效果 一.问题的来源 这个学期里我需要修读<数据库系统>的课 ...

  9. 快速搭建SSM基本项目

    快速搭建SSM项目基本手脚架 Maven构建项目 一般我们使用Maven来管理我们的项目: 导入相关依赖配置pom.xml: <?xml version="1.0" enco ...

  10. Weblogic Coherence组件漏洞初探CVE-2020-2555

    Weblogic Coherence组件漏洞初探CVE-2020-2555 2020年1月,互联网上爆出了weblogic反序列化远程命令执行漏洞(CVE-2020-2555),Oracle Fusi ...