当前位置: 首页 > news >正文

07-Eventing及实践

1 Knative Eventing的相关组件

  • Knative Eventing具有四个最基本的组件:Sources、Brokers、Triggers 和 Sinks
    • 事件会从Source发送至Sink
    • Sink是能够接收传入的事件可寻址(Addressable)或可调用(Callable)资源
      • Knative Service、Channel和Broker都可用作Sink
  • Knative Eventing的关键术语
    • Event Source
      • Knative Eventing中的事件源主要就是指事件的生产者
      • 事件将被发往Sink或Subscriber
    • Channel和Subscription
      • 事件管道模型,负责在Channel及其各Subscription之间格式化和路由事件
    • Broker和Trigger
      • 事件网格(mesh)模型,Producer把事件发往Broker,再由Broker统一经Trigger发往各Consumer
      • 各Consumer利用Trigger向Broker订阅其感兴趣的事件
    • Event Registry
      • Knative Eventing使用EventType来帮助Consumer从Broker上发现其能够消费的事件类型
      • Event Registry即为存储着EventType的集合,这些EventType含有Consumer创建Trigger的所有必要信息

2 Event 处理示意图

  • Event Source:事件源,即生产者抽象,负责从真正的事件源导入事件至Eventing拓扑中
  • Event Type:事件类型,它们定义于Event Registry中
  • Flow:事件处理流,可简单地手工定义流,也可使用专用的API进行定义
  • Event Sinks:能接收Event的可寻址(Addressable)或可调用(Callable)资源,例如KService等

在这里插入图片描述

3 Knative的事件传递模式

  • Knative Eventing中的Sink的用例主要有Knative service、channel、Broker三种

  • Knative Eventing支持的事件传递模式

    • Sources to Sink

      • 单一Sink模式,事件接收过程中不存在排队和过滤等操作
      • Event Source的职责仅是传递消息,且无需等待Sink响应
      • fire and forget

      在这里插入图片描述

    • Channels and Subscriptions

      • Event Source将事件发往Channel
      • Channel可以有一到多个Subscription(即Sink)
      • Channel中的每个事件都被格式化Cloud Event并发送至各Subscription
      • 不支持消息过滤机制

      在这里插入图片描述

    • Brokers and Triggers

      • 功能类似于Channel和Subscription模式,但支持消息过滤机制
      • 事件过滤机制允许Subscription使用基于事件属性的条件表达式(Trigger)筛选感兴趣的事件
      • Trigger负责订阅Broker,并对Broker上的消息进行过滤
      • Trigger将消息传递给感兴趣的Subscription之前,还需要负责完成消息的格式化
      • 这是在生产中推荐使用的消息投递模式

      在这里插入图片描述

4 CloudEvents示例

  • 最为简单的Event发送示例

    • Source:curl命令,基于HTTP消息映射规范手动编制消息及事件内容
    • Sink: 基于能够接收、解析事件,并将其存入日志的event_display应用为例来模拟事件处理
      • event_display可运行为Kubernetes Service,或者Knative Service
  • 步骤

    • 将event_display运行为Kservice。

      kn service create event-display --image ikubernetes/event_display --port 8080 --scale-min 1
      

      在这里插入图片描述

    • 启动一个client的pod,发起请求测试

      kubectl run client --image=ikubernetes/admin-box:v1.2 --restart=Never --rm -it --command -- /bin/bash
      

      发起请求测试命令:

      curl -v "http://event-display.default.svc.cluster.local" \
      -X POST \
      -H "Ce-Id: say-hello" \
      -H "Ce-Specversion: 1.0" \
      -H "Ce-Type: com.icloud2native.sayhievent" \
      -H "Ce-Time: 2023-12-01T11:35:56.7181741Z" \
      -H "Ce-Source: sendoff" \
      -H "Content-Type: application/json" \
      -d '{"msg":"Hello littlyboy Knative!"}'
      

      在这里插入图片描述

    • 查看event_display中的log是否收到事件

      kubectl logs -f event-display-00001-deployment-5ddb97ff7-mfhhq
      

      在这里插入图片描述

5 Eventing的逻辑组件

  • Eventing API群组及相应的CRD

    • sources.knative.dev # 声明式配置Event Source的API,提供了四个开箱即用的Source;

      • ApiServerSource:监听Kubernetes API事件
      • ContainerSource:在特定的容器中发出针对Sink的事件
      • PingSource:以周期性任务(cron)的方式生具有固定负载的事件
      • SinkBinding:链接任何可寻址的Kubernetes资源,以接收来自可能产生事件的任何其他Kubernetes资源

      在这里插入图片描述

    • eventing.knative.dev # 声明式配置“事件网格模型”的API

      • Broker
      • EventType
      • Trigger
    • messaging.knative.dev # 声明式配置“事件管道模型”的API

      • Channel
      • Subscription
    • flows.knative.dev # 事件流模型,即事件是以并行还是串行的被多个函数处理

      • Parallel
      • Sequence

6 事件与Knative Eventing

在这里插入图片描述

  • Knative Eventing
    • 负责为事件的生产和消费提供基础设施,可将事件从生产者路由到目标消费者,从而让开发人员能够使用事件驱动架构
    • 各资源者是松散耦合关系,可分别独立开发和部署
    • 遵循CloudEvents规范

在这里插入图片描述

相关文章:

07-Eventing及实践

1 Knative Eventing的相关组件 Knative Eventing具有四个最基本的组件:Sources、Brokers、Triggers 和 Sinks 事件会从Source发送至SinkSink是能够接收传入的事件可寻址(Addressable)或可调用(Callable)资源 Knative S…...

