Spring Cloud Data Flow 1.3.0.M3 发布

发布 | Mark Pollack | 2017年11月29日 | ...

我们高兴地宣布 Spring Cloud Data Flow 及其相关的项目生态系统发布了 1.3.0.M3 版本。

本地服务器:入门指南

发行亮点

流更新和回滚

作为一系列微服务应用程序编排的流式数据管道始终是 Spring Cloud Data Flow 设计的核心价值。在 1.3.0.M3 中,我们提供了独立更新源、处理器和接收器而不必取消部署和重新部署整个流的功能。

流更新功能是通过将部署过程委托给名为 Skipper 的新 Spring Cloud 项目来实现的。在这篇博客中介绍的 Spring Cloud Skipper 是一个独立服务器,它将 Spring Boot 应用程序部署到多个云平台。它还跟踪已部署应用程序或应用程序的应用程序版本、应用程序属性和部署属性,以便可以在更新请求时计算对这些属性的任何更改。

当发出请求以更新流中的应用程序时,仅更新需要更改的应用程序或应用程序。执行简单的红/黑更新,并且设计依赖于与新应用程序关联的 Spring Boot 健康端点。通过跟踪部署,Skipper 还可以回滚到流的先前版本。

以下新的 Data Flow 命令显示了将日志接收器从 1.1.0 版本更新到 1.2.0 版本,然后回滚到 1.1.0 版本的基本生命周期。这假设日志接收器的 1.1.0 和 1.2.0 版本都已作为 Maven 工件部署。请注意,HTTP 源应用程序在对日志接收器的更改过程中保持部署状态。

dataflow:> app register --name http --type source --uri maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE

dataflow:> app register --name log --type sink --uri maven://org.springframework.cloud.stream.app:log-sink-rabbit:1.1.0.RELEASE

dataflow:> stream create --name httptest --definition "http --server.port=9000 | log"

dataflow:> stream skipper deploy --name httptest

dataflow:> stream skipper update --name httptest --properties version.log=1.2.0.RELEASE

dataflow:> stream skipper rollback --name httptest

文档的入门使用 Skipper 的流部分更详细地介绍了此过程。

JavaDSL

作为使用 Shell 的替代方法,新添加的 JavaDSL 提供了一种使用流畅 API 以编程方式创建、部署或启动流的方法。无需将脚本文件传递到 shell 中即可将流部署到生产环境,您现在可以编写应用程序并将其与其他代码工件一起在版本控制下进行管理。

JavaDSL 提供两种样式来创建 StreamDefinition。

  • “definition”样式保留了在 shell 中使用管道和过滤器文本 DSL 的感觉。此样式是通过在设置流名称后使用 definition 方法来选择的,例如:

    StreamDefinition streamDefinition = Stream.builder(dataFlowOperations) .name("ticktock") .definition("time | log") .create()

  • “fluent”样式允许您通过传入 StreamApplication 的实例来将源、处理器和接收器链接在一起,例如:

    StreamApplication timeSource = new StreamApplication("time"); StreamApplication logSink = new StreamApplication("log"); StreamDefinition streamDefinition = Stream.builder(dataFlowOperations) .name("ticktock") .source("timeSource") .sink("logSink");

虽然乍一看这种方法与 definition 样式似乎没有太大区别,但它允许您通过在应用程序上下文中将它们声明为 Spring Bean 来跨多个流重用 StreamApplication 实例。

使用 StreamDefinition 实例,您可以部署流。

Stream stream = streamDefinition.deploy();

使用 Stream 实例,您可以查询流的状态、取消部署或销毁流。

参考指南的Java DSL 部分提供了对 DSL 的更完整介绍,Spring Data Flow 示例存储库提供了一个可运行的示例,供您在自己的项目中开始使用。

基于 HTTP 资源的应用程序解析

以前,任何注册为 HTTP 资源的应用程序都会被下载一次,然后由 Data Flow 服务器缓存。理论上,这优化了部署时间,因为不会多次下载现有应用程序,但在实践中,HTTP 资源通常在开发自定义流应用程序的早期阶段使用。在这种操作模式下,即使应用程序代码发生更改,包含版本号的工件文件名也不会更改。然后,要看到新代码运行,需要递增版本号,这在开发的早期阶段并不直观。

为了适应这种情况,Data Flow 服务器现在始终下载基于 HTTP 的资源。为了确保磁盘空间不会无限制地增长,使用了 LRU 缓存来删除已下载的资源。此功能还允许您通过 HTTP 资源引用下载来自 Maven 存储库的 SNAPSHOT 命名工件,并始终获取最新的代码。总之,这进一步简化了开发体验;尤其是在积极迭代业务逻辑时。

仪表盘/Flo

我们很高兴地宣布,此版本带来了 SCDF 仪表盘的功能奇偶校验。所有在旧版 UI 堆栈中受支持的功能都已移植并升级到 Angular 4.0 堆栈。流、任务、作业、分析、运行时和应用程序选项卡功能齐全。用于流和组合任务的 Spring Flo 设计器正在运行并且功能完整。出于好奇,我们还将 Spring Flo 的核心库作为NPM 包发布。

版本兼容性

此版本带来了 Spring Boot 1.5.8 兼容性,并且底层 Spring Cloud 基础设施已更新到 Edgware.RELEASE。有关更多详细信息,请查看1.3.0.M3发行说明。

展望未来,我们的目标是在几周内发布 1.3.0 RC1,并在 2018 年 1 月底之前发布正式版。

与往常一样,我们欢迎反馈和贡献,因此请通过StackoverflowGitHubGitter与我们联系。

请试用一下,分享您的反馈,并考虑为该项目做出贡献!

获取 Spring 新闻通讯

随时关注 Spring 新闻通讯

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获得支持

Tanzu Spring在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部