Knative: AI 事件驱动场景 Serverless 实践

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: Knative 作为主流的开源 Serverless Framework,除了提供应用部署、自动弹性之外,还提供事件驱动能力。在面对 AI 场景时,用户对事件对精细化处理以及节省资源成本都有较高对要求,这里介绍通过Knative实现事件驱动、事件分发与资源自动弹性,很好的满足用户场景的诉求

导读

Knative 作为主流的开源 Serverless Framework,除了提供应用部署、自动弹性之外,还提供事件驱动能力。在面对 AI 场景时,用户对事件对精细化处理以及节省资源成本都有较高对要求,这里介绍通过Knative实现事件驱动、事件分发与资源自动弹性,很好的满足用户场景的诉求。本文会从以下 3 个方面展开介绍:

  • 事件驱动框架:Knative Eventing
  • 事件驱动引擎:事件源介绍
  • AI 事件驱动场景实践


Knative 模型

我们先来整体看一下 Knative 中两大核心模块,Serving 中是通过 Knative Service 提供应用模型,支持多版本管理、自动弹性以及流量灰度发布。Eventing 提供了事件驱动框架,包括事件源、Broker/Trigger模型。接下来我们主要介绍 Knative Eventing。

image.png

Service

manages

Configuration

Serving

Route

10%

Revisionv3

records

90%

history

of

Revisionv2

Revisionv1

Namespace

Trigger

Source

ingress

subscribe

Service

(Callable)

Events

filter

Eventing

ysiiqnd

Broker

Trigger

Source

subscribe

ingress

Service

filter

(Callable)

Events

事件驱动框架:Eventing

Knative 的 Eventing 提供了完整的事件模型,可以很容易地接入各个外部系统的事件。事件接入以后通过 CloudEvent 标准在内部流转,结合 Broker/Trigger 机制给事件处理提供了非常理想的方式。

