• [SpringCloudDataFlow v2.3.0.RELEASE源码系列]-1-云原生的流和批处理数据处理管道简介


    1-云原生的流和批处理数据处理管道

    1.1 简介

    Spring Cloud Data Flow是一个基于微服务的工具包,用于在 Cloud Foundry 和 Kubernetes 中构建流和批处理数据处理管道。

    数据处理管道由使用Spring Cloud Stream 或Spring Cloud Task微服务框架构建的 Spring Boot 应用程序组成。

    这使得 Spring Cloud Data Flow 成为一系列数据处理用例的理想选择,从导入/导出到事件流和预测分析。

    数据流有两个主要组成部分:

    • Data Flow Server
    • Skipper Server

    访问数据流的主要入口点是通过数据流服务器的 RESTful API。Web 仪表板由数据流服务器提供。Data Flow Server 和 Data Flow Shell 应用程序都通过 Web API 进行通信。

    这些服务器可以在多个平台上运行:Cloud Foundry、Kubernetes 或您的本地机器。每个服务器将其状态存储在关系数据库中。

    下图显示了架构和通信路径的高级视图:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l6RRj67P-1656232042969)(1-1arch.png)]

    1.2 数据流服务器 Data Flow Server

    数据流服务器负责

    • 基于特定领域语言 (DSL) 解析流和批处理作业定义。
    • 验证和持久化流、任务和批处理作业定义。
    • 将 jar 和 Docker 映像等工件注册到 DSL 中使用的名称。
    • 将批处理作业部署到一个或多个平台。
    • 将作业调度委托给平台。
    • 查询详细任务和批处理作业执行历史。
    • 将配置属性添加到配置消息输入和输出的流以及传递部署属性(例如实例的初始数量、内存要求和数据分区)。
    • 将流部署委托给 Skipper。
    • 审核操作(例如流创建、部署和取消部署以及批量创建、启动和删除)。
    • 提供流和批处理作业 DSL 选项卡完成功能。

    1.3 船长服务器Skipper Server

    船长服务器负责:

    • 将流部署到一个或多个平台。
    • 通过使用基于状态机的蓝/绿更新策略在一个或多个平台上升级和回滚流。
    • 存储每个流的清单文件的历史记录(代表已部署应用程序的最终描述)。
    • 数据库

    Data Flow Server 和 Skipper Server 需要安装 RDBMS。默认情况下,服务器使用嵌入式 H2 数据库。您可以将服务器配置为使用外部数据库。支持的数据库有 H2、HSQLDB、MySQL、Oracle、Postgresql、DB2 和 SqlServer。每个服务器启动时都会自动创建模式。

    1.4 应用类型

    应用程序有两种风格:

    长期应用。有两种类型的长期应用程序:

    消息驱动的应用程序,其中通过单个输入或输出(或两者)消耗或产生无限量的数据。
    第二个是消息驱动的应用程序,可以有多个输入和输出。它也可能是一个根本不使用消息中间件的应用程序。
    处理有限数据集然后终止的短期应用程序。短期应用程序有两种变体。

    第一个是运行您的代码并在数据流数据库中记录执行状态的任务。它可以(可选)使用 Spring Cloud Task 框架,而不必是 Java 应用程序。但是,应用程序确实需要在 Data Flow 的数据库中记录其运行状态。
    第二个是第一个的扩展,包括 Spring Batch 框架作为执行批处理的基础。

    带有源、处理器和接收器的流
    Spring Cloud Stream 定义了绑定接口的概念,该接口将消息交换模式封装在代码中,即应用程序的输入和输出是什么。Spring Cloud Stream 提供了几个绑定接口,对应以下常见的消息交换合约:

    Source:将消息发送到目的地的消息生产者。
    Sink:从目的地读取消息的消息消费者。
    Processor:源和汇的组合。处理器使用来自目的地的消息并生成要发送到另一个目的地的消息。
    这三种类型的应用程序通过使用source、processor和sink来描述type正在注册的应用程序的来向数据流注册

    1.5与其他架构的比较

    Spring Cloud Data Flow 的架构风格不同于其他流和批处理平台。例如,在 Apache Spark、Apache Flink 和 Google Cloud Dataflow 中,应用程序在专用计算引擎集群上运行。与 Spring Cloud Data Flow 相比,计算引擎的性质为这些平台提供了更丰富的数据执行复杂计算的环境,但它引入了另一种执行环境的复杂性,在创建以数据为中心的应用程序时通常不需要这种环境。这并不意味着您在使用 Spring Cloud Data Flow 时不能进行实时数据计算。例如,您可以开发使用 Kafka Streams API 时间滑动窗口和移动平均功能以及将传入消息与参考数据集连接起来的应用程序。

    这种方法的一个好处是我们可以在运行时委托给流行的平台。Data Flow 可以从它们的功能集(弹性和可扩展性)以及您可能已经拥有的关于这些平台的知识中受益,因为您可能将它们用于其他目的。这减少了创建和管理以数据为中心的应用程序的认知距离,因为用于部署其他最终用户/Web 应用程序的许多相同技能都适用。

    1.6 平台

    您可以在 Cloud Foundry、Kubernetes 和您的本地机器上部署 Spring Cloud Data Flow Server 和 Skipper Server。

    您还可以将这些服务器部署的应用程序部署到多个平台:

    本地:可以部署到本地机器、Cloud Foundry 或 Kubernetes。
    Cloud Foundry:可以部署到 Cloud Foundry 或 Kubernetes。
    Kubernetes:可以部署到 Kubernetes 或 Cloud Foundry。
    最常见的架构是在部署应用程序的同一平台上安装 Data Flow 和 Skipper 服务器。您还可以部署到多个 Cloud Foundry 组织、空间和基金会以及多个 Kubernetes 集群。

    更详细的文档可以查阅官方文档:
    https://dataflow.spring.io/

    查看更多原文,技术咨询支持,可以扫描微信公众号进行回复咨询
    在这里插入图片描述

  • 相关阅读:
    树状数组:leetcode307 区域和检索
    第十二章: 项目采购管理
    劝你不要转行
    Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等
    Vue--》简述组件的数据共享
    FL Studio Fruity Edition2024中文入门版Win/Mac
    BBS项目分布搭建二(个人站点相关)
    Python 细聊从暴力(BF)字符串匹配算法到 KMP 算法之间的精妙变化
    GraphSAGE 源代码 -- 分图训练
    21天,胖哥亲自带你玩转OAuth2
  • 原文地址:https://blog.csdn.net/songjunyan/article/details/125471210