【问题标题】:Advantages of spring batch [closed]弹簧批的优点[关闭]
【发布时间】:2015-01-11 19:17:59
【问题描述】:

我了解 Spring Batch 框架以块的形式处理数据。但是,我在想,当相同的分块功能可以通过 java 实现时,为什么我们需要使用批处理框架。

如果有更多的理由去 Spring Batch 框架,请告诉我?

【问题讨论】:

  • 你不会在 java 中获得可重启性、监控和整批基础设施。当然,你可以用纯 java 做任何事情,但你愿意吗?
  • 为什么要关闭这个问题? @M.Deinum 当然是基于意见的,但我想听听人们的意见以做出自己的决定!毕竟,我们分享我们的经验。这个问题困扰你还是什么...

标签: spring spring-batch


【解决方案1】:

让我稍微改一下你的问题,看看这是否解决了它。

Spring Batch 提供了我在构建批处理应用程序时必须自己处理的哪些内容?

Spring Batch 是 JSR-352(java 批处理规范)的基础,自从该规范发布以来,java 空间中现在有很多可用的 Spring Batch。话虽如此,Spring Batch 仍然提供了很多超出基本 Java 功能的功能:

在“基本”批处理作业中

在一个简单的批处理作业范围内,Spring Batch 提供了一组实用程序和实现,这些实用程序和实现已经在所有企业垂直领域进行了实战测试。一些例子是:

  • 超过 17 个ItemReader 和 15 个ItemWriter 实现,涵盖大量输入和输出选项(文件、JDBC、NoSQL、JMS 等)。所有这些都提供了声明式 I/O 选项,因此您不必为有状态的读取器和写入器编写和测试代码。
  • Tasklet(Spring Batch 相当于 JSR-352 的 Batchlet)实现的集合,包括用于执行 shell 命令和与 Hadoop 交互的实现。
  • 能够停止/启动/重新启动作业并在执行之间保持状态。
  • 在处理记录时跳过和重试记录的能力。
  • 事务管理。 Spring Batch 为您处理事务。
  • 通过集成 Spring Integration 在发生错误时通知其他系统的能力。
  • 基于 Java 或 XML 的配置。
  • 所有 Spring 特性,如 DI、AOP、可测试性等。
  • 供应商独立性 - 通过使用 Spring Batch,您可以使用开源且不依赖于任何供应商的框架。

其他优势

除了上述 Spring Batch 带来的示例之外,它还走得更远:

  • 可扩展性选项 - Spring Batch 提供了许多可扩展性选项,范围从单个 JVM 内通过线程(多线程步骤、本地分区和拆分)到多 JVM 可扩展性(远程分区和远程分块)。
  • 与 Spring Integration 集成 - Spring Integration 提供了许多有用的元素,可让您构建强大的批处理应用程序来处理错误消息、文件轮询目录、自动 FTP 文件等。
  • 大数据支持 - 通过 Spring for Apache Hadoop 项目,Spring Batch 有许多扩展,使其能够很好地与 Hadoop 一起工作。您可以在 YARN 上运行 Spring Batch 作业,可以执行 Pig、Hive、MapReduce 等作业。
  • 与 Spring XD 集成 - Spring XD 为批处理作业的部署、管理和执行提供分布式运行时。

我个人将批处理视为“一劳永逸”的编程模型。虽然它并不性感,但批处理是一种非常有用的处理模型,并且在某些地方比大多数人意识到的更有用。 Spring Batch 提供了一个环境,可以尽可能轻松地开发健壮的批处理作业。

【讨论】:

  • Spring Batch Admin - 即使不是核心批处理框架的一部分。批处理管理应用程序非常有用,它提供了一个基本的 UI,它不仅为您的作业提供了一个视图,还允许您执行基本操作,如启动、停止、重新启动。也可以随心所欲地增强此应用程序。
  • Spring Batch Admin 已被删除以支持 DataFlow。后者不能在“云”的东西之外使用。所以目前没有任何预构建的 Spring Batch 仪表板。
猜你喜欢
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2010-10-21
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多