1、开源云原生计算时代论坛专场 毕小红 2021年7月10日本期议题:Knative Eventing系统应用实践自我介绍毕小红:中移(苏州)软件技术有限公司软件开发工程师目前主要负责移动云函数计算的研发,容器服务监控研发。2341Knative简要介绍Knative Eventing实现原理Knative Eventing事件传递机制Eventing在移动云函数计算的应用实践目录Knative简介The Knative project provides a set of Kubernetes components that introduce event-driven and serverles
2、s capabilities for Kubernetes clusters.Knative Eventing简介如何实现事件生产和消费者相互独立?CloudEvents!标准数据格式CloudEventsCloudEvents:是一种以通用方式描述事件数据的规范,该规范旨在简化跨服务、跨平台事件的声明和交互。specversion:1.0,type:com.github.pull.create,source:https:/xx/xxx,subject:123,id:A234-1234-1234,time:2021-04-05T17:31:00Z,comexampleextension1:va
3、lue,comexampleothervalue:5,datacontenttype:text/xml,data:ID属性:事件id;Source属性:标示事件发生的上下文;Type属性:该属性包含一个描述事件类型的值,描述与源事件相关的事件类型;Specversion属性:CloudEvents规范的版本;Datacontenttype属性:数据类型的内容,例如:“application/json”格式、“application/xml”格式;Dataschema属性:指明事件数据所遵循的统一资源标识;Subject属性:事件主题;Time属性:事件发生的时间戳。Knative Eventi
4、ng系统实现原理Eventing功能架构 事件生产者:产生事件的系统;事件适配器:数据处理的实体,将外部事件数据接入转化为CloudEvents格式,并将消息传入事件平台中;事件传递:Eventing系统中实现了多种消息转发机制,主要包括直接转发,通道订阅模式和Broker/Trigger消息传递模式,复杂模式;事件消费者:接受事件的一方,如Knative服务或核心Kubernetes服务。实现通用接口:可寻址对象,能够接收和通过 HTTP 传递到其status.address.url 地址的事件;可调用对象,能够接收通过 HTTP 传递的事件并转换事件,在 HTTP 响应中返回 0 或 1
5、个新事件。Knative Eventing系统实现原理预定义的事件源:ContainerSource:实例化一个容器,通过该容器产生事件 ApiserverSource:每次创建或更新 Kubernetes 资源时,ApiserverSource 都会触发一个新事件 GitHubSource:GitHub 操作触发一个新事件 CronJobSource:通过 CronJob 产生事件 KafkaSource:接收 Kafka 事件并触发一个新事件 RabbitMQ:将RabbitMQ消息带入Knative SinkBinding:使用Kubernetes提供的资源(例如,Deployment,
6、Job,DaemonSet,StatefulSet)作事件源事件源:把事件生产者接入knative事件平台中,并把事件传送给消费者事件源主要功能:接收事件将事件转化为CloudEvents格式将事件发送出去Knative Eventing系统实现原理Knative Eventing自定义的资源类型 Channel:实现事件的转发和持久存储,支持不同的技术如Kafka channel;Subscription:事件订阅者,即事件转发的目的地;Parallel:事件同时转发给多个订阅者的一种机制;Sequence:事件依次经过多个订阅者的一种机制;Broker:可以接受事件、并把事件转发到订阅者;