领先一步
VMware 提供培训和认证,以加快您的进步。
了解更多我代表团队,兴奋地宣布 Spring Cloud Data Flow 1.0 正式版发布!
注意
开始使用此新版本的一个好方法是遵循参考文档的入门部分。它使用在您的计算机上运行的 Data Flow 服务器,并为每个应用程序部署一个新进程。
Spring Cloud Data Flow (SCDF) 是一个用于现代运行环境中数据微服务的编排服务。SCDF 允许您描述数据管道,这些管道可以由长期运行的流式应用程序或短期运行的任务应用程序组成,然后将这些应用程序部署到您可能已经在使用的平台运行环境,例如 Cloud Foundry、Apache YARN、Apache Mesos 和 Kubernetes。我们提供了广泛的流和任务应用程序,因此您可以立即开始开发用于数据摄取、实时分析和数据导入/导出等用例的解决方案。
流是使用受Unix 管道语法启发的 DSL 定义的。例如,从 http 端点执行数据摄取并写入 Apache Cassandra 数据库的流的 DSL 定义为http | cassandra
。反过来,此 DSL 的每个元素都映射到一个专注于数据处理的 Spring Boot 微服务应用程序,该应用程序使用Spring Cloud Stream 编程模型。此编程模型允许您专注于处理应用程序的输入和输出,而 SCDF 配置这些输出和输入如何映射到消息中间件(应用程序如何通信的方式)。通过 Spring Cloud Stream 中的绑定器抽象支持多个消息代理。目前,RabbitMQ 和 Kafka 可用于生产环境。消费者组和数据分区也受 Spring Cloud Stream 支持,并且可以在部署流时进行配置。
Unix 的哲学思想“编写只做一件事并把它做好程序”、“编写协同工作的程序”和“编写处理文本流的程序,因为这是通用的接口”与微服务架构和 Spring Cloud Stream 绑定器在 SCDF 中结合在一起,这非常酷。
今天,我们还宣布发布:
Spring Cloud Data Flow 的Apache YARN 服务器 1.0 正式版
Spring Cloud Data Flow 的Kubernetes 服务器 1.0 正式版
Spring Cloud Data Flow 的Cloud Foundry 服务器 1.0 M4
对 Apache Mesos 的支持正在开发中。我们也很高兴看到社区为其他运行环境做出的贡献,例如OpenShift。您可以在我们的参考手册中了解更多关于 SCDF 架构的信息。
此版本中的显著功能包括:
一个流 DSL,它将数据管道描述为单个应用程序的有向图。
对命名目标的 DSL 支持,允许您使用流定义中的任何“管道”来使用事件。这被称为点击流。您还可以组合来自多个流的输出。
一个部署清单,允许您定义单个应用程序的资源使用情况(CPU、磁盘、内存)以及应用程序的实例数量和如何分区数据。您还可以在部署时传递任意应用程序属性。
支持将应用程序打包为 Spring Boot uber-jar 或 Docker 镜像。
支持部署使用 Spring Cloud Stream 构建的用于处理无限量数据的长期运行流应用程序和 Spring Cloud Task 构建的用于处理有限数据集然后终止的应用程序的数据微服务。反过来,这些都基于 Spring Boot。
一个带有制表符自动完成功能的 shell 应用程序,用于创建、部署和监视流和任务。
一个 HTML5仪表盘,允许您创建、部署和监视已部署的流和任务。
用于 Spring Cloud Data Flow 的 Flo:一个流定义的可视化设计器,它还支持一个可脚本化的转换处理器,该处理器接受 Ruby、Groovy、Python 或 Javascript 代码以进行运行时计算逻辑。
支持基本的 HTTP 和 OAuth 2.0身份验证。
使用具有 HTTP 端点(用于访问计数器值)的字段值和聚合计数器的“NoSql”风格实时分析。计数器数据由 Redis 支持。
Spring Cloud Stream 应用程序支持 RabbitMQ 和 Kafka 0.8
Spring Boot 应用程序属性的白名单为 shell/UI 提供信息,以显示首选的引导属性集,以便显示代码完成和应用程序信息。
Spring Cloud Data Flow 已经开发了大约一年,它发展自之前的项目 Spring XD,该项目具有类似的目标,即简化流式和批处理应用程序的开发。我们通过这种经验学到了很多东西,Sabby Anandan 在这篇博客文章中对此进行了很好的描述。
一个主要的架构变化是用可插拔的部署服务提供程序接口替换了我们自己的应用程序运行时。虽然 Spring Cloud Data Flow 1.0 正式版中花费的大部分工程时间都在进行这种架构上的转变,但我们现在处于一个非常有利的位置,可以继续在这个基础上增加更高级别的价值,而不必花费时间开发核心运行时功能。以下是团队集体思考的一些想法:
通过依赖流或任务应用程序的组件为“仅应用程序”,我们可以利用许多其他 Spring Cloud 项目,例如 Spring Cloud Sleuth 来收集分布式应用程序中的响应时间。
与Spinnaker集成,以处理应用程序的持续部署/升级的责任,因为 Spinnaker 将“处理应用程序”作为其货币单位,并且可以使用诸如响应时间之类的来做出自动升级到应用程序新版本的决定。
多语言部署,我们希望部署超过 Java Spring Boot 应用程序。我们将首先考虑部署 Python 应用程序,因为许多数据科学团队使用 Python 来开发需要实时评估的模型。
从 Spring XD 中恢复任务 DSL 和 UI 设计器。
由于 Spring Cloud Data Flow 与 Spring Cloud Stream 和 Spring Cloud Task 的发布生命周期分离,因此当这些项目发布新功能时,SCDF 可以立即使用它们。值得一提的是 Spring Cloud Stream 的一些令人兴奋的功能包括对 Project Reactor 和 Kafka Streams API 的支持,以及对 Kafka 0.9、Google Cloud Pub/Sub、Azure Event Hubs 和 JMS 的绑定支持。对于 Spring Cloud Task,计划支持 Cloud Foundry 上最新的 Task 功能。查看这两个项目的路线图以了解更多详细信息。
有关功能、错误修复和改进的完整列表,请参阅已关闭的 1.0 正式版 GitHub 问题。
我们欢迎反馈和贡献!如果您有任何问题、评论或建议,请通过GitHub 问题、StackOverflow或在 Twitter 上使用 #SpringCloudDataFlow 标签告知我们。
SpringOne Platform 即将到来。除了涵盖 Spring Cloud Data Flow 和相关项目的多个会议外,还将举行为期两天的培训课程。整个 Spring Cloud Data Flow 团队都将出席,期待在那里见到您!