Spring Cloud Data Flow 简介
Spring Cloud Data Flow 介绍1.Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL批量运算和持续运算的统一编程模型和托管服务。 2.对于在现代运行环境中可组合的微服务程序来说spring cloud data flow是一个原生云可编配的服务。 使用spring cloud data flow开发者可以为像数据抽取实时分析和数据导入/导出这种常见用例创建和编配数据通道 data pipelines。 3.Spring cloud data flow 是基于原生云对 spring XD的重新设计该项目目标是简化大数据应用的开发。 Spring XD 的流处理和批处理模块的重构分别是基于 spring boot的stream 和 task/batch 的微服务程序。 这些程序现在都是自动部署单元而且他们原生的支持像 Cloud Foundry、Apache YARN、Apache Mesos和Kubernetes 等现代运行环境。 4.Spring cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。特点1.使用DSLREST-APIsDashboard和 drag-and-drop gui开发 2.独立的创建单元测试故障排除和管理微服务程序 3.使用开箱即用的stream和task/batch应用迅速的构建数据通道 4.把微服务作为maven或者docker的构件 5.在不中断数据流的情况下扩展数据通道 6.在现代运行环境平台上编配以数据为中心的应用程序 7.利用度量健康检查远程管理每一个微服务程序架构Spring cloud data flow 简化了应用程序的开发和部署 将精力集中到数据处理的用例上主要的架构概念在 应用程序、data flow 服务器和目标运行环境上应用程序有两个特点1.周期长的流处理程序通过消息中间件消费和产生连续不断的数据 2.短周期的任务处理程序处理有限的数据集合然后中断取决于运行环境应用程序可以有两种打包方式1.spring boot 打成jar包可以托管在一个maven仓库文件http或者是其他spring资源实现 2.Docker运行环境支持Cloud Foundry Apache YARN Kubernetes Apache MesosLocal Server for development部署商提供了服务接口可以允许你拓展到其他平台Docker Swarm。 Data flow server 负责部署应用程序到运行环境。Data flow server为运行环境提供一个可执行的jar包。Server主要职能1.stream DSL领域特定语言用来描述多个应用数据流的流转逻辑2.部署清单 用来描述应用程序在运行环境的映射初始化实例数量内存配置数据分区多个应用之间的交互是通过消息来实现的支持的消息中间件1.Apache Kafka2.RabbitMQ微服务的架构风格Data flow server部署应用程序到目标运行环境遵从一致的微服务架构风格。举例来说流应用代表了高级别的应用程序 它由多个分别运行在自己进程的小微服务程序组成。每个微独 立于其他微服务进行扩展或者缩减每个服务有自己的版本控制生命周期Streaming 和 task都是基于微服务将spring boot作为基础类库。它让所有的微服务都支持像健康检查安全可配置日志监控和管理以及打包可执行JAR包对比其他架构平台Spring Cloud Data Flow的架构风格不同于其他流处理和批处理平台。例如Apache SparkApache Flink和Google Cloud Dataflow 应用程序运行在特定的计算引擎集群里。相比Spring Cloud Data Flow这些计算引擎原生的给平台提供一个丰富的环境去执行复 杂的数据运算但是在别的运行环境引入复杂性往往是不需要的。这不意味着你用 Spring Cloud Data Flow 就不能做实时数据计算。类似的Apache StormHortonworks DataFlow 和Spring Cloud Data Flow的前身Spring XD,都指定了程序运行集群每个产品的独特性决定了你的代码要在平台上运行并进行健康检查确保长周期应用在运行失败的时候可以重新启动。通常我们为了能正确的嵌入到集群执行框架需要实现框架指定接口。流处理应用然而Spring boot 为创建DevOps(开发运维)友好的微服务提供了基础在spring生态系统中其他类库帮助我们创建基于微服务的流处理程序。其中特别重要的是Spring Cloud Stream。Spring Cloud Stream 编程模型本质是为我们提供简单的方式去描述一个基于消息中间件的通讯的多输入输出应用程序。这些输入输出映射到kafka的topics 或者是 rabbitMq 的 exchange 和 queue上。通常程序配置会作为类库一部分提供一个source用来生成数据一个process 用来消费和生产数据一个sink来消费数据。1.命令式编程模型Spring Cloud Stream 是最紧密的整合了 Spring Integration 的命令事件模型。这意味着你写代码去处理一个单一的事件回调EnableBinding(Sink.class) public class LoggingSink { StreamListener(Sink.INPUT) public void log(String message) { System.out.println(message); } }在例子中字符串消息来自输入频道传送到log方法EnableBinding 注解是 用来将外部消息中间件跟输入频道结合起来。2.功能编程模型Spring Cloud Stream 可以支持其他的编程风格。使用反应式api传入传出的数据被处理为持续的数据流它还定义了如何去处理独立的消息。你也可以使用运算符去描述从入站到出战数据流的功能性转变。在未来的版本将会支持Apache Kafka的KStream API的编程模型。流a)拓扑结构Stream DSL 描述了系统中数据流转送的线性序列。例如在stream定义中 http | transfomer | cassandra 每一个管道符表示链接左右的应用程序.命名的频道可以用来路由或者分发数据到多个消息定义。b) 并发性程序会消费事件Spring Cloud Stream暴露一个并发性设置去控制用来派发传入消息的线程池的大小C) 分区在数据处理中存在一个通用的模式将程序间传送的数据进行分区。分区在状态式处理中是很重要的一个概念无论是性能还是一致性的原因都要保证所有相关数据在一块处理。Spring Cloud Data Flow可以通过配置Spring Cloud Stream的输出输入的绑定来支持分区。Spring Cloud Stream 提供了一个通用的方式用于将不同类型的中间件以统一的方式进行分区处理的用例。因此无论代理是否进行分区都可以实现分区。在Spring Cloud Data Flow中使用简单的分区策略你只需要在部署stream的时候在stream中设置每个程序的实例数量和 partitionKeyExpression 生产者属性。partitionKeyExpression 识别在中间件上的消息的哪一部分用来作为key。一个数据抽取Stream可以定义成 http | averageprocessor | cassandra. 假定要发送给 http source的负载是一个json格式并且有一个字段名字叫 sensorId.用shell命令部署stream stream deploy ingest –propertiesFile ingestStream.properties 。内容为Deployer.http.count3Deployer.averageprocessor.count2app.http.producer.partitionKeyExpressionpayload.sensorId将会部署流所有的数据按照配置的输入输出目标流过程序而且保证独立的数据集合总是被运送到对应的average processor实例。在这种情况下默认算法是评估payload.sensorIdpartitionCount其中partitionCount是RabbitMQ的情况下的应用程序计数以及Kafka情况下的主题的分区计数D) 消息交付保证streams是由使用spring Cloud Steam类库作为与底层消息中间件通讯的基础的程序所组成的。Spring cloud stream 会提供多个供应商的消息中间件进行选择配置。在spring cloud stream 中binder是对程序跟中间件链接的抽象。对消费应用来说在消息处理过程中产生异常会有一个重试的策略。Spring cloud stream 还支持一个为kafka 和rabbitmq binder实现的配置项会将失败的消息和堆栈踪迹发送到一个死信队列其他的消息交付保证是由供生产消费应用选择的消息中间件提供的。分析Spring Cloud Data Flow 了解到某些Sink应用程序会将计数数据写入到redis并且提供一个读取计数数据的REST端。计数器的类型支持Counter 计数接收的消息数量可选择的将计数数据记录到分离的仓库中例如redisField Value Counter 计算消息有效内容中指定字段的唯一值得出现次数Aggregate counter 存储总计数而且还会记录每分钟 每小时 每天 每月的总计数重要的是要注意聚合计数器中使用的时间戳可以来自消息本身的一个字段所以无序的消息也可以被统计Task应用程序Spring Cloud Task 编程模型提供1.Task生命周期时间的持久化和退出状态码 2.生命周期钩子函数在任务执行前后执行 3.在任务周期中发出一个task事件到一个Stream 4.与Spring Batch Job集成Data Flow Server1.端 Data Flow Server使用一个嵌入式的servlet容器并且暴露REST端去创建部署卸载销毁Streams和Tasks查询运行状态数据分析等等。 Data Flow Server的实现是使用spring mvc框架和遵从HATEOAS原则的spring HATEOAS库去创建REST表现 2.定制化 我们提供一个可执行的Data Flow Server jar包指向一个单一的运行环境。Data Flow Server 委托到ClassPath去寻找部署商的SPI实现。 虽然我们为每一个目标运行环境提供了一个可执行jar的服务器, 你也可以使用spring initialzr创建你自己的定制化服务器这可以让你在我们提供的可执行jar包添加或删除相关功。 3.安全 Data Flow Server 可执行jar包支持基于http, LDAP(S), File-based, and OAuth 2.0 authentication 的方式去访问他。运行环境1.容错 Data Flow支持的所有运行环境都应该有在失败后重启应用的能力。 Spring Data Flow在部署程序的时候设置运行环境的健康检查无论如何都是需要的。 应用的集合状态构成了stream的状态。如果一个程序失败了stream的状态将由deployed变成 partial 2.资源管理 每一个运行环境允许你控制分配给每个程序的内存硬盘和CPU。 这个是通过每个运行环境中使用唯一关键名称的部署清单的配置文件。 3.运行时扩展 部署stream时你可以为组成Stream的独立的应用设置实例的数量。 Stream部署后每个目标运行环境允许你控制个别的应用的实例的数量。 使用APIsUIs或者是命令行工具你可以根据需要为运行环境扩展或者是减少实例数量。

