流处理

流处理被定义为对无界数据进行不间断处理。流处理的业务案例包括:

  • 实时信用卡欺诈检测或预测分析
  • 近实时业务数据处理,用于可操作的分析

Spring Cloud Data Flow 中的流处理在架构上实现为一组独立的事件驱动的流应用程序,这些应用程序使用所选的消息中间件(例如 RabbitMQ 或 Apache Kafka)进行连接。这些独立的应用程序在运行时组合在一起,构成一个流数据管道。管道可以是线性的,也可以是非线性的,具体取决于应用程序之间的数据流。

消息中间件

已部署的流应用程序通过消息中间件产品进行通信。我们提供预构建的流应用程序,这些应用程序可以通过 RabbitMQKafka 进行通信,您可以使用它们与各种数据产品集成。

通过使用众多 Spring Cloud Stream Binder 之一,您可以使用许多不同的消息中间件产品。Spring Cloud Data Flow 支持以下流行平台:

您可以 此处 找到更多信息(例如 Spring Cloud Stream Binder 的当前列表)。

Spring Cloud Stream

对于 Spring 开发人员,我们建议使用 Spring Cloud Stream 框架编写自定义流应用程序。Spring Cloud Stream 使您能够轻松构建与共享消息系统连接的高度可扩展的事件驱动型微服务。

作为开发人员,您可以专注于开发应用程序的业务逻辑,同时将底层 API 的复杂性和与消息代理的连接样板代码委托给 Spring Cloud Stream。

在较高层次上,流应用程序可以通过消息中间件生成、处理或消费事件。

在云中运行流应用程序

Cloud Foundry 和 Kubernetes 都支持在其平台上运行长期应用程序的概念。Cloud Foundry 将每个应用程序称为长期运行进程 (LRP)。在 Kubernetes 上,您可以使用部署资源,该资源又管理副本集,这些副本集会保持指定数量的 Pod 来运行您的应用程序。

虽然 Spring Cloud Stream 本身可以极大地简化流应用程序的编写,但当手动部署一组独立的 Spring Cloud Streaming 应用程序时,您需要

  • 配置所有应用程序的输入和输出目标。
  • 配置共享消费者组属性的通用名称,以确保目标上的消费者之间存在适当的分离或协作。
  • 配置多个属性,以便识别应用程序并发布指标信息以进行监控。
  • 配置与消息中间件的连接,创建目标,并配置扩展和分区特性。
  • 创建必要的平台资源以运行应用程序。

当您在 Spring Cloud Data Flow 中将流应用程序集合作为流定义的一部分进行部署时,系统会为您处理所有这些配置,并创建必要的底层资源以在目标平台上运行您的应用程序。各种部署属性允许您自定义部署(例如,设置内存资源等通用属性,设置 Cloud Foundry 上的构建包等平台特定属性,或设置 Kubernetes 部署上的标签)。

编排流式应用

Data Flow Stream Orchestration

当您使用 Spring Cloud Stream 编写了流式应用程序或使用了众多预构建的 Spring Cloud Stream 应用程序之一后,如何定义构成流式数据管道的应用程序,以及如何编排所有应用程序的启动?Spring Cloud Data Flow 可以帮助您解决这些问题。

Spring Cloud Data Flow 允许您使用拖放式设计器或使用具有熟悉的管道和过滤器语法的基于文本的领域特定语言 (DSL) 来定义流。有关更多信息,请参阅工具指南。

然后,您可以部署到 Kubernetes 或 Cloud Foundry。部署后,如果您需要更新单个应用程序,Spring Cloud Data Flow 可以通过提供一个简单的升级命令来轻松实现,该命令会在平台上触发蓝/绿部署。有关更多信息,请参阅持续交付指南。

您可以使用各种流行的监控系统来监控流。我们演示了 Prometheus 和 InfluxDB。然后,您可以使用提供的 Grafana 仪表板模板查看流。有关更多信息,请参阅监控部分。

后续步骤

如果您有兴趣使用预构建的应用程序创建流式数据管道,请参阅流式入门指南

如果您有兴趣使用 Spring Cloud Stream 编写和部署自定义流处理应用程序,请参阅流式开发者指南