博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入解读 Knative Eventing 0.7 版本新特性
阅读量:2401 次
发布时间:2019-05-10

本文共 2470 字,大约阅读时间需要 8 分钟。

前言

Knative Eventing 0.7 版本已经于 6 月 26 号正式发布。本次发布主要围绕重构 Channel 特性展开。本篇文章重点解读了这些特性,并且以此展望一下 Knative Eventing 后续版本的发展。

新特性

重构 Channel

作为 Eventing v0.7 版本最大的特性, 重构了 Channel 的设计:为每个 Channel 单独创建了CRD资源。

在 Eventing v0.6 版本中, Channel 是通过 provisioner 模式实现的。以 kafka Channel 为例:

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。这样的实现方式存在以下问题:

  • Channel 中只通过一个 provisioner 字段就设置了包含的所有属性。
  • 每一个Channel Controller都会监听到所有的资源,再进行过滤。
  • Event Source中的实现方式更符合规范,即每个Source 单独的CRD和Controller,值得借鉴。

针对这些之前存在的不合理的设计, 在Eventing v0.7版本中,为每个Channel 单独创建了CRD资源,改造涉及如下:

  • InMemoryChannel CRD 替换 in-memory ClusterChannelProvisioner
  • KafkaChannel CRD 替换 kafka ClusterChannelProvisioner
  • NatssChannel CRD 替换 natss ClusterChannelProvisioner

改造后的 kafka Channel 示例如下:

apiVersion: messaging.knative.dev/v1alpha1   kind: KafkaChannel   metadata:     name: my-kafka-channel   spec:     numPartitions: 1     replicationFactor: 3

另外这些现存的 ClusterChannelProvisioner,会在未来的版本中删除掉。

支持事件顺序处理(Sequence)

在 0.7 版本中定义了 Sequence CRD 资源用于简单的pipeine(F1->F2->F3),这个特性比较有意思,它可以将上一步处理的事件结果作为下一步的输入。类似图例:

5973f35d8efe89cb9d38d7df0240f333053.jpg

在 Channel, Subscription, Broker, 以及 Trigger 中增强注释信息

在 Channel, Subscription, Broker, 以及 Trigger 中增加了创建和更新的用户信息。

事件追踪支持

  • Channel dispatchers 可以查看事件 Trace 信息
  • ClusterChannelProvisioners, Sources, 以及 Broker 中支持导出Trace信息到Zipkin。

事件源增强

  • ContainerSource 事件源支持设置PodTemplateSpec
  • CronJobSource 事件源支持设置resource limits 和 requests

其它变更

  • Eventing controller 在新版本中明确禁用 istio sidecar 注入Pod
  • 为Broker ingress 和 filter 定义全局的(如 knative-eventing 命名空间) ConfigMap。
  • 参考Serving中的策略,为Eventing中所有的资源对象打上eventing.knative.dev/release 标签, Value值可以设置为release 版本或者devel

升级与兼容

对于此次的变更,如升级到 Eventing 0.6版本需要关注一下几点:

  • 对于 kafka-channel-dispatcher StatefulSet 在新版本中不在安装,
  • 在0.7版本中in-memory-channel ClusterChannelProvisioner 已被移除掉。可以使用InMemoryChannel CRD替换原 in-memory-channel ClusterChannelProvisioner
  • Broker ingress pods 新版本会使用 eventing-broker-ingress ServiceAccount。如果之前创建的 Broker 没有使用eventing injection注释,需要手动创建所需的 ServiceAccount 和 RoleBindings。
  • webhook Deployment 在新版本中使用了 eventing-webhook Deployment 名称进行了替换。原有的webhook 会缩为 0 进行处理,接下来也会被移除掉。

总结

从本次 Knative Eventing 0.7 版本发布的特性不难看出,当前 Knative Eventing 在向前的迭代中不断优化设计,相信在接下来的版本中也会更多的聚焦设计优化,如计划在 v0.8 版本中完成 Source 到 Importer 的重命名改造等。

本文为云栖社区原创内容,未经允许不得转载。

转载于:https://my.oschina.net/u/1464083/blog/3067924

你可能感兴趣的文章
linux系统启动过程
查看>>
mysql之分区表小结1
查看>>
InnoDBd的auto_increment以及innodb_autoinc_lock_mode
查看>>
linux 2.6的IO调度算法
查看>>
innodb master线程的工作机制
查看>>
存储知识小结
查看>>
mysql常用函数
查看>>
温习tcp知识
查看>>
mysql用于分配内存的参数
查看>>
[转载]移动开发谁领风骚 J2ME开发工具面面观
查看>>
[转载]Java嵌入式开发之四-J2ME与MIDP开发
查看>>
java实现屏幕取色
查看>>
[转载]项目经验二则:读取war包中的文件及Ant使用中的OutOfMemoryError解决
查看>>
[转载]实例讲解配置之——TOMCAT集群配置
查看>>
[转载]彻底转变流,第 2 部分:优化 Java 内部 I/O
查看>>
[转载]SWT 和 JFace, 第 2 部分: 简介
查看>>
[转载]ZX手机平台的几个问题
查看>>
[转载]JDBC编程基础
查看>>
[转载]Java手机游戏编程之MIDP图形设计篇
查看>>
[转载]Java Servlets编程指南(十八)
查看>>