iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何Knative中的Build、Serving 和 Eventing三大核心组件
  • 244
分享到

如何Knative中的Build、Serving 和 Eventing三大核心组件

2023-06-04 16:06:48 244人浏览 薄情痞子
摘要

本篇文章给大家分享的是有关如何Knative中的Build、Serving 和 Eventing三大核心组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。作者 | 阿里云智能事

本篇文章给大家分享的是有关如何Knative中的Build、Serving 和 Eventing三大核心组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

如何Knative中的Build、Serving 和 Eventing三大核心组件

作者 | 阿里云智能事业群高级开发工程师 元毅

划重点

初识 Knative:  跨平台的 serverless 编排框架 让我们对于 Knative 有了初步了解,Knative 主要由 Build、Serving 和 Eventing 三大核心组件构成。Knative 正是依靠这三个核心组件,驱动着 Knative 这艘 Serverless 巨轮前行,本文就来分别介绍一下这三个核心组件。

如何Knative中的Build、Serving 和 Eventing三大核心组件

Build

Knative Build 是基于现有的 kubernetes 能力之上,提供的一套标准化、可移植、可复用的容器镜像构建方式。通过在 Kubernetes 上运行复杂的构建任务,Knative Build 使你不必再单独开发和重复这些镜像构建过程, 从而通过系统化、工程化的方式,减少了镜像构建时间及成本。

Build 通过 Kubernetes 自定义资源定义(CRD)实现。 通过 Build 你可以自定义一个从运行到结束的构建流程。例如,可以使用 Knative Build 来获取、构建和打包代码。Build 具备以下功能:

  • 支持 Source 源挂载,目前支持的 Source 源包括:

    * git 代码仓库

    * 任意容器镜像

  • 支持通过 BuildTemplate 创建可重复执行构建的模板

  • 支持 k8s ServiceAccount 身份验证

典型的 Build 示意图:

如何Knative中的Build、Serving 和 Eventing三大核心组件

虽然目前 Knative Build 并不提供完整的独立 CI/CD 解决方案,但它却提供了一个底层的构建模块,用户可单独使用该构建模块在大型系统中实现集成和利用。

如何Knative中的Build、Serving 和 Eventing三大核心组件

Serving

Knative 作为 Severless 框架最终是用来提供服务的, 那么 Knative Serving 应运而生。

Knative Serving 构建于 Kubernetes 和 Istio 之上,为  Serverless 应用提供部署和服务支持。其特性如下:

  • 快速部署 Serverless 容器

  • 支持自动扩缩容和缩至为 0 实例

  • 基于 Istio 组件,提供路由和网络编程

  • 支持部署快照

Knative Serving 中定义了以下 CRD 资源:

  • Service: 自动管理工作负载整个生命周期。负责创建 Route、Configuration 以及 Revision 资源。通过 Service 可以指定路由流量使用最新的 Revision 还是固定的 Revision

  • Route:负责映射网络端点到一个或多个 Revision。可以通过多种方式管理流量,包括灰度流量和重命名路由

  • Configuration: 负责保持 Deployment 的期望状态,提供了代码和配置之间清晰的分离,并遵循应用开发的 12 要素。修改一次 Configuration 产生一个 Revision

  • Revision:Revision 资源是对工作负载进行的每个修改的代码和配置的时间点快照。Revision 是不可变对象,可以长期保留

资源关系图:

如何Knative中的Build、Serving 和 Eventing三大核心组件

如何Knative中的Build、Serving 和 Eventing三大核心组件

Eventing

Knative Eventing 旨在满足云原生开发中通用需求, 以提供可组合的方式绑定事件源和事件消费者。其设计目标:

  • Knative Eventing 提供的服务是松散耦合,可独立开发和部署。服务可跨平台使用(如 Kubernetes, VMs, SaaS 或者 FaaS)

  • 事件的生产者和事件的消费者是相互独立的。任何事件的生产者(事件源)可以先于事件的消费者监听之前产生事件,同样事件的消费者可以先于事件产生之前监听事件

  • 支持第三方的服务对接该 Eventing 系统

  • 确保跨服务的互操作性

事件处理示意图:

如何Knative中的Build、Serving 和 Eventing三大核心组件

如上图所示,Eventing 主要由事件源(Event Source)、事件处理(Flow)以及事件消费者(Event Consumer)三部分构成。

事件源(Event Source)