image.png

  • Knative Eventing 提供的服务是松散耦合,可进行独立开发和部署。服务可跨平台使用(如 Kubernetes, VMs, SaaS 或者 FaaS
  • 事件的生产者和事件的消费者是相互独立的。
  • 社区提供多种开箱即用的事件源
  • 支持第三方消息系统,提供灵活的扩展性。


关键特性-事件规则

在 Eventing 中通过Broker/Trigger进行事件流转和分发,分发离不开规则的设置,Trigger 中提供了丰富的规则设置能力,如图所示:

image.png

  • Triggerfilter的作用是对Event进行内容过滤。
  • 支持对EventAttribute以及Data的内容进行过滤。
  • 支持Common Expression Language (CEL) 表达式过滤
  • 支持通过SourceAndType进行过滤

事件驱动引擎: 事件源

事件源是事件驱动的引擎,Knative社区提供了丰富的事件源,如Kafka、GitHub等。此外还接入消息云产品事件源,如MNS、RocketMQ等。

image.png

事件源

DOE

6

Kafka

MNS

OSS

tableStoreRocketMQ

gitlabkubernetes

acr

CloudEvent

Eventing

Broker

Trigger

Trigger

Trigger

Serving

基于镜像发布服务

从源码构建镜像

定时任务

AI音视频处理

这套完备的事件系统可以比较容易的实现事件驱动场景如下:

  • 自动 CICD
  • AI 音视频场景
  • 比如和各种云产品的事件对接,从而实现云产品状态更新自动触发一个服务等


RocketMQ事件源

消息队列RocketMQ版是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列RocketMQ版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

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

image.png

KNativedataplane

Broker/Tngger

RocketMQ

RocketMQCluster

Services

Source

RocketMQ消息CloudEvent事件


  • 对接RocketMQ消息系统
  • 消息分发到 Knative Service服务

Kafka事件源

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

Knative 社区提供Kafka事件源,支持开源社区Kafka以及阿里云Kafka产品:

  • 对接Kafka消息系统
  • 消息分发到 Knative Service服务

image.png

8

消息

Katka

Knative

K

KatkaSource

POD

POD

POD

POD

业务服务

AI 事件驱动场景实践

接下来我们以Kafka事件源为例,介绍一个典型的消息驱动场景。

客户是一个线上直播系统,每天都有海量的直播访问,访问量根据直播热度弹性波动,存在不定时激增;同时,直播系统支持用户在线互动,互动行为会通过消息服务(Kafka)实时推送到服务端进行数据和AI处理,处理结果会即时推送回视频流与视频直播产生联动。消息数据的处理主要有以下技术挑战:

1、业务弹性波动,消息并发

2、互动实时响应,低延迟

image.png

ACK+Knative

事件处理

事件网关

事件源

POD

POD

一日

自动弹性

POD

POD

消息队列Kafka

Kafka事件源

事件网关

业务服务

为了满足客户系统对于消息处理的弹性波动、高并发、低时延的要求,客户选择使用阿里云的Knative服务进行数据的弹性处理。阿里云Knative完全契合用户的需求,在兼容k8s标准的基础上,提供了基于事件/消息的容器弹性调度。应用实例数随着业务波峰波谷实时扩容和缩容,真正做到了按需使用,实时弹性的云计算能力。整个过程完全自动化,极大的减少了业务开发人员在基础设施上的心智负担。接下来我们通过一个示例来模拟用户的场景

前提条件

  • 创建ACK/ASK集群,并选择【Knative】进行安装
  • 对于已有ASK集群,部署Knative参考
  • 部署事件驱动Eventing

操作步骤

  1. 部署事件网关

在Knative 组件管理控制台,选择“Kourier”以及“EventGateway” addon组件进行部署

image.png

knastiva-test-pre

脏务兰理

丝件董理

集新信点

朱群:kngtive-test-pre/Knative组件甘理

用新

健有敬

命名空间气4信集

背吃文档

工作负五

访间岗夫:47103.223.162

无状态

杭心姐性

白扶态

超作

横心组件

合名空用

打我

详情

已邮

Seewing

knatlue--serving

定时仁男

正鲁

泰部哥

容理划

自龙义空话

赛作

*态

青注

创济药呵

适本

Add-on调件

眼务与路巾

未秘

捉供GitHub件退,示:Gl.Hub丁件处理

GITHub

配量专理

饼MNSO事示:于Mn5055再件案人胎限片识

共于Kafka半性安案

竖促快K:ka412.0.0及以上西木件旺:

5

未开死

HOLm

提东ROCLTKO掌件姿

未部

乐供Kourler网关

搜供本件精准谢度功萌

未部

EwontCatoway

安全督理

  1. 部署事件源。选择 Kafka 事件源进行部署。

image.png

knative-test-pre

年件青理

务障理

红群你

朱群:knative-test-pre/Knative?件理

中名空间55惠

行伟助文档

工作负轧

请间网关:47.103.223.162

植车目件

有北态

默态

按心姐件

腐木

命名二月

学药

洋情

y0.130

定对任岛

红话

未享哥

印量

V0.140

曾安妞

add-on组件

状态

密注

争名空间

add-on扭件

创注时间

出乌与晗由

天虹

配置性理

爱等ns0ss+件示件:于Mn5O05件实人

大部哥

¥1.00

应用

提供K&IK2.0O及以上播瓜)享知品特于katk事件实

元用置

本城

现洁克挫送

吴5

提供RucketMg4.

RockeTQ

T

优Kouicr碍关

大部

透娜气理

加话

半保鸭件棉准润石功方

共部膏

yo.1.0

EwentCa:awaw

安全畔

  1. 部署服务

这里我们部署一个Knative Service 服务 event-display,用于接收事件。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: event-display
  annotations:
    networking.knative.dev/flow-controller.class: strict
    networking.knative.dev/ingress.class: kourier.ingress.networking.knative.dev
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/class: xpa.autoscaling.knative.dev
        autoscaling.knative.dev/maxScale: "100"
        autoscaling.knative.dev/minScale: "1"
        autoscaling.knative.dev/pod-buffer-size: "3"
        autoscaling.knative.dev/gc-time: "30"
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:0128

部署完成之后,我们可以查看结果:

