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 版本中,我们提供了独立更新源、处理器和 sink 的能力,而无需取消部署并重新部署整个流。

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

当请求更新流中的应用时,只会更新需要更改的应用。执行简单的红/黑更新,设计依赖于与新应用相关的 Spring Boot 健康检查端点。通过跟踪部署,Skipper 还可以回滚到流的先前版本。

以下新的 Data Flow 命令展示了将 log sink 从 1.1.0 版本更新到 1.2.0 版本,然后回滚到 1.1.0 版本的基本生命周期。这假设 log sink 的 1.1.0 和 1.2.0 版本都已作为 Maven Artifacts 部署。请注意,在对 log sink 进行更改的整个过程中,HTTP source 应用始终保持部署状态。

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 管理流部分详细介绍了此过程。

Java DSL

作为使用 Shell 的替代方案,新增的 Java DSL 提供了一种编程方式,可以使用 fluent API 创建、部署或启动流。您现在可以编写应用并将其与代码 artifacts 一起置于版本控制下进行管理,而无需通过向 Shell 传递脚本文件来将流部署到生产环境。

Java DSL 提供两种创建 StreamDefinition 的方式。

  • “定义”风格保留了在 Shell 中使用 pipes and filters 文本 DSL 的感觉。在设置流名称后,使用 definition 方法即可选择此风格,例如:

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

  • “fluent”风格允许您通过传递 StreamApplication 的实例来链式连接源、处理器和 sink,例如:

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

虽然这种方法乍一看与定义风格没有太大区别,但它允许您通过在应用上下文中将 StreamApplication 实例声明为 Spring Bean 来在多个流中重用它们。

有了 StreamDefinition 实例,您就可以部署流了。

Stream stream = streamDefinition.deploy();

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

参考指南的Java DSL 部分更全面地介绍了该 DSL,并且 Spring Data Flow Samples 仓库提供了一个工作示例,供您在自己的项目中开始使用。

基于 HTTP 资源的 App 解析

以前,任何注册为 HTTP 资源的应用都会被 Data Flow 服务器下载一次然后缓存。虽然理论上这优化了部署时间,因为已存在的应用不会被多次下载,但在实践中,HTTP 资源常用于开发自定义流应用的早期阶段。在这种操作模式下,artifact 的文件名(包含版本号)不会改变,即使应用代码发生了变化。要想看到新代码运行,就需要手动增加版本号,这在早期开发阶段不够直观。

为了适应这种用例,Data Flow 服务器现在总是下载基于 HTTP 的资源。为了防止磁盘空间无限增长,使用了 LRU 缓存来删除已下载的资源。此功能还允许您通过 HTTP 资源引用从 Maven 仓库下载名为 SNAPSHOT 的 artifact,并始终获取最新的代码。总之,这进一步简化了开发体验,特别是在业务逻辑正在积极迭代时。

仪表盘 / Flo

我们很高兴地宣布,此版本实现了 SCDF 仪表盘的功能对等。旧 UI 栈中支持的所有功能都被移植并升级到 Angular 4.0 栈。流、任务、作业、分析、运行时和应用等标签页功能齐全。用于流和复合任务的 Spring Flo 设计器也已投入使用并功能完备。对于好奇者,我们还以 NPM 包的形式发布了 Spring Flo 的核心库

版本兼容性

此版本兼容 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 社区的所有近期活动。

查看全部