Knative Eventing 0.7 版本已经于 6 月 26 号正式发布。本次发布主要围绕重构 Channel 特性展开。本篇文章重点解读了这些特性,而且以此展望一下 Knative Eventing 后续版本的发展。web
做为 Eventing v0.7 版本最大的特性, 重构了 Channel 的设计:为每一个 Channel 单首创建了CRD资源。
在 Eventing v0.6 版本中, Channel 是经过 provisioner 模式实现的。以 kafka Channel 为例:api
apiVersion: eventing.knative.dev/v1alpha1 kind: Channel metadata: name: my-kafka-channel spec: provisioner: apiVersion: eventing.knative.dev/v1alpha1 kind: ClusterChannelProvisioner name: kafka
这里是经过指定名称为 kafka 的 ClusterChannelProvisioner。这样的实现方式存在如下问题:ide
针对这些以前存在的不合理的设计, 在Eventing v0.7版本中,为每一个Channel 单首创建了CRD资源,改造涉及以下:优化
改造后的 kafka Channel 示例以下:spa
apiVersion: messaging.knative.dev/v1alpha1 kind: KafkaChannel metadata: name: my-kafka-channel spec: numPartitions: 1 replicationFactor: 3
另外这些现存的 ClusterChannelProvisioner,会在将来的版本中删除掉。设计
在 0.7 版本中定义了 Sequence CRD 资源用于简单的pipeine(F1->F2->F3),这个特性比较有意思,它能够将上一步处理的事件结果做为下一步的输入。相似图例:code
在 Channel, Subscription, Broker, 以及 Trigger 中增长了建立和更新的用户信息。对象
eventing.knative.dev/release
标签, Value值能够设置为release 版本或者devel
对于这次的变动,如升级到 Eventing 0.6版本须要关注一下几点:blog
in-memory-channel
ClusterChannelProvisioner 已被移除掉。可使用InMemoryChannel CRD替换原 in-memory-channel
ClusterChannelProvisioner从本次 Knative Eventing 0.7 版本发布的特性不难看出,当前 Knative Eventing 在向前的迭代中不断优化设计,相信在接下来的版本中也会更多的聚焦设计优化,如计划在 v0.8 版本中完成 Source 到 Importer 的重命名改造等。事件
本文为云栖社区原创内容,未经容许不得转载。