当前支持以下几种类型的事件源:

  • apiserverSource:每次创建或更新 Kubernetes 资源时,ApiserverSource 都会触发一个新事件

  • GitHubSource:GitHub 操作时,GitHubSource 会触发一个新事件

  • GCpPubSubSource: GCP 云平台 Pub/Sub 服务会触发一个新事件

  • AwsSqsSource:Aws 云平台 SQS 服务会触发一个新事件

  • ContainerSource: ContainerSource 将实例化一个容器,通过该容器产生事件

  • CronJobSource: 通过 CronJob 产生事件

  • kafkaSource: 接收 Kafka 事件并触发一个新事件

  • CamelSource: 接收 Camel 相关组件事件并触发一个新事件


事件接收/转发(Flow)

当前 Knative 支持如下事件接收处理:

  • 直接事件接收

    通过事件源直接转发到单一事件消费者。支持直接调用 Knative Service 或者 Kubernetes Service 进行消费处理。这样的场景下,如果调用的服务不可用,事件源负责重试机制处理

  • 通过事件通道(Channel)以及事件订阅(Subscriptions)转发事件处理

    这样的情况下,可以通过 Channel 保证事件不丢失并进行缓冲处理,通过 Subscriptions 订阅事件以满足多个消费端处理

  • 通过 brokers 和 triggers 支持事件消费及过滤机制

从 v0.5 开始,Knative Eventing 定义 Broker 和 Trigger 对象,实现了对事件进行过滤(亦如通过 ingress 和 ingress controller 对网络流量的过滤一样)通过定义 Broker 创建 Channel,通过 Trigger 创建 Channel 的订阅(subscription),并产生事件过滤规则。

事件消费者(Event Consumer)

为了满足将事件发送到不同类型的服务进行消费, Knative Eventing 通过多个 k8s 资源定义了两个通用的接口:

  • Addressable 接口提供可用于事件接收和发送的 Http 请求地址,并通过status.address.hostname字段定义。作为一种特殊情况,Kubernetes Service 对象也可以实现 Addressable 接口

  • Callable 接口接收通过 HTTP 传递的事件并转换事件。可以按照处理来自外部事件源事件的相同方式,对这些返回的事件做进一步处理

当前 Knative 支持通过 Knative Service 或者 Kubernetes Service 进行消费事件。

另外针对事件消费者,如何事先知道哪些事件可以被消费? Knative Eventing 在最新的 0.6 版本中提供 ReGIStry 事件注册机制, 这样事件消费者就可以事先通过 Registry 获得哪些 Broker 中的事件类型可以被消费。

如何Knative中的Build、Serving 和 Eventing三大核心组件

总结

Knative 使用 Build 提供云原生“从源代码到容器”的镜像构建能力,通过 Serving 部署容器并提供通用的服务模型,同时以 Eventing 提供事件全局订阅、传递和管理能力,实现事件驱动。这就是 Knative 呈现给我们的标准 Serverless 编排框架。

以上就是如何Knative中的Build、Serving 和 Eventing三大核心组件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何Knative中的Build、Serving 和 Eventing三大核心组件

