【云原生系列】第四讲:Knative 之 Eventing

news2024/11/28 10:52:58

目录

序言

1.基础介绍 

2.组成要素

2.1 事件源(Event Source)

2.2 事件处理(Flow)

2.3 事件消费者(Event Consumer)

3.架构模式

3.1 Source to Service

​编辑 3.2Channels & Subscriptions

3.3 Brokers & Triggers

 3.4 其他

4.总结

5.投票


 

序言

三言两语,不如细心探索

今天整理了一下Eventing相关知识点,希望此文,能帮助读者对Knative Eventing 有一个初步的了解

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.基础介绍 

Kubernetes 用户在实现开发和部署阶段服务之间松耦合的同时,服务间常要通过不同的事件机制来进行事件传递,为了解决大部分的云原生消息通信需求,Knative 提供了 Eventing 组件。

特点:

  1. 服务开发部署松耦合
  2. 支持各种事件传递
  3. 事件的生产者和事件的消费者是相互独立的
  4. 确保跨服务的互操作性

  5. 支持第三方的服务对接 Eventing 系统

2.组成要素

Eventing 主要由

  1. 事件源(Event Source)
  2. 事件处理(Flow)
  3. 事件消费者(Event Consumer)

三部分构成。

2.1 事件源(Event Source)

Source 是事件的来源,它是定义事件在何处生成以及如何将事件传递给关注对象的方式 

  • 事件生成
  • 事件传递

目前支持以下8种事件源: 

  1. ApiserverSource:每次创建或更新 Kubernetes 资源时,ApiserverSource 都会触发一个新事件

  2. GitHubSourceGitHub 操作时,GitHubSource 会触发一个新事件

  3. GcpPubSubSourceGCP 云平台 Pub/Sub 服务会触发一个新事件

  4. AwsSqsSourceAws 云平台 SQS 服务会触发一个新事件

  5. ContainerSource: ContainerSource 将实例化一个容器,通过该容器产生事件

  6. CronJobSource: 通过 CronJob 产生事件

  7. KafkaSource: 接收 Kafka 事件并触发一个新事件

  8. CamelSource: 接收 Camel 相关组件事件并触发一个新事件

2.2 事件处理(Flow)

前 Knative 支持如下事件接收处理:

  • 接收:直接事件接收

    通过事件源直接转发到单一事件消费者。支持直接调用 Knative Service 或者 Kubernetes Service 进行消费处理。这样的场景下,如果调用的服务不可用,事件源负责重试机制处理

  • 转发:通过事件通道(Channel)以及事件订阅(Subscriptions)转发事件处理

    这样的情况下,可以通过 Channel 保证事件不丢失并进行缓冲处理,通过 Subscriptions 订阅事件以满足多个消费端处理

  • 过滤:通过 brokers 和 triggers 支持事件消费及过滤机制

2.3 事件消费者(Event Consumer)

为了满足将事件发送到不同类型的服务进行消费, Knative Eventing 通过多个 k8s 资源定义了两个通用的接口:

  • Addressable 接口:提供可用于事件接收和发送的 HTTP 请求地址,并通过status.address.hostname字段定义。作为一种特殊情况,Kubernetes Service 对象也可以实现 Addressable 接口
  • Callable 接口:接收通过 HTTP 传递的事件并转换事件。可以按照处理来自外部事件源事件的相同方式,对这些返回的事件做进一步处理

目前 Knative 支持通过 Knative Service 或者 Kubernetes Service 进行消费事件。

另外针对事件消费者,如何事先知道哪些事件可以被消费? 

将事件源发送到通道,并准备好处理它们的服务,但目前没有办法获取从通道发送到服务的事件。为此,Knative设计了订阅功能。订阅是通道和服务之间的纽带,指示Knative如何在整个系统中管理事件,如下图

总结:

Knative中的服务不关心事件和请求是如何获取的。

  • 可以获取来自入口网关的HTTP请求
  • 可以获取从通道发送来的事件

无论通过何种方式获取,服务仅接收HTTP请求。

这是Knative中一个重要的解耦方式

它确保将代码编写到架构中,而不是在底层创建订阅、通道向服务发送事件。 

3.架构模式

架构模式有三种:

  1. Source to Service
  2. Channels & Subscriptions
  3. Brokers & Triggers

3.1 Source to Service

从源直接传递到单个服务(可寻址端点,包括Knative服务或核心Kubernetes服务)。