相关新闻

强化学习:从自动驾驶汽车到自动驾驶实验室

强化学习:从自动驾驶汽车到自动驾驶实验室

原文:towardsdatascience.com/reinforcement-learning-self-driving-cars-to-self-driving-labs-018f465d6bbc?sourcecollection_archive---------2-----------------------#2024-12-06 理解生物领域中 AI 应用对于机器学习工程师的意义 https://medium.com/megha…

2026/5/17 9:32:04 阅读更多 →
Spring Cloud Nacos配置管理

Spring Cloud Nacos配置管理

Spring Cloud Nacos Nacos全称Dynamic Naming and Configuration Service,它可以用于RPC框架中服务的注册与发现,也可以作为配置中心管理应用的配置. 服务注册与发现 使用过RPC框架同学对服务注册与发现并不陌生,比如Dubbo默认使用Zookeeper作为注册中心…

2026/7/3 12:11:03 阅读更多 →
当学术彻底“放飞自我”,会发生什么?我分析了800篇奇葩论文

当学术彻底“放飞自我”,会发生什么?我分析了800篇奇葩论文

当学术彻底“放飞自我”,会发生什么?我利用Pyhton采集了超过800篇奇葩论文数据,发现了一个极其‘抽象’的学术宇宙。在这里,逻辑是用来放飞的,而格式是用来掩护脑洞的本次数据来自于shit期刊官网,采集了808…

