走在前沿
VMware 提供培训和认证,助您加速进步。
了解更多我代表团队很高兴地宣布 Spring Cloud Data Flow 1.3 在多个平台上正式发布。
请遵循以下快速入门指南,了解如何在 本地服务器、Cloud Foundry 和 Kubernetes 上使用。
作为一系列微服务应用程序编排的流式数据管道一直是 Spring Cloud Data Flow 设计的核心价值。在 Data Flow 1.3 中,我们提供了独立更新源、处理器和接收器而不必取消部署和重新部署整个流的功能。
流更新和回滚功能是通过将部署过程委托给一个名为 Skipper 的新的 Spring Cloud 项目来实现的。Skipper 是一个轻量级的 Spring Boot 应用程序,专门用于填补 Data Flow 中的这一功能空白。Skipper 定义了一种包格式,类似于 helm
或 brew
,并且还可以将应用程序部署/取消部署到多个云平台:本地、Cloud Foundry 和 Kubernetes。它使用自 Data Flow 创建以来一直存在的相同 Spring Cloud Deployer 库。SpringOne 2017 上的近期演示文稿 介绍了 Skipper 以及 与 Data Flow 的集成,提供了更深入的探讨。
部署流时,Data Flow 会创建一个 Skipper 包,其中描述了流以及流定义中包含的应用程序。然后,Skipper 将应用程序部署到所需的平台。请求流更新时,只需自动重新部署需要更改的应用程序。由 Spring Statemachine 实例管理的简单策略执行更新或回滚步骤。
Data Flow 包含新的流命令来执行升级和回滚操作。
dataflow:>app register --name transform --type processor --uri maven://com.eg:transformer:0.0.1
dataflow:>stream create mystream --definition "jdbc | transform | mongodb"
dataflow:>app register --name transform --type processor --uri maven://com.eg:transformer:0.0.2
dataflow:>stream update mystream --properties “version.transform=0.0.2”
dataflow:>stream rollback mystream
在此系列命令中,流使用 transformer 的 0.0.1 版本进行部署。jdbc
和 mongodb
源和接收器已注册。然后将流更新为使用 transformer 的 0.0.2 版本。仅更新 transform
应用程序,部署 0.0.2 版本,取消部署 0.0.1 版本。jdbc
和 mongodb
应用程序保持不变。回滚命令执行相反的操作,将流恢复到 transformer 为 0.0.1 版本的状态。
注意:要使用 Data Flow 和 Skipper,必须在 Data Flow Server 和 shell 中启用 Data Flow 的 Skipper 功能切换。
DataFlowTemplate 类一直是以编程方式部署流和任务的主力军。但是,它是一个相当底层的 API。我们添加了一个新的流畅风格的 API 来创建、部署或启动流,该 API 更易于使用,并且还支持跨多个流重用 StreamApplication 实例。
StreamApplication source = new StreamApplication("http") .addProperty("server.port", 9900);
StreamApplication processor = new StreamApplication("filter") .addProperty("expression", "payload=='good'");
StreamApplication sink = new StreamApplication("log");
Stream simpleStream = streamBuilder.name("simpleStream") .source(source) .processor(processor) .sink(sink) .create() .deploy();
使用 Stream 实例,您可以查询流的状态、取消部署或销毁流。
参考指南的 Java DSL 部分 提供了对 DSL 的更完整介绍,而 Spring Data Flow Samples 存储库提供了一个 示例,供您在项目中开始使用它。
Data Flow 仪表板已更新为利用 Angular 4 并与 Pivotal UI 样式保持一致。主要重点是始终如一地使用域模型类而不是纯 JSON 字符串。这允许更细粒度地控制应用程序的状态,例如在从分页列表转换到详细信息页面并返回时。使用 Compodoc 对 UI 文档 也有所改进。
扇入是指多个源都将数据发送到同一消息传递目标。扇出是指在运行时确定消息传递目标。此视频显示了具有这些拓扑结构的流的 UI 实际效果。
有一个新的 UI 控件可直接从特定节点分支到 "分支流",以及另一个新的 UI 控件来管理 命名目标。这些新功能使构建复杂的流拓扑变得更加容易。
将 应用程序注册为 Maven 工件 的用户现在可以利用“update-policy”功能来覆盖和刷新 Spring Cloud Data Flow 的内部 Maven 缓存。例如,在开发过程中,您可以通过设置 update-policy=always
来持续解析 Maven 工件的 SNAPSHOT 版本,这将强制下载 DSL/Dashboard 中使用的流式或批处理/任务应用程序的最新版本。
根据用户反馈,使用 http
资源注册的应用程序将始终被下载,而不是缓存。这有助于更新代码(但不是名称)的开发周期,这些代码是托管在 Web 服务器上的应用程序的 uberjar。
在 Skipper 模式下,可以注册多个应用程序版本。部署流时会使用默认版本。您可以使用新的命令 app default
设置默认版本。但是,在升级流中的应用程序版本时,必须先在 Data Flow 中注册它。
此版本为流和任务/批处理名称以及其他元数据添加了“自动完成”功能。无需再猜测 - 所有内容都可以通过按 Tab 键访问!请查看以下 屏幕截图,以了解有关高级 Shell 功能、提示和技巧的更多信息。
SCDF 初始支持运行函数是通过使用函数运行器应用程序来实现的。在使用 Spring Cloud Function 应用程序创建流时,您需要传入函数的类名和 jar 文件位置。
dataflow:> stream create foo --definition "http | function-runner --function.className=com.example.functions.CharCounter --function.location=file:///home/john/myfunction.jar | log"
您可以使用一个示例来体验此功能。简化 Spring Cloud Functions 的部署,使其无需用户显式调用 function-runner
,这一目标已列入我们的路线图。
MQTT 源 和 MQTT 宿 应用程序可以与 IoT 设备交互。
TensorFlow 处理器 可以帮助进行实时预测模型评估。查看其Twitter 情感 模型预测的使用案例,以获得一些了解。
为了增强数据科学功能,现在还提供了 Python-HTTP 和 Python-Jython 处理器。
新的 bit.ly 链接,Celsius.SR1 和 Clark.GA,可用于批量导入和注册 SCDF 中所有开箱即用的应用程序。
简化 Spring Cloud Functions 的部署,使其无需用户显式调用 function-runner
,这一目标已列入我们的路线图。
Spring Cloud Data Flow 的 Cloud Foundry 磁贴在过去几个月一直处于封闭 Beta 状态。我们根据客户和现场反馈进行了迭代,并准备将其从 Beta 升级到正式的 1.0 GA 状态。此版本自动化了配置(包括指标收集器、Skipper、数据库和消息代理),并在 Cloud Foundry 中实现了端到端 OAuth/SSO 集成。还有许多其他增值功能,敬请关注更集中的讨论、文档 以及指向 Pivotal Network 中磁贴页面的指针 。
一旦拉取请求合并,Spring Cloud Data Flow 的 helm chart 将更新到最新的 1.3 GA 版本。使用此 chart,可以自动配置最新版本的 SCDF 以及配套组件(指标收集器、Skipper、数据库和消息代理),只需使用以下 helm 命令。
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm repo update helm install --name scdf incubator/spring-cloud-data-flow --set rbac.create=tru
与往常一样,我们欢迎您的反馈和贡献,请在Stackoverflow 或 GitHub 或通过Gitter 与我们联系。
请试用一下,分享您的反馈,并考虑为该项目做出贡献!