$ kubectl get po |grep event
event-display-tslr5-deployment-5c9c4c469b-bnjlz                   2/2     Running   0          3h53m
event-display-tslr5-deployment-5c9c4c469b-bwxtm                   2/2     Running   0          3h53m
event-display-tslr5-deployment-5c9c4c469b-fjjr7                   2/2     Running   0          5d13h
  1. 创建事件源CR

创建KafkaSource资源,设置Kafka 对应的topic、consumerGroup、 kourier 网关地址以及用于消费事件的服务event-display。

apiVersion: sources.knative.dev/v1alpha1
kind: KafkaSource
metadata:
  name: kafka-source
  annotations:
    k8s.aliyun.com/domain: event-display.default.example.com
    k8s.aliyun.com/retry-count: "5"
    k8s.aliyun.com/retry-interval: "2"
    k8s.aliyun.com/req-timeout: "60"
spec:
  consumerGroup: demo-consumer
  # Broker URL. Replace this with the URLs for your kafka cluster,
  # which is in the format of my-cluster-kafka-bootstrap.my-kafka-namespace:9092.
  bootstrapServers: 192.168.7.113:9092,192.168.7.110:9092,192.168.7.108:9092
  topics: demo
  sink:
    uri: http://101.200.177.84

创建完成之后,可以查看对应的kafka事件源pod:

$ kubectl get po|grep kafka
kafkasource-kafka-source-a8b95415-703f-4d50-8339-6203f0f6154pzq   1/1     Running   0          5d13h
kafkasource-kafka-source-a8b95415-703f-4d50-8339-6203f0f61x9xc9   1/1     Running   0          5d13h

执行结果

我们通过客户端往kafka消息队列中发送消息进行结果验证,执行如下:

$ kubectl get po
NAME                                                              READY   STATUS    RESTARTS   AGE
event-display-tslr5-deployment-5c9c4c469b-58hv6                   2/2     Running   0          23s
event-display-tslr5-deployment-5c9c4c469b-bnjlz                   2/2     Running   0          4h6m
event-display-tslr5-deployment-5c9c4c469b-bwxtm                   2/2     Running   0          4h6m
event-display-tslr5-deployment-5c9c4c469b-d9vxc                   2/2     Running   0          23s
event-display-tslr5-deployment-5c9c4c469b-fjjr7                   2/2     Running   0          5d13h
event-display-tslr5-deployment-5c9c4c469b-kl827                   2/2     Running   0          24s
event-display-tslr5-deployment-5c9c4c469b-l5642                   2/2     Running   0          24s
event-display-tslr5-deployment-5c9c4c469b-q82pq                   2/2     Running   0          23s
event-display-tslr5-deployment-5c9c4c469b-qh7z5                   2/2     Running   0          24s
event-display-tslr5-deployment-5c9c4c469b-qmcnn                   2/2     Running   0          24s
event-display-tslr5-deployment-5c9c4c469b-t7sv2                   2/2     Running   0          24s
event-display-tslr5-deployment-5c9c4c469b-tpnwk                   2/2     Running   0          24s


总结

本文介绍了 Knative 驱动框架:Eventing,并支持 Kafka 以及 RocketMQ 事件源接入,对于 AI 事件驱动场景下我们如何将消息服务和 Knative 进行结合进行了介绍。欢迎有兴趣的同学进行交流。

image.png


