网站做跳转,公司做网站的申请,投资公司网站建设意义,注册农村电商需要多少钱1 Knative Eventing的相关组件 Knative Eventing具有四个最基本的组件#xff1a;Sources、Brokers、Triggers 和 Sinks 事件会从Source发送至SinkSink是能够接收传入的事件可寻址#xff08;Addressable#xff09;或可调用#xff08;Callable#xff09;资源 Knative S…1 Knative Eventing的相关组件 Knative Eventing具有四个最基本的组件Sources、Brokers、Triggers 和 Sinks 事件会从Source发送至SinkSink是能够接收传入的事件可寻址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将事件发往ChannelChannel可以有一到多个Subscription即SinkChannel中的每个事件都被格式化Cloud Event并发送至各Subscription不支持消息过滤机制 Brokers and Triggers 功能类似于Channel和Subscription模式但支持消息过滤机制事件过滤机制允许Subscription使用基于事件属性的条件表达式Trigger筛选感兴趣的事件Trigger负责订阅Broker并对Broker上的消息进行过滤Trigger将消息传递给感兴趣的Subscription之前还需要负责完成消息的格式化这是在生产中推荐使用的消息投递模式
4 CloudEvents示例 最为简单的Event发送示例 Sourcecurl命令基于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 --imageikubernetes/admin-box:v1.2 --restartNever --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-mfhhq5 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 BrokerEventTypeTrigger messaging.knative.dev # 声明式配置“事件管道模型”的API ChannelSubscription flows.knative.dev # 事件流模型即事件是以并行还是串行的被多个函数处理 ParallelSequence
6 事件与Knative Eventing Knative Eventing 负责为事件的生产和消费提供基础设施可将事件从生产者路由到目标消费者从而让开发人员能够使用事件驱动架构各资源者是松散耦合关系可分别独立开发和部署遵循CloudEvents规范