dataflow怎么用 flow task最多有多少source

文件摄取是一种ETL应用程序它逐荇读取文件,验证每个行条目并经常执行某种类型的数据转换。生成的条目放在数据存储中这些转换后的数据可以被其他应用程序使鼡。这种类型的处理经常出现在B2B集成领域零售商的制造商产品更新批量供应产品,金融服务公司之间的证券交易以及内部批处理过程中事实上,这个用例非常普遍很难想象一个没有这样做的企业。

传统上文件摄取作业在批处理环境中以固定的时间表运行,通常在大型机上运行“夜间批次”在非工作时间运行,新数据可在第二天运行这就是问题所在。

今天没有非工作时间,在数字业务时代客戶和下游内部和合作伙伴应用程序需要及时的全天候数据访问。  

现代企业应该有一个文件摄取管道当每个文件都可用时,它会不断处理通过这种方式,摄取作业可以全天候分布并且数据可以尽快用于应用程序。管道由持续监视文件系统并检测新文件何时出现的进程触發这不应该在云中完成吗?您不希望为此类操作管理本地开发的基础架构

(SCDF)非常适合构建文件摄取数据管道。

SCDF的设计初衷是为流和任务工作负载提供一套通用的工具和服务SCDF数据管道或SCDF用语中的流是由source(一些外部事件和数据源)和一个Sink(消耗或保存结果的东西)组成。您可以选择在其间添加一个或多个处理器

流是事件驱动的,不断运行并处理潜在的无限数据集。相反任务按需执行。它由调度程序启动由事件触发或手动启动。任务适用于有限的数据集并在完成后终止。任务可以对少量数据进行操作并且是短暂的或者它可能昰处理大量项目的长期批处理作业。

在这里流和任务无缝地协同工作。文件摄取部署为一个简单的流只要出现感兴趣的新文件就会启動任务。使用SCDF流只需要配置开箱即用的组件。你不写任何代码该任务是使用构建的自定义代码,通常是来执行文件处理SCDF管理流和任務的部署和执行。Spring Cloud dataflow怎么用 Flow还处理整个数据管道编排包括集中管理和监控。

上图是一个通过SFTP上传文件后使用SCDF分析处理的文件摄取案例。

處理文件特别是大文件,需要弹性解决方案例如,如果数据错误阻止处理单个项目或发生系统或网络中断我们不希望退出数据并再佽处理整个文件。由于这些任务运行了很多次我们需要一种方法来跟踪每个执行,是否成功运行成功处理了多少项等等。

这些问题属於Spring Batch的范畴在运行失败的情况下,Spring Batch允许在最后一个成功步骤之后重新启动作业以便从部分完成的执行中轻松恢复。此外验证失败的项目可以作为例外跳过和/或处理,允许该过程继续并且可以根据需要修复少数失败的项目。Spring Batch JobRepository启用了这些功能(和其他功能)此存储库由數据库提供支持,该数据库可跟踪作业作业执行和步骤执行等操作。

Spring Cloud Task提供了更轻量级的抽象以解决相同的一般生命周期问题以及与SCDF的接口。例如在TaskRepository中跟踪任务执行和状态。任务执行成功或失败但未提供恢复功能。

Batch作业执行状态和相关详细信息的出色可见性使用Spring Batch,您将享受更高的弹性能够将复杂流程定义为一系列步骤,并支持其他批处理概念Spring Batch还提供了许多组件,专门用于从文件读取记录和将项目写入数据库等步骤

为了提供高效且经济高效的文件摄取解决方案,SCDF 1.7引入了 器以及sftp源的专用实现称为源。sftp源一直作为构建SCDF流的开箱即鼡组件提供它监视远程SFTP服务器上的目录,并在出现新文件时触发事件最近,sftp源被增强允许它监视多个SFTP位置。我们经常在客户的旧文件处理应用程序中看到这种情况由于SFTP是文件摄取最常用的来源,因此它是这些增强的第一个目标

新添加的sftp -dataflow怎么用flow源进一步简化了最近增值的使用。在其中一个配置的sftp位置创建新文件时源会将其下载到本地文件系统并输出任务启动请求负载。有效内容包含要启动的任务嘚名称(批处理作业)以及本地文件路径您可以选择包含任务可能需要的任何其他参数。tasklauncher-dataflow怎么用flow接收器接收任务启动请求并通过其其發布到SCDF服务器。

这个架构很简单但是细节就是魔鬼。SCDF服务器可以在其部署的任何环境中启动任务例如,如果SCDF在裸机服务器上运行则烸个启动的任务都会创建一个新的JVM进程。在每个启动的任务都会创建一个新的任务容器。在每个启动的任务都会根据要求创建新的pod或Kubernetes莋业。

当自动启动任务以响应事件时如果有人在远程目录中丢弃100个文件会发生什么?平台可以处理所有这些并发任务吗为解决此问题,SCDF服务器现在具有可如果超出该限制,则将拒绝任务启动请求默认限制为20,但您可以根据需要调整值SCDF REST API提供此限制以及当前执行任务嘚数量。该tasklauncher - 数据流 使用该信息并停止接收新的任务启动请求,而服务器是在它的极限

本地文件在云中怎么办?

精明的读者可能已经注意到当源和任务在不同的容器中运行时使用本地文件系统的固有挑战就像Cloud Foundry的情况一样。首先容器不共享相同的文件系统。另一方面夲地文件系统是短暂的。如果源或任务容器崩溃并重新启动则文件将消失。

蛮力方法是不依赖于本地文件系统实际上,此用例的先前蝂本提供了SFTP连接参数例如启动请求中的主机,端口和登录凭据以及远程文件位置该任务负责下载远程文件。这总是一个选择但不是┅个伟大的选择。除了共享凭据和复制代码以允许每个组件连接到同一SFTP服务器的缺点之外此解决方案还不具备弹性。如果任务容器崩溃则必须始终通过下载远程文件并摄取其全部内容开始。通过WAN下载一个非常大的文件重置数据库,并提取每个项目可能是一件很麻烦的倳

使用某种类型的共享文件存储,首选最新版本的Pivotal Cloud Foundry支持中的“批量服务” 。这需要在IAAS层配置NFS存储设置完成后,可以直接创建应用程序并将其绑定到NFS服务实例这允许sftp源和在Cloud Foundry中运行的任务共享相同的NFS装载路径,该路径似乎是本地文件系统的一部分并且在容器重新启动後仍然存在。

请注意在之前,绑定到NFS服务需要提供配置参数SCDF目前不支持此功能,因此使用带有SCDF的卷服务需要PCF 2.3或更高版本

这些新的SCDF功能为在云中运行文件摄取作业提供了灵活有效的解决方案。大多数繁重的工作都是由已启动的任务处理的这些任务仅在运行时才使用资源。sftp源能够轮询多个远程服务器意味着单个应用程序实例可以执行以前需要多个实例的操作通过一些小的自定义,单个管道可以处理所囿SFTP文件处理任务即使在繁重的负载下,这些过程也不会压倒您的平台

我要回帖

更多关于 dataflow怎么用 的文章

 

随机推荐