2026/7/3 20:21:56 阅读更多 →

最新新闻

多维聚合三阶段:Pre-In-Post数据操作实战指南

多维聚合三阶段:Pre-In-Post数据操作实战指南

1. 项目概述:多维聚合中的数据操作,远不止GROUP BY那么简单 “Part 20: Data Manipulation in Multi-Dimensional Aggregation”这个标题乍看像是一门数据库课程的第20讲,但如果你真在业务一线做过报表开发、BI建模或数据中台建设&#xff0c…

2026/7/4 11:10:27 阅读更多 →
从低权限SQL注入到RCE提权:完整攻击链与防御策略

从低权限SQL注入到RCE提权:完整攻击链与防御策略

1. 项目概述:从SQL注入到系统沦陷的完整攻击链在渗透测试和网络安全攻防演练中,我们常常会遇到一些看似“鸡肋”的低权限SQL注入点。很多新手可能会觉得,一个只能查询部分数据、无法直接读写文件的注入点,价值有限。但今天我想分享…

2026/7/4 11:10:27 阅读更多 →
ICM-42688-P与PIC18LF47K40在机器人控制与工业监测中的应用

ICM-42688-P与PIC18LF47K40在机器人控制与工业监测中的应用

1. ICM-42688-P与PIC18LF47K40的黄金组合解析 在机器人控制和工业监测领域,传感器与微控制器的选型直接决定了系统性能上限。ICM-42688-P作为TDK InvenSense推出的6轴MEMS惯性测量单元(IMU),其核心价值在于将三轴陀螺仪和三轴加速度计集成在3x3x0.9mm的封…

2026/7/4 11:08:27 阅读更多 →
SPI EEPROM与PIC单片机数据存储检索实战

SPI EEPROM与PIC单片机数据存储检索实战

1. 项目背景与核心器件选型 在嵌入式系统开发中,快速精确的数据检索是一个常见但颇具挑战的需求。25CSM04作为一款4Mbit容量的SPI接口EEPROM,搭配PIC18F86J15这款高性能8位单片机,能够构建一个稳定可靠的数据存储与检索系统。 25CSM04的主要…

2026/7/4 11:06:27 阅读更多 →
Ceph存储池管理开发:openeuler/ceph_dev中存储池配置与优化完整指南

Ceph存储池管理开发:openeuler/ceph_dev中存储池配置与优化完整指南

Ceph存储池管理开发:openeuler/ceph_dev中存储池配置与优化完整指南 【免费下载链接】ceph_dev ceph_dev is a project focus on some feature developing based on ceph 项目地址: https://gitcode.com/openeuler/ceph_dev 前往项目官网免费下载&#xff1a…

2026/7/4 11:04:26 阅读更多 →
Android 7.0+ HTTPS抓包全攻略:从原理到实战,破解网络安全配置限制

Android 7.0+ HTTPS抓包全攻略:从原理到实战,破解网络安全配置限制

1. 项目概述:为什么Android 7.0的HTTPS抓包是个“坎”? 如果你是一名移动端开发、测试或者安全研究员,想在Android手机上抓取HTTPS流量,大概率听说过Charles的大名。这确实是个神器,在Android 6.0及之前的系统上&#…

2026/7/4 11:04:26 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