作者 | 李鹏(元毅)
来源 | 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. 激发企业大“智慧” | 深度赋能AI全场景 揭秘你不知道的移动云

    2020年是人工智能技术发展的关键年.疫情之下,世界见证了人工智能在抗击疫情中发挥的积极作用:今年4月,国家发改委正式将人工智能确定为新基建的重要领域之一.在历史机遇下,AI已实现"质变和量 ...

  3. 在线应用的 Serverless 实践

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

  4. AI学习与进阶实践-基于行业价值的AI学习与进阶路径

    AI学习与进阶实践 如何转型搞AI? 无行业不智能-基于行业价值的AI学习与进阶路径 1 行业与需求 2 行业与技术 3 AI入门指引 机器学习与前沿AI开源项目 1 机器学习建模与自动机器学习 2 ...

  5. 人工智能之华为云ModelArts的深度使用体验与AI Gallery应用开发实践

    一.ModelArts 简介 ① 什么是 ModelArts? ModelArts 是面向 AI 开发者的一站式开发平台,提供海量数据预处理及半自动化标注.大规模分布式训练.自动化模型生成及端-边-云 ...

  6. TiDB 在金融关键业务场景的实践

    TiDB 作为一款高效稳定的开源分布式数据库,在国内外的银行.证券.保险.在线支付和金融科技行业得到了普遍应用,并在约 20 多种不同的金融业务场景中支撑着用户的关键计算.本篇文章将为大家介绍分布式关 ...

  7. 技术沙龙 | 深度赋能AI全场景,揭秘你不知道的移动云

    9月25日,移动云TeaTalk主题线下技术专场沙龙第二站,在成都圆满结束.5G 时代,AI与云计算的融合成为大势所趋."深度赋能AI全场景,揭秘你不知道的移动云"技术沙龙,围绕用 ...

  8. 以微信为例,聊聊在内容推荐上AI的一些应用实践

    本文由作者 吾某 发布于社区 内容推荐一直是流量分发中十分常见的应用方向,如头条的资讯.抖音的短视频.网易云音乐等等. 而微信也从去年开始逐渐推出更多内容产品服务,包括视频号.直播.看一看等等.对于微 ...

  9. 大数据与AI的16个实践分享

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale活动 主办方:DataFun,指导单位:北京智源研究院 文章作者:Hoh Xi ...

最新文章

  1. R语言可视化包ggplot2绘制平滑曲线、回归线实战:geom_smooth() 函数
  2. AWS EBS是 Elastic Block Store 的简写
  3. python将大于输出列表_python找出列表中大于某个阈值的数据段示例
  4. 使用安全Cookies-笔记
  5. 小波相干wtc matlab,实现时间序列的小波相干性分析,并画出图谱
  6. java8.0 platform图_Java Platform SE binary语言-Java编程32位/64位版(jdk-jeb)下载V8.0.2510.8官方安装版-西西软件下载...
  7. linux 运行选择哪个cpu核,判断Linux进程在哪个CPU核运行的方法
  8. ResNet到底深不深?
  9. 【C语言】1161: 字符串长度(指针专题)(空格和\0)
  10. PHP中select框不同用户登录,首页登录后怎么在首页显示用户名以及隐藏登录框?...
  11. phpspider 的简单使用
  12. 关于微信8.0.0以下版本登录版本验证的解决办法
  13. instant-ngp总结
  14. 比树莓派好的linux板子,华硕Tinker Board主打“比树莓派再好一点”的开发板
  15. Mac版本的PS2017、2018、2019、2020 合集
  16. python|爬虫|爬取豆瓣自己账号下的观影记录并可视化
  17. C语言指针详解(补充中)
  18. 爬取起点中文网站原创风云榜小说排行
  19. 用Python底层编写进行计量经济分析(一):多元线性回归(参数估计、T检验、拟合优度、F检验)
  20. leetcode253

热门文章

  1. Web 文件管理器elFinder 的漏洞链分析
  2. 学了网络安全以后能做哪些岗位呢?来来来,带你们了解
  3. 看完就能知道渗透测试的技术结构
  4. 【python】简单记录
  5. 8、非空约束(NOT NULL)
  6. 【PAT乙级】1035 插入与归并 (25 分)
  7. Zookeeper的目录结构
  8. MySQL事务的特性
  9. python中str和int区别_Python中的string方法和str方法有什么区别?
  10. 面试:你说一下 MyBatis 事务吧!