全面剖析 Knative Eventing 0.6 版本新特性

前言

Knative Eventing 0.6 版本已经于5月15号正式发布。相比于0.5版本,此次发布包含了一些重要特性及更新。针对这些新特性以及更新,我们如何快速、精准的定位主要技术点。本篇文章针对这些进行技术剖析,希望能让大家更好的理解此次发布的重点内容,并且以此展望一下 Knative Eventing 后续版本的发展。
另外由于目前 Eventing 依赖 Eventing-Sources, 关于 Eventing-Sources 0.6 主要更新也会相应的提到。

新特性

Registry

作为事件消费者,之前是无法事先知道哪些事件可以被消费,如果能通过某种方式获得哪些 Broker 提供哪些事件,那么事件消费者就能很方便通过这些 Broker 消费事件。Registry 就是在这样的背景下被提出的,通过 Registry 机制,消费者能针对特定的 Broker 的事件通过 Trigger 进行事件订阅消费。Registry 只是一个逻辑观念,并非一个具体的资源。
其实现围绕以下几个关键点:

  • 以 Namespace 为隔离边界,每个 Registry 对应一个 Namespace。
  • 定义 EventType CRD 资源。每个 Registry 中包括多个 EventType 资源。通过 EventType 来判断事件是否可以被消费。
  • EventType 中需要包含 Trigger 订阅时的必要信息。

示例如下:
$ kubectl get eventtypes -n default

NAME                                         TYPE                                    SOURCE                                              SCHEMA                                     BROKER     DESCRIPTION           READY    REASON
org.bitbucket.repofork                       org.bitbucket.repo:fork                 https://bitbucket.org/my-other-user/my-other-repo                                              dev        BitBucket fork        False    BrokerIsNotReady
com.github.pullrequest                       com.github.pull_request                 https://github.com/user/repo                        https://github.com/schemas/pull_request    default    GitHub pull request   True
dev.knative.source.github.push-34cnb         dev.knative.source.github.push          https://github.com/my-other-user/my-other-repo                                                 default                          True
dev.knative.source.github.pullrequest-86jhv  dev.knative.source.github.pull_request  https://github.com/my-other-user/my-other-repo                                                 default                          True

围绕 Registry 事件注册机制,CronJobSource 和 ApiServerSource 事件源会创建对应的 EventType 并注册到 Registry 中。这里需要注意一点目前这个特性只针对 Broker/Trigger 事件处理模型。

这里简单介绍一下 Eventing-Sources 组件,它用于给 Eventing 提供事件源支持,在0.5版本中提供的事件源包括:KubernetesEventSource、GitHubSource、GcpPubSubSource、AwsSqsSource、ContainerSource、CronJobSource、KafkaSource 以及 CamelSource 。
而在最新的 Eventing-Sources 0.6 版本中,CronJobSource 和 ContainerSource 已经迁移到了 Eventing 中, KubernetesEventSource 数据源也会被 Eventing 中的 ApiServerSource 所替代。

去掉 Istio 依赖

在 Eventing 0.5版本中使用了 Istio 来解决事件路由的问题:

  1. 在创建 Channel 时,通过配置 Istio Virtual Service 将事件路由到对应 provisioner。
  2. 在创建 Trigger 时,通过配置 Istio Virtual service 将事件路由到 Broker-Filter。

