保持领先
VMware 提供培训和认证,助您加速前进。
了解更多我代表团队很高兴宣布 Spring Cloud Data Flow 1.3 已在多种平台上正式发布。
请参阅 本地服务器、Cloud Foundry 和 Kubernetes 的入门指南。
流式数据管道作为一系列微服务应用进行编排,一直是 Spring Cloud Data Flow 设计的核心价值。在 Data Flow 1.3 中,我们提供了独立更新源、处理器和汇的能力,而无需卸载和重新部署整个流。
流的更新和回滚功能是通过将部署过程委托给一个新的 Spring Cloud 项目 Skipper 来实现的。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
在这一系列命令中,流使用了 0.0.1 版本的 transformer 进行部署。jdbc
和 mongodb
源和汇已经注册。然后流更新为使用 0.0.2 版本的 transformer。只有 transform
应用被更新,0.0.2 版本被部署,0.0.1 版本被卸载。jdbc
和 mongodb
应用保持不变。回滚命令执行相反的操作,将流恢复到使用 0.0.1 版本 transformer 的状态。
注意:要使用 Data Flow 和 Skipper,必须在 Data Flow Server 和 shell 中同时启用 Data Flow 的 Skipper 功能开关。
DataFlowTemplate 类一直是程序化部署流和任务的主力。然而,它是一个相当底层的 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 Dashboard 已更新,以利用 Angular 4 并与 Pivotal UI 样式保持一致。一个主要关注点是持续使用领域模型类,而非直接的 JSON 字符串。这使得可以对应用程序状态进行更细粒度的控制,例如从分页列表过渡到详细信息页面再返回时。此外,还改进了使用 Compodoc 的 UI 文档。
扇入(Fan-in)指多个源都将数据发送到同一个消息目的地。扇出(Fan-out)指在运行时确定消息目的地。此视频展示了 UI 在具有这些拓扑结构的流中的实际应用。
新增了一个 UI 控件,可以直接从特定节点分支出去,用于 "tap 一个流",以及另一个新的 UI 控件,用于管理 命名目的地。这些新功能使得构建复杂的流拓扑结构更加容易。
将应用程序注册为 Maven Artifact 的用户现在可以利用“update-policy”功能来覆盖并刷新 Spring Cloud Data Flow 的内部 Maven 缓存。例如,在开发中,您可以通过设置 update-policy=always
来持续解析 Maven Artifact 的 SNAPSHOT 版本,这将强制下载 DSL/Dashboard 中正在使用的流或批量/任务应用的最新版本。
根据用户反馈,使用 http
资源注册的应用将始终被下载而不进行缓存。这有助于开发生命周期中更新托管在 Web 服务器上的应用 uberjar 的代码(而非名称)。
在 Skipper 模式下,可以注册多个应用版本。部署流时使用默认版本。您可以使用新命令 app default
设置默认版本。然而,在流中升级应用版本时,必须先在 Data Flow 中注册该版本。
此版本为流和任务/批量处理名称以及其他元数据添加了“自动补全”功能。无需猜测 - 只需按 TAB 键即可获得一切!查看以下 屏幕录像,了解更多关于高级 shell 功能、技巧和窍门的信息。
通过使用 function-runner 应用,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"
您可以使用一个示例来试验此功能。我们的路线图上包括通过不要求用户显式调用 function-runner
来简化 Spring Cloud Functions 的部署。
MQTT source 和 MQTT sink 应用可以与 IoT 设备交互。
TensorFlow 处理器 可以帮助进行实时预测模型评估。请查看其 Twitter 情感分析 模型预测用法,以了解其作用。
在数据科学能力的基础上,Python-HTTP 和 Python-Jython 处理器现已可用。
新的 bit.ly 链接 Celsius.SR1 和 Clark.GA 可用于批量导入和注册 SCDF 中所有开箱即用的应用。
通过不要求用户显式调用 function-runner
来简化 Spring Cloud Functions 的部署,这已列入我们的路线图。
Spring Cloud Data Flow 的 Cloud Foundry Tile 在过去几个月一直处于封闭测试(closed-BETA)状态。我们根据客户和现场反馈进行了迭代,现已正式从 BETA 阶段毕业,达到 1.0 GA 状态。此版本自动化了配置过程(包括 metrics-collector、skipper、数据库和消息代理),并实现了 Cloud Foundry 中的端到端 OAuth/SSO 集成。还有许多其他增值功能,敬请关注更深入的讨论、文档以及 Pivotal Network 中 Tile 页面的指引。
一旦 Pull Request 被合并,Spring Cloud Data Flow 的 Helm Chart 将更新到最新的 1.3 GA 版本。使用此 Chart,可以利用以下 Helm 命令自动配置最新版本的 SCDF 以及配套组件(metrics-collector、skipper、数据库和消息代理)。
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 与我们联系。
请尝试使用它,分享您的反馈,并考虑为项目做出贡献!