在这种情况下,如果目标服务不可用,则源负责重试或排队事件 

 3.2Channels & Subscriptions

通过渠道和订阅,Knative事件系统定义了一个渠道,该渠道可以连接到各种后端(例如内存中,Kafka和GCP PubSub)来sourcing事件。

每个通道可以具有一个或多个以Sink Services形式的订阅用户

如图,该订阅用户可以接收事件消息并根据需要对其进行处理。通道中的每个消息都将格式化为CloudEvent,并在链中进一步发送给其他订阅用户以进行进一步处理。

通道和订阅使用模式无法过滤消息

3.3 Brokers & Triggers

Broker提供了一系列事件,可以通过属性选择事件

它接收事件并将其转发给由一个或多个匹配Trigger定义的订阅用户。

Trigger描述了事件属性的过滤器,应将其传递给可寻址对象。

可以根据需要创建任意数量的Trigger。

 

 3.4 其他

更高级别的事件构造:

在某些情况下,可能希望一起使用一组协作功能,对于这些用例,Knative Eventing提供了两个附加资源:

  • Sequence 提供一种定义功能的有序列表的方法。
  • Parallel 提供了一种定义事件分支列表的方法。

后面会写一篇文章,专门来讲有序列表和分支列表

4.总结

Knative 使用 Build 提供云原生“从源代码到容器”的镜像构建能力,通过 Serving 部署容器并提供通用的服务模型,同时以 Eventing 提供事件全局订阅、传递和管理能力,实现事件驱动。这就是 Knative 呈现给我们的标准 Serverless 编排框架

  1. Build 镜像构建
  2. Serving 容器部署
  3. Eventing 事件全局订阅、传递、管理

5.投票

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思科配置SVI实现VLAN间路由

思科SVI配置 说明 SVI技术与单臂路由和传统VLAN间路由一样,都是解决多个VLAN间通信问题。 SVI技术利用了多层交换机(本文以三层交换机为例)。 示例拓扑 其中S1为三层交换机 S2的Fa0/2接口于VLAN 10下 S3的Fa0/2接口于VLAN 20下 PC 1地…

NH2-picolyl-azide|2168629-06-7|Amine azide Picolyl叠氮生物标记基团

【产品描述】 西安凯新生物科技有限公司​picolyl-azide-NH2含有叠氮基,叠氮基可以通过点击化学与炔烃、BCN、DBCO反应,生成稳定的三唑键。末端羧酸在活化剂(如EDC或HATU)存在下可与伯胺基反应,形成稳定的酰胺键。叠氮…

python基础之面向对象基础语法

文章目录一、面向对象基础语法1.dir内置函数:2.定义一个简单的类(只包含方法):二、实例演练3.面对对象练习:小明爱跑步需求:4.摆放家具练习:5.士兵突击,需求:6.私有属性和…

CDN技术介绍

引言 随着Internet技术和多媒体技术的不断发展,图像、音频、视频服务所占的比重越来越大,加之网民数量激增,网络访问距离过长,导致网络负载迅速增加,从而使用户的访问质量受到严重影响。传统的缓存技术对交互性强和比…

【ML特征工程】第 9 章 :回到特征:构建学术论文推荐器

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

算法leetcode|17. 电话号码的字母组合(rust重拳出击)

文章目录17. 电话号码的字母组合:样例 1:样例 2:样例 3:提示:原题传送门:分析题解rustgocjavatypescriptpython17. 电话号码的字母组合: 给定一个仅包含数字 2-9 的字符串,返回所有…

向NS-3添加新模块_ns3.35添加新模块_ns3.35以及更早版本添加新模块

2022年11月,ns3官网发布了3.37版本,与3.36一样,运行、编译、配置的时候使用的都是ns3.37/ns3 这个脚本,但3.35以及3.35以前的版本使用的都是ns3.35/waf脚本,相应的3.35以及以前的版本与3.36以后的版本,新生…

Java迭代器 for循环的区别

1、Iterator接口: Iterator接口包含三个方法:hasNext,next,remove Iterator常用于对集合进行 一边遍历一边修改 的操作 注意:当Iterator迭代访问Collection集合中元素时,Collection的元素不能改变&#x…

数据库实践 Hw02

Assignment 02: get familiar with operations in MySQL 创建数据库 创建名字为bank的银行数据库 create database if not exists bank; show create database bank; use bank; show tables;可以获得如下内容 后续展示bank数据库中的tables tables为空 bank数据中创建表…