相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
26天前
|
人工智能 运维 大数据
体验记录——触手可及,函数计算玩转 AI 大模型
阿里云推出的“触手可及,函数计算玩转 AI 大模型”解决方案,通过按量付费、卓越弹性和快速交付能力,为企业提供了便捷的AI大模型部署途径。评测报告详细分析了该方案的实践原理、部署过程及优势,展示了其在高并发场景下的高效性和成本优势,并提出了改进建议。
32 0
|
26天前
|
人工智能 Serverless
AI 大模型助力客户对话分析 ——实践操作
参与《AI大模型助力客户对话分析》项目,基于阿里云社区操作路书,从架构设计到部署测试,逐步学习并应用大模型进行AI质检。过程中虽有控制台跳转等小挑战,但整体体验流畅,展示了AI技术的便捷与魅力,以及阿里云平台的先进性和社区支持。最终实现的AI质检功能,能够有效提升企业客户服务质量与效率。
48 0
|
8天前
|
人工智能 弹性计算 Serverless
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
本文介绍了零售业中“人—货—场”三要素的变化,指出传统营销方式已难以吸引消费者。现代消费者更注重个性化体验,因此需要提供超出预期的内容。文章还介绍了阿里云基于函数计算的AI大模型,特别是Stable Diffusion WebUI,帮助非专业人士轻松制作高质量的促销海报。通过详细的部署步骤和实践经验,展示了该方案在实际生产环境中的应用价值。
39 6
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
|
21天前
|
人工智能 自然语言处理 监控
函数计算玩转 AI 大模型
本文总结了对一个基于函数计算和AI大模型的解决方案的理解和实践体验。整体而言,方案描述详细、逻辑清晰,易于理解。但在技术细节和部署引导方面还有提升空间,如增加示例代码和常见错误解决方案。函数计算的优势在部署过程中得到了有效体现,特别是在弹性扩展和按需计费方面。然而,针对高并发场景的优化建议仍需进一步补充。总体评价认为,该解决方案框架良好,但需在文档和细节方面继续优化。
|
21天前
|
存储 人工智能 弹性计算
基于《文档智能 & RAG让AI大模型更懂业务》解决方案实践体验后的想法
通过实践《文档智能 & RAG让AI大模型更懂业务》实验,掌握了构建强大LLM知识库的方法,处理企业级文档问答需求。部署文档和引导充分,但需增加资源选型指导。文档智能与RAG结合提升了文档利用效率,但在答案质量和内容精确度上有提升空间。解决方案适用于法律文档查阅、技术支持等场景,但需加强数据安全和隐私保护。建议增加基于容量需求的资源配置指导。
82 4
|
23天前
|
人工智能 弹性计算 监控
触手可及,函数计算玩转 AI 大模型解决方案
阿里云推出的“触手可及,函数计算玩转 AI 大模型”解决方案,利用无服务器架构,实现AI大模型的高效部署和弹性伸缩。本文从实践原理、部署体验、优势展现及应用场景等方面全面评估该方案,指出其在快速部署、成本优化和运维简化方面的显著优势,同时也提出在性能监控、资源管理和安全性等方面的改进建议。
55 5
|
19天前
|
人工智能 JavaScript 前端开发
利用 AI 进行代码生成:GitHub Copilot 的实践与反思
【10月更文挑战第23天】本文探讨了GitHub Copilot,一个由微软和OpenAI合作推出的AI代码生成工具,其核心功能包括智能代码补全、多语言支持、上下文感知和持续学习。文章介绍了Copilot在加速开发流程、学习新语言、提高代码质量和减少重复工作等方面的应用,并反思了AI在代码生成中的代码所有权、安全性和技能发展等问题。最后,文章提供了实施Copilot的最佳实践,强调了在使用AI工具时保持对代码的控制和理解的重要性。
|
23天前
|
人工智能
精通歌词结构技巧:写歌词的方法与实践,妙笔生词AI智能写歌词软件
歌词创作是音乐的灵魂,掌握其结构技巧至关重要。开头需迅速吸引听众,主体部分需结构清晰、情感丰富,结尾则要余韵悠长。无论是叙事还是抒情,妙笔生词智能写歌词软件都能助你一臂之力,提供AI智能创作、优化及解析等多功能支持,助你轻松驾驭歌词创作。
|
23天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
28天前
|
人工智能 弹性计算 自然语言处理
触手可及,函数计算玩转 AI 大模型
在AI技术迅速发展的背景下,大模型正推动各行业的智能化转型。企业为抓住机遇,纷纷部署AI大模型。阿里云函数计算凭借按量付费、高弹性和快速交付的特点,成为企业部署AI大模型的理想选择。本文介绍阿里云函数计算的技术解决方案,分析其优势,并通过具体应用场景评测其在AI大模型部署中的表现。

热门文章

最新文章

相关产品

  • 函数计算