Linux下Netty实现高性能UDP服务

前言 近期笔者基于Netty接收UDP报文进行业务数据统计的功能,因为Netty默认情况下处理UDP收包只能由一个线程负责,无法像TCP协议那种基于主从reactor模型实现多线程监听端口,所以笔者查阅网上资料查看是否有什么方式可以接收UDP收包的性能瓶颈…...

Ubuntu 22.04 Tesla V100s显卡驱动,CUDA,cuDNN,MiniCONDA3 环境的安装

今天来将由《蓝创精英团队》带来一个Ubuntu 显卡环境的安装,主要是想记录下来,方便以后快捷使用。 主要的基础环境 显卡驱动 (nvidia-smi)CUDA (nvidia-smi 可查看具体版本)cuDNN (cuda 深度学习加速库)Conda python环境管理(Miniconda3) Nvidia 驱动…...

FFmpeg转码流程和常见概念

视频格式:mkv,flv,mov,wmv,avi,mp4,m3u8,ts等等 FFmpeg的转码工具,它的处理流程是这样的: 从输入源获得原始的音视频数据,解封装得到压缩封装的音…...

【01】GeoScene生产海图或者电子航道图

1.1 什么是电子海图制图模块 GeoScene海事模块是一个用于管理和制作符合国际水文组织(IHO)S-100系列标准和S-57标准的海事数据的系统。提供了S-100和S-57工具,用于加载基于S-100的要素目录、创建基于S-57传输结构的数据、输入数据、符号化数…...

TWS蓝牙耳机的船运模式

TWS蓝牙耳机的船运模式 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, TWS蓝牙耳机的船运模式是指在将耳机从一个地方运送到另一个地方时,…...

Vue系列之指令 v-html

文章の目录 1、v-html指令2、基本用法写在最后 1、v-html指令 v-html 指令类似于 v-text 指令,它与 v-text 区别在于 v-text 输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出,类似于 JavaScrip…...

Mac如何安装stable diffusion

今天跟大家一起在Mac电脑上安装下stable diffusion,在midjourney等模型收费的情况下如何用自己的电脑算力用上免费的画图大模型呢?来吧一起实操起来 一、安装homebrew 官网地址:Homebrew — The Missing Package Manager for macOS (or Lin…...

Kubernetes (k8s) 快速认知

应用部署方式 传统部署时代 早期的时候,各个组织是在物理服务器上运行应用程序。缺点 资源分配问题: 无法限制在物理服务器中运行的应用程序资源使用 维护成本问题: 部署多个物理机,维护许多物理服务器的成本很高 虚拟化部署时…...

Electron V28主进程与渲染进程互相通信总结

本文示例采用ElectronVue3TS编写,请读者理顺思路,自行带入自己的项目。 注: 读本文前请先搞懂什么是主进程,什么是渲染进程。 在Electron中有着ipcMain和ipcRenderer、contextBridge模块,以及创建窗口对象上的webCont…...

MySQL主从复制详解

目录 1. 主从复制的工作原理 1.1. 主从复制的角色 1.2. 主从复制的流程 2. 配置MySQL主从复制 2.1. 确保主服务器开启二进制日志 2.2. 设置从服务器 2.3. 连接主从服务器 2.4. 启动复制 3. 主从复制的优化与注意事项 3.1. 优化复制性能 3.2. 注意复制延迟 3.3. 处理…...

verilog基础语法-计数器

概述: 计数器是FPGA开发中最常用的电路,列如通讯中记录时钟个数,跑马灯中时间记录,存储器中地址的控制等等。本节给出向上计数器,上下计数器以及双向计数器案例。 内容 1. 向上计数器 2.向下计数器 3.向上向下计数…...

有SCL,SDA,TRIG,I2C的元器件是什么?在哪找?proteus

寻找方法:...

再谈低代码开发——值得所有程序设计和开发者重视的建议!

前几天看到关于“低代码开发”的话题,简单的谈了些自己的看法,也看了一些朋友们各抒己见的好文章,今天想结合我们实际使用的开发平台和大家再做些探讨。 在平台的简介中首先提出了这个大家一定很关心的问题: 一、“为什么使用低代…...

Docker部署MinIO对象存储服务器结合内网穿透实现远程访问

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…...

USB2.0 Spec

USB System Description A USB system is described by three definitional areas: • USB interconnect • USB devices • USB host USB interconnect The USB interconnect is the manner in which USB devices are connected to and communicate with the host. USB Ho…...

prbs测试

PRBS是 Pseudo Random Binary Sequence 的简称,是一种伪随机序列,用于产生随机数据。 PRBS检测主要应用在设备开局或维护期间,在没有合适误码仪的情况下,使能了PRBS检测功能的设备自行发送PRBS码流,PRBS码流通过被测试网络,经远端设备环回(远端设备需要配置环回),经过PR…...

计算机网络:数据链路层(VLAN)

今天又学到一个知识,加油! 目录 一、传统局域网的局限(促进VLAN的诞生) 二、VLAN简介 三、VLAN的实现 总结 一、传统局域网的局限(促进VLAN的诞生) 缺乏流量隔离:即使把组流量局域化道一个单一交换机中…...

C# WPF上位机开发(动态添加控件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 写图形界面软件的时候,我们经常会遇到一种情况。那就是图形界面上面,显示的控件可能是不定的。有可能多,也有可…...

MySQL进阶|MySQL中的事务(一)

文章目录 数据库事务MySQL中的存储引擎InnoDB存储引擎架构什么是事务事务的状态总结 数据库事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。比方我想要删除一个用户(销户)以及这个用户的个人信息、订单信息以及其他信息,这…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...