本文链接: https://www.lsjlt.com/news/238543.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何Knative中的Build、Serving 和 Eventing三大核心组件
    本篇文章给大家分享的是有关如何Knative中的Build、Serving 和 Eventing三大核心组件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。作者 | 阿里云智能事...
    99+
    2023-06-04
  • 如何理解Knative Serving中的路由管理和 Ingress
    本篇文章给大家分享的是有关如何理解Knative Serving中的路由管理和 Ingress,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Knative 默认会为每一个 Se...
    99+
    2023-06-19
  • vue组件三大核心的示例分析
    这篇文章主要介绍了vue组件三大核心的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、属性 1.自定义属性propsprop 定义...
    99+
    2024-04-02
  • React组件封装中三大核心属性详细介绍
    目录1、介绍2、state概念演示3、props概念props与state区别4、refs概念refs种类5、父子组件什么是父子组件父子组件之间传值1、介绍 React组件中默认封装...
    99+
    2024-04-02
  • Java NIO中四大核心组件的使用详解
    目录一、基础概念1.1 IO和NIO的区别1.2 缓冲区1.3 通道1.4 选择器和选择键二、核心组件2.1 Channel2.2 Buffer2.3 Selector三. 总结Ja...
    99+
    2023-05-20
    Java NIO核心组件使用 Java NIO组件 Java NIO
  • RPA卓越中心的三种组织结构、五大核心功能与十大职能角色
    ...
    99+
    2023-06-05
  • 大中台模式下如何构建复杂业务核心状态机组件
    大中台战略下,中台将公司业务的公共能力下沉,并采用更加合理、可复用的架构和技术来实现这些基础能力。在电商行业内,将面临货物的采购、商品上架、交易发生、订单状态变化、客服介入等大量状态维护。每个状态之间具有很强的逻辑关联关系,比如:退款操作在...
    99+
    2023-06-05
  • 如何理解低代码开发平台核心组件集成和协同
    这篇文章主要讲解了“如何理解低代码开发平台核心组件集成和协同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解低代码开发平台核心组件集成和协同”吧!低代...
    99+
    2024-04-02
  • 如何进行python核心模块中pickle和cPickle的分析
    如何进行python核心模块中pickle和cPickle的分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。pickle模块使用的数据格式是python专用的,并且不同版...
    99+
    2023-06-04
  • Go语言、大数据和LeetCode:如何掌握数据处理的核心技能?
    随着时代的发展,数据处理成为了一项极其重要的技能。而要成为一名优秀的数据处理工程师,你需要掌握一些核心技能,包括编程语言、算法和数据结构。在本篇文章中,我们将一起探讨如何通过学习Go语言、大数据和LeetCode来掌握数据处理的核心技能。 ...
    99+
    2023-09-26
    大数据 日志 leetcode
  • 如何在PHP中进行第三方组件的使用和集成?
    PHP是一门功能非常丰富的编程语言,开源的特性也使得PHP在Web开发中被广泛应用。作为一个成熟的编程平台,PHP拥有很多优秀的第三方组件,它们可以帮助开发人员更快速、高效地开发出优秀的Web应用。本文将从基础内容入手,介绍如何在PHP中使...
    99+
    2023-05-20
    集成 PHP 第三方组件
  • 贪心算法之如何实现K次取反后最大化的数组和
    本篇内容主要讲解“贪心算法之如何实现K次取反后最大化的数组和”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“贪心算法之如何实现K次取反后最大化的数组和”吧!很多录...
    99+
    2024-04-02
  • React组件中的state和setState如何使用
    本篇内容主要讲解“React组件中的state和setState如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React组件中的state和setState如何使用”吧!state的基本...
    99+
    2023-06-29
  • 如何在vue中更优雅的封装第三方组件详解
    目录一、需求场景描述二、关键技术点介绍1.v-bind="$attrs"2.v-on="$listeners"三、封装el-image的代码示...
    99+
    2024-04-02
  • 如何在学习大数据技术时兼顾MySQL和Oracle?掌握不同数据库的核心优势。
    如何在学习大数据技术时兼顾MySQL和Oracle?掌握不同数据库的核心优势。一、引言随着大数据时代的到来,数据成为了企业决策和运营的重要资源。而学习和掌握大数据技术,数据库的使用是非常重要的一环。在大数据技术中,MySQL和Oracle是...
    99+
    2023-10-22
    MySQL Oracle 关键词:大数据技术
  • 如何在 ASP 中处理大量的数组文件数据?
    ASP 是一种常用的 Web 应用程序开发语言,处理大量数组文件数据是 ASP 开发者常常需要面对的问题之一。在本文中,我们将介绍如何在 ASP 中处理大量的数组文件数据。 第一步:读取文件数据 在 ASP 中处理大量数组文件数据,我们首先...
    99+
    2023-07-19
    接口 数组 文件
  • 如何在Angular中使用第三方组件和懒加载技术优化性能
    本篇文章给大家分享的是有关如何在Angular中使用第三方组件和懒加载技术优化性能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。环境准备全局安装Angular CLI:npm ...
    99+
    2023-06-15
  • 大数据中的数组:如何更好地处理和管理?
    在当今数字化时代,大数据已成为各行各业不可或缺的重要资源。而数组作为一种基本的数据结构,也在大数据处理中扮演着重要的角色。本文将介绍如何更好地处理和管理数组数据,以提高数据处理效率和准确性。 一、数组的基本概念 数组是一种数据结构,它由一组...
    99+
    2023-08-09
    大数据 自然语言处理 数组
  • 如何在Python中处理实时生成的大型数组文件?
    Python是一个强大的编程语言,在数据处理方面也表现出了其强大的能力。当我们需要处理大型数组文件时,Python提供了一些非常有用的工具和库来帮助我们完成任务。在本文中,我们将介绍如何在Python中处理实时生成的大型数组文件,并且将通...
    99+
    2023-07-05
    实时 数组 文件
  • PyTorch中如何进行模型的组件化和复用
    PyTorch中可以通过定义模型的组件(例如层、模块)来实现模型的组件化和复用。 1、定义模型组件:可以通过继承torch.nn.M...
    99+
    2024-03-06
    PyTorch
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作