【Compose】Desktop Application 初尝试

前言 作为一个多年的android开发者,自从Jetpack发布以来,其中的Compose组件就深深的吸引了我,在去年就用新版android studio创建模板尝鲜了一把,不过并没有投入太多时间和精力,其实还有一个消息我没太关注&#xff0c…

算法提升:图的最小生成树算法-克鲁斯卡尔(Kruskal)

目录 概念 思路 代码 概念 克鲁斯卡尔算法查找最小生成树的方法是:将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始选择,只要此边不和已选择的边一起构成环路,就可以选择它组成最小生成树。对于 N 个顶点的连通网…

axios数据交互

目录 一、axios 概念 二、官方文档 三、下载命令 四、特点 五、基本语法 六、基本案例 一、axios 概念 axios 是基于promise创建的http库,可以用于客户端(浏览器)和 node.js ​ 官方概念: Axios 是一个基于 promise 的 HTT…

面向OLAP的列式存储DBMS-13-[ClickHouse]的MergeTree表引擎原理解析

ClickHouse 中最重要的表引擎:MergeTree 的深度原理解析 首先我们了解了 MergeTree 的基础属性和物理存储结构;接着,依次介绍了数据分区、一级索引、二级索引、数据存储和数据标记的重要特性;最后总结了 MergeTree 上述特性一起协…

C++ Reference: Standard C++ Library reference: C Library: cwctype: iswdigit

C官网参考链接&#xff1a;https://cplusplus.com/reference/cwctype/iswdigit/ 函数 <cwctype> iswdigit int iswdigit (wint_t c); 检查宽字符是否为十进制数字 检查c是否为十进制数字字符。 十进制数字是0 1 2 3 4 5 6 7 8 9中的任意一个。 此函数是isdigit&#xff…

【Web前端基础进阶学习】HTML详解(下篇)

上篇学习到了HTML列表&#xff0c;现在从区块开始学习&#xff01; 一起学习下篇吧! 一.HTML区块 1.HTML区块元素2.HTML内联元素3.HTML的 div 元素4.HTML的 span 元素 二.HTML布局 1.使用div元素添加网页布局2.使用table元素添加网页布局 三.HTML表单和输入 1.文本域2.密码字…

压缩包密码可以删除吗?

压缩包文件设置了密码&#xff0c;但是长时间没有使用&#xff0c;忘记了密码、不能解压压缩包了&#xff0c;还能够删除压缩包密码嘛&#xff1f; 压缩包设置的加密&#xff0c;不需要再加密了&#xff0c;可以删除压缩包密码&#xff0c;以后不需要输入密码再解压密码了&…

11_html

知识点1【HTML概述】 知识点2【文字标签】 知识点3【标题】 知识点4【超链接】 知识点5【table表格标签】&#xff08;重要&#xff09; 知识点6【form表单】&#xff08;重要&#xff09; 知识点7【JavaScript的概述】让网页动起来 1、什么是 Javascript? 2、网页使用j…

【LEACH协议】无线传感器网络LEACH与DEEC协议【含Matlab源码 2187期】

⛄一、 简介 1 引言 WSN 由能感知外部环境的传感器节点以自组网的形式构成&#xff0c;是一种分布式无线传感器网络。随着科技的进步和现代生活的需求&#xff0c;由于 WSN 的远程控制、信息即时传播以及低功耗等众多优点&#xff0c;WSN 在军事医疗、生活娱乐和工业生产等各个…

锦囊秘籍!用Python操作MySQL的使用教程集锦!

一. python操作数据库介绍 大家好&#xff0c;我是毕加锁&#xff08;锁&#xff01;&#xff09;。 Python 标准数据库接口为 Python DB-API&#xff0c;Python DB-API为开发人员提供了数据库应用编程接口。Python 数据库接口支持非常多的数据库&#xff0c;你可以选择适合你…

生产环境 SSH 安全有效小技巧

生产环境使用 SSH 工具的有用技巧 文章目录生产环境使用 SSH 工具的有用技巧生产环境上线时使用瘦客户机多开几个 SSH 窗口短暂离开一个会话时使用反斜杠&#xff08;\&#xff09;开启 SSH 工具的 Log Session 功能总结我们知道&#xff0c;我们学习 IT 技术时自己搭建的环境&…