这里其实我们可以通过为每一个 Channel 创建唯一ExternalName类型的 k8s service 解决 Channel 事件路由问题,而 Trigger 则直接通过 HTTP 路径(如:http://foo-broker-filter-1da3a.default.svc.cluster.local/my-trigger)将事件路由到 Broker-Filter,并且结合社区去掉 Istio 依赖的建议(在 Serving 中已经建议不在依赖 Istio )。
因此在 Eventing 0.6版本中去掉了对 Istio 的依赖。另外如果你安装了 Istio 的话,并不会影响 Eventing 正常工作。

事件追踪支持

在 Eventing 中如果事件处理过程中出现异常,我们不能很快的定位具体的问题。针对这样的场景,在所有的 Channel 中添加了事件追踪支持,包括:

  • Kafka Channel
  • in-memory Channel
  • NATSS Channel
  • GCP-PubSub Channel

并且通过 config-tracing ConfigMap 配置 tracing 信息。

Metrics 支持

社区在针对 Eventing/Serving 等组件中采用不同的 controller 实现(例如 Eventing 中使用 controller runtime, 而 Serving 中通过 pkg/controller 方式)进行统一改造(预计在0.7版本完成)过程中,发现 metrics 的实现方式也不一致,因此此次对所有的 controller 都添加了 metrics 统一实现,包括 Broker, Trigger, Channel, Subscription, ContainerSource, CronJobSource 以及 ApiServerSource。

新增 ApiServerSource

上面提到 KubernetesEventSource 在 Eventing-Source 0.6版本中已经去掉,新增 ApiServerSource,用于在 Eventing 中获取 Kubernetes 中资源改变的事件源信息。

完善 ContainerSource

ContainerSource 代码中新增了 Kubernetes 事件和条件判断处理,便于出现问题时进行排查。

其它变更

  • Trigger 通过path替换原有的host来访问 Subscription。创建 Trigger 对象后,当前不再需要创建 Kubernetes Service 和 Istio VirtualService 对象。如果系统中已经存在的 k8s Service 和 VirtualService 不会被主动删除,只会在删除 Trigger 的时候才会被 GC 回收
  • in-memory-channel provisioner 新添加了Deprecated类型的条件,计划在0.7版本中in-memory-channel ClusterChannelProvisioner 会被移除掉
  • 所有 Channel 会使用 ExternalName 类型的 Kubernetes Service 来替换 Istio VirtualService。
  • Eventing 中的数据平面组件不再强依赖 Istio sidecar 注入。

升级与兼容

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

  • 由于 in-memory-channel ClusterChannelProvisioner 计划在0.7版本中移除掉,并且被 in-memory provisioner 取代。建议升级现有所有的 in-memory-channel 到 in-memory
  • Trigger 中的BrokerExists条件现在称为 Broker。
  • Kafka dispatcher 组件会使用 Deployment 替换原有的 StatefulSet。升级到0.6版本之后需要删除eventing-sources/kafka-channel-dispatcher StatefulSet。
  • CronJobSource 和 ContainerSource 已经作为 Eventing 安装的一部分,不需要通过其它方式再安装(Eventing-Sources 0.6中已经被移除)。
  • 由于 in-memory ClusterChannelProvisioner 目前依赖config-tracing ConfigMap, 所以需要先安装 Eventing。如果 in-memory 先安装, 那么 in-memory dispatcher 会启动不了,直到 Eventing 安装完成。
  • CronJobSource 现在使用/apis/v1/namespaces//cronjobsources/作为 CloudEvents 事件源。代替原来的/CronJob
  • 如果 Eventing 升级到0.6版本, 相应的 Eventing-Sources 也需要升级到0.6版本

总结

Knative Eventing 0.6版本增强了事件处理的易用性如新增 Registy 便于事件消费,通过新增事件跟踪机制以及 Metrics 增强了可用性,同时进一步简化 Eventing 中的依赖处理,如去掉 Istio 依赖,而将 Eventing-Sources 中的数据源处理迁移到 Eventing 中,则进一步减少了对 Eventing-Sources 组件的依赖。

展望

我们这里可以简单展望一下,社区接下来会进一步增强 Trigger 过滤策略(支持正则表达过滤等), 并且针对目前使用同一个 Channel CRD 资源很难定位 Channel 中问题,接下来会为每一个 Channel 定义独立 CRD 资源,这些特性计划都会在0.7版本中推出。另外通过这次版本更新,不难看出 Eventing-Sources 会逐渐退出历史。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java实体类去掉属性值空格

在使用Oracle数据库时经常出现数据库char字段被空字符填充的情况,在写业务代码时需要对字段进行处理,BeanHelper.beanAttributeValueTrim(object); public class BeanHelper {public static void beanAttributeValueTrim(Object bean) throws Exception…

用友u8服务器优化,用友U8v10.1运行速度慢的问题及解决方法

一、系统环境:操作系统:Microsoft windows server 2008 R2 64位数据库:SQL 2008 r2 64位ERP:U8V10.1 64位硬件配置:IBMX3850 16核(2颗8核) 内存32G阵列:IBM3512(硬盘转速15000/s)用了虚拟化:虚拟了一台机器…

区块链和大数据一起能否开启数据完整性的新纪元?

作者 | Vijay Singh Khatri译者 | 天道酬勤 责编 | 徐威龙封图| CSDN 下载于视觉中国每当提到区块链一词时,许多人都会将其与比特币等加密货币联系起来。这项技术通过加快交易速度、提供隐私和透明以及其他更多功能,确实改变了虚拟货币的世界。但是&…

开发函数计算的正确姿势——tensorflow serving

前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源&am…

Knative Eventing 中如何实现 Registry 事件注册机制

背景 作为事件消费者,之前是无法事先知道哪些事件可以被消费,如果能通过某种方式获得哪些 Broker 提供哪些事件,那么事件消费者就能很方便通过这些 Broker 消费事件。Registry 就是在这样的背景下被提出的,通过 Registry 机制,消…

Java实现首字母大写、驼峰命名与、划线转换,校验null

/*** 首字母转大写、驼峰命名* * param s 待转换的字符串* return 转换结果*/public static String initialToCapital(String s) {StringBuilder sb new StringBuilder();if (s null || s.trim().isEmpty()) {return sb.toString();}if (s.length() < 1) {return sb.appen…

带出7个“师弟”,支付宝BASIC College的辅导员是个伪90后

“我的花名是改之&#xff0c;不是‘有则改之无则加勉’的改之&#xff0c;而是‘杨过&#xff0c;字改之’的那个改之。”一见面&#xff0c;他对自己花名的介绍&#xff0c;就让人耳目一新。至于为什么要用杨过的字给自己起名&#xff0c;他也毫不扭捏地坦诚相告&#xff1a;…

整理了Kafka的一些常用工具,建议收藏备用!| 博文精选

作者 | 犀牛饲养员责编 | 徐威龙封面付费下载于视觉中国本文主要列举一些 Kafka 的常用工具&#xff0c;以及举了一些例子来帮助理解。有需要的小伙伴&#xff0c;可以 Mark 起来再看。环境以下的操作都是基于kafka_2.11-2.2.0工具新建topicbin/kafka-topics.sh --create --zoo…

阿里的初感知

很荣幸能加入阿里这个大家庭&#xff0c;在这短短的一个月里&#xff0c;阿里的一些不同让我印象深刻。 owner精神 入职第一天&#xff0c;上午进行了合同签订和简单的入职培训&#xff0c;下午就领了电脑设备到了办公区。 在电梯里&#xff0c;恰巧遇到了面试过我的同学&…

时间记录

long forStrTime 0L;//开始时间 forStrTime System.currentTimeMillis(); //结束时间 long forEndTime System.currentTimeMillis(); logger.info("转发结束时间:[{}]", forEndTime "毫秒");//计算耗时时间 long endToStart (long) (forEndTime - for…

两大图灵奖得主点赞中国用AI检测新冠,AI还能做什么?

作者 | CV君来源 | 我爱计算机视觉封图| CSDN│下载于视觉中国在这次新冠肺炎疫情肆虐的时候&#xff0c;AI 成为对抗疫情的亮点&#xff0c;前几天两大图灵奖得主 Yoshua Bengio 和 Yann LeCun 在对比中美两国面对疫情处理时&#xff0c;特别点赞了我国企业使用深度学习检测新…

首次披露!阿里线下智能方案进化史

阿里妹导读&#xff1a;AI 技术已经从互联网走向零售、汽车、银行等传统行业。受限于延时、成本、安全等多方面的限制&#xff0c;单一的云解决方案往往不能满足场景需求。线下智能方案逐步成为了智能化过程中重要的一环&#xff0c;今天&#xff0c;我们就一起来了解这一环&am…

同方服务器操作系统安装,同方云服务器安装使用手册

同方云服务器安装使用手册 内容精选换一换制作Docker镜像&#xff0c;有以下两种方法。快照方式制作镜像(偶尔制作的镜像)&#xff1a;在基础镜像上&#xff0c;比如Ubuntu&#xff0c;先登录镜像系统并安装Docker软件&#xff0c;然后整体制作快照&#xff0c;即可得到所需软件…

蚂蚁金服面对亿级并发场景的组件体系设计

5 月 6 日&#xff0c;InfoQ 主办的 QCon 2019 全球软件开发大会在北京举行。蚂蚁金服技术专家吕丹&#xff08;凝睇&#xff09;在大会上做了《蚂蚁金服面对亿级并发场景的组件体系设计》的分享&#xff0c;我们根据演讲整理如下&#xff1a; 今天&#xff0c;我主要想和大家…

聚焦效率与目标差距,数据才是远程办公的内核!

作者&#xff5c;帆软数据应用研究院 新冠肺炎疫情将远程办公推向了春节后的热度高峰&#xff0c;引爆了远程移动办公应用市场。在“不出门&#xff0c;不聚集”的战疫要求下&#xff0c;远程办公成为企业减小损失、复工过渡的首选。 然而在众多企业如火如荼开展远程办公的同…

“大团队”和“敏捷开发”,谁说不可兼得?

阿里妹导读&#xff1a;当小团队的产出跟不上业务需要&#xff0c;团队就面临规模化的问题。从1个团队到3个团队&#xff0c;仍可以通过简单的团队沟通保持高效协作。当产品复杂到需要5个以上团队同时开发时&#xff0c;我们需要一定的组织设计来保证团队间的顺畅协作&#xff…

英雄联盟祖安服务器要维护多久,祖安玩家的春天!英雄联盟将回归队内语音,娱乐玩家遭殃了?...

英雄联盟之所以能一直保持这么高的人气&#xff0c;就是因为丰富的游戏内容&#xff0c;无论是地图资源、英雄 、符文搭配和出装选择&#xff0c;每隔一段时间就会来一个大革新&#xff0c;而今年英雄联盟更是迎来了史无前例的大更新&#xff0c;装备系统大改&#xff0c;装备界…

plsql不加date

nls_date_format YYYY-MM-DDnls_timestamp_format YYYY-MM-DD NUMBER_OF_PROCESSORS 8

阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云

5月21日&#xff0c;阿里云PolarDB发布重大更新&#xff0c;提供传统数据库一键迁移上云能力&#xff0c;可以帮助企业将线下的MySQL、PostgreSQL和Oracle等数据库轻松上云&#xff0c;最快数小时内迁移完成。据估算&#xff0c;云上成本不到传统数据库的1/6。目前&#xff0c;…

最快60秒完成新冠病毒核酸对比 阿里云向社会免费开放基因计算服务

全球疫情肆虐&#xff0c;各大科技公司都在竭尽全力抗击疫情。3月13日&#xff0c;阿里云对外宣布&#xff0c;将向医疗科研机构、疾控中心等一线病毒研究机构免费开放基因计算服务&#xff0c;可大幅提升宏基因组测序、疫苗研发相关的处理效率&#xff0c;最快只需60秒即可完成…