批处理程序是任何企业IT环境的传统且必不可少的组成部分。 当前批处理的发展趋势是利用在线和批处理程序的内部Java技能来确保:

  • 最大限度地重复使用执行。
  • 由于使用了相同的工具集,因此更易于开发和维护。
  • 在执行企业标准和服务质量方面保持一致。

IBM已经开发了提供一致的批处理程序管理范例的解决方案。 IBM WebSphere Application Server的Modern Batch功能(在WebSphere Application Server V8,适用于Modern Batch的WebSphere Application Server V7.0功能包和IBM WebSphere Extended Deployment Compute Grid V8.0中提供)提供了一个批处理中间件框架,该框架提供:

  • 容器管理的批处理作业的执行:提供Java批处理应用程序所需的结构和支持功能,并帮助您避免“自定义中间件陷阱”。
  • 作业控制界面:一个XML文件,描述了批处理步骤中使用的Java类文件以及批处理作业中包含的步骤。
  • 作业检查点和重新启动功能:能够基于记录计数或时间创建检查点的功能 。 这样可以从已知的检查点重新启动作业。
  • 通用批处理数据流(BDS):包含将数据抽象为易于访问的记录格式的功能,以便批处理编程可以专注于业务功能,而不是用于读取和写入数据的基本代码。

拥有这样的框架为开发自定义批处理中间件提供了一种受欢迎的替代方法,并使开发人员可以专注于实现核心业务目标。 使用Modern Batch,开发批处理应用程序简化为简单地编写作业的业务逻辑。 业务逻辑和“管道”代码之间的这种关注分离是批处理框架的重要优势。 它实现了批处理功能的更有效的模块化,从而可以更好地重用,并且能够将批处理公开为模块化服务。

现代批处理支持两种批处理编程范例:

  • 计算密集型:对于执行计算密集型工作且不需要重新启动功能的简单作业。
  • 事务批处理:适用于需要容器管理的检查点和重新启动机制的作业。 如果计划内或计划外的中断中断了批处理作业,则可以从最后一个检查点重新启动批处理作业。

本文着眼于计算密集型模型,并提供了使用IBM Rational Application Developer v8中提供的新功能的示例实现。

请参阅相关的话题上一批平台的重要性的详细信息,对现代批中间件框架的细节,和WebSphere的作用Extended Deployment的计算网格。

计算密集型编程模型

计算密集型编程包含以下元素:

  • 控制器bean:无状态会话bean,它使运行时环境可以控制应用程序的作业。 此无状态会话bean(CIControllerBean)的实现由应用程序服务器提供。
  • 作业步骤实现类:作业步骤表示要由作业执行的业务逻辑。 它由实现com.ibm.websphere.ci.CIWork接口的类的实例表示。 CIWork界面包含以下方法:
    • CI作业运行时将执行run()方法。
    • 提供了getProperties()setProperties()方法以通过客户端的属性获取输入值。
    • 当作业需要在执行过程中被客户端中断时,调用release()方法。
    • 如果工作是长期的,那么isDaemon()方法将返回“ true”。
  • xJCL文件:基于XML的配置文件,提交给作业调度程序以运行。 作业计划程序使用此文件中的信息来确定作业在何处以及何时运行,其输入和输出。 作业的xJCL定义不属于批处理应用程序。

图1显示了计算密集型编程模型。 (这是实际编程模型的简化版本,将在第2部分中详细讨论。)

图1.计算密集型编程模型

要开发计算密集型工作,您需要:

  1. 定义xJCL文件。
  2. 创建用于实现CIWork接口的Java类,以及用于每个作业步骤的业务逻辑。
  3. 正确包装CIWork,并使用无状态会话bean指向com.ibm.ws.ci.CIControllerBean作为实现类。

在构建示例计算密集型作业之前,重要的是首先了解运行时间上计算密集型应用程序的行为。 总而言之,发生的事情( 有关更多详细信息,请参阅参考资料)是,应用程序服务器使用xJCL文件查找并调用控制器bean。 Bean读取xJCL文件,对于xJCL中的每个作业步骤,Bean:

  • 使用CIWork类的无参数构造函数实例化由作业的xJCL中的类名元素指定的应用程序CIWork对象。
  • 调用CIWork对象的setProperties()方法以传递在xJCL中为作业步骤定义的任何属性。
  • 查找在企业bean模块的部署描述符中定义的工作管理器,并使用它异步调用CIWork对象的run()方法。

了解了编程模型之后,让我们看一下开发计算密集型应用程序的步骤。

示例业务场景

相关产品和版本

此处提供的示例是使用Rational Application Developer V8.0开发的,并已部署在WebSphere Application Server V8.0上。 用于WebSphere V8和更高版本的Rational Software Architect也提供了用于开发批处理程序的工具支持。 WebSphere Application Server V7.0.0.11和更高版本中具有Modern Batch功能包提供了对Modern Batch的运行时支持,并且在V8中作为集成组件提供了对它的运行时支持。

在此示例场景中,企业是一个金融组织,在不同的州都有许多分支机构。 组织的客户将申请提交给分支机构进行处理。 计算密集型应用程序示例将生成一个报告,其中总结了每个州的应用程序数量以及组织的其他指标。

要开发此应用程序:

  1. 在Rational Application Developer中,通过导航到File> New> Batch Project来创建一个名为dWSampleBatch新批处理项目完成后单击Finish (图2)。 这还将创建一个EJB项目,其中包含无状态会话Bean和EAR项目。

    图2.创建一个新的批处理项目
  2. 现在,您已经设置了项目,您需要为该批次创建作业定义。 右键单击刚创建的新批处理项目中的xJCL文件夹,创建批处理作业定义,然后选择“ 新建”>“批处理作业” (图3)。
    图3.创建一个新的批处理作业
  3. 为作业类型选择Compute IntensiveSummaryReportJob为作业名称输入SummaryReportJob (图4)。 单击下一步
    图4.创建xJCL文件
  4. 在“创建批次步骤”面板上,输入SingleStep作为步骤名称,然后为作业步骤模式选择默认的预定义CI Work (图5)。 CI Work模式可确保Job Step类按照计算密集型编程模型的要求实现CIWork接口。
    图5.创建批处理步骤
  5. 现在,您需要为CIWork接口创建实现类。 创建SummaryReport类,该类将实现CIWork并具有满足业务需求的逻辑,在这种情况下,该逻辑将创建摘要报告。 单击Create Class按钮创建实现类(图5)。 输入详细信息,如图6所示,然后单击Finish
    图6.创建批处理步骤实现类
  6. 您将返回到“批处理步骤创建”面板。 下一步是为批处理作业程序SummaryReport.java创建参数。 通过选择Add (每个),然后单击 Finish (图7),创建下面列出的两个Required Properties。
    • InputFileLocation:保存要处理的数据的输入文件的位置。
    • OutputFileLocation:保存输出摘要报告文件的位置。

    批处理作业向导结束,并在xJCL文件夹中创建了SummaryReportJob.xml文件(在步骤3中指定)。

    图7.添加必需的属性
  7. 上一步中创建的“必需属性”可以用值进行硬编码,也可以在运行时通过xJCL文件传递。 对于此样本,它们将通过xJCL文件传递。 为此,请双击xJCL文件夹下的SummaryReportJob.xml文件。 这将在xJCL编辑器中打开XML作业定义文件,如图8所示。
    图8.编辑xJCL文件
  8. 您想在运行时通过xJCL传递文件位置的值。 您可以使用“替换属性”来执行此操作,该属性使您能够创建可在xJCL中使用的默认名称/值对。 通过单击Add ,然后在Add Item对话框中选择Substitution Properties,创建Substitution Properties,然后单击OK (图9)。
    图9.添加替换属性
  9. 在Substitution Properties对话框中添加下面列出的属性,然后单击Finish (图10)。
    • inputFile:分配默认值C:\\InputFile.txt
    • outputFile:分配默认值C:\\OutputFile.txt
    图10.添加替代属性
  10. 在xJCL编辑器中,使用相应的替换属性更新所需的属性值(图11):
    • InputFileLocation到${inputFile}
    • OutputFileLocation到${outputFile}

    通过执行此操作,您现在已将在作业定义中定义的必需属性与替换属性链接在一起。 这使您可以在运行时传递实际文件位置。

    图11.更新所需的属性
  11. 您可能已经注意到,Rational工具也会生成EJB和EAR项目。 查看EJB项目,以确保将资源引用正确设置为CIWorkManager 。 在EJB绑定编辑器中,通过双击EJB项目下的ibm-ejb-jar-bnd.xml文件来执行此操作(图12)。 现在已配置批处理作业。
    图12.验证资源参考
  12. SummaryReport.java实现了以下业务逻辑:读取数据文件(InputFile.txt),准备报告,然后将其写入输出文件(OutputFile.txt)。 使用SummaryReport.java文件以及本文随附的文件进行下载以实现此业务逻辑。 另外,将InputFile.txt文件放置在为输入文件位置选择的目录下,以便Summary程序可以读取它。 现在您可以部署和测试批处理应用程序了。

运行样本

部署选项

在这里,示例应用程序将从Rational Application Developer部署和运行。 在第2部分中,当讨论事务批处理时,将演示在应用程序服务器上的部署,以及从各种接口(如作业管理控制台,EJB客户端,Web服务客户端或命令行)调用作业的过程。

要从Rational Application Developer运行样本:

  1. 右键单击dWSampleBatchEAR,然后选择运行方式>在服务器上运行 。 选择您要使用的服务器,然后单击Finish (图13)。

    图13.在服务器上运行批处理应用程序
  2. 要将xJCL提交到服务器运行时,请右键单击SummaryReportJob.xml文件,然后选择“运行方式”>“现代批处理作业” (图14)。
    图14.提交xJCL作业
  3. 如果在此服务器上启用了安全性 ,请选中此框并输入有效的用户ID和密码。 如果将inputFile.txt文件放置在C:\\ InputFile.txt以外的其他位置,请使用新值更新该位置。 点击运行 。 作业将提交到服务器运行时,并在Modern Batch Job Management Console中打开作业日志文件(图16)。
    图15.修改替换属性
    图16.作业日志
  4. 要查看正在运行的作业的日志,可以通过在服务器视图中右键单击服务器运行时并选择Modern Batch Job Management Console或使用URL,来访问Modern Batch Job Management控制台: http://<hostname>:<wc_defaulthost port>/jmc/console.jsp 该控制台旨在管理批处理作业,并有意与WebSphere Application Server管理控制台保持隔离,因为操作批处理环境和管理中间件基础结构是两件事。 图17显示了Modern Batch Job Management Console,它提供了许多用于管理作业的功能。
    图17.现代批处理作业管理控制台
  5. 运行完成后,提交的作业应在C:\\ outputFile.txt中生成一个摘要报告,作为文件,包括测试。

结论

WebSphere Application Server的现代批处理功能提供了一个强大的批处理框架,使您能够以最少的精力开发批处理程序。 作为WebSphere Application Server的一部分,该解决方案内置了WebSphere产品提供的可靠性。 它提供了一个基于Java的简单编程模型,使您可以利用Java技能来构建可靠的批处理程序,而无需重新发明该框架。 它还为IT经理提供了将作业移至托管WebSphere Application Server环境的机会。

第2部分将讨论事务批处理编程模型,并给出另一个工作示例。

致谢

作者感谢Edward McCarthy审阅本文并提供了宝贵的意见。


翻译自: https://www.ibm.com/developerworks/websphere/techjournal/1203_narain/1203_narain.html

pb模型多batch_介绍Modern Batch和计算密集型编程模型相关推荐

  1. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存

    使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...

  2. 寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)

    使用randomsearchcv寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲线.AUC ...

  3. MPI并行程序开发设计----------------------------------并行编程模型和算法等介绍

    ---------------------------------------------------------------------------------------------------- ...

  4. Apache SparkStreaming 简介和编程模型

    1. 简介 图5.22 SparkStreaming[16] Spark Streaming是Spark API核心扩展,提供对实时数据流进行流式处理,具备可扩展.高吞吐和容错等特性.Spark St ...

  5. [你必须知道的异步编程]——异步编程模型(APM)

    本专题概要: 引言 你知道APM吗? 你想知道如何使用异步编程模型编写代码吗? 使用委托也可以实现异步编程,你知道否? 小结 一.引言 在前面的C#基础知识系列中介绍了从C#1.0--C#4.0中一些 ...

  6. 带你体验云原生场景下 Serverless 应用编程模型

    简介: 阿里云 Knative 基于 ASK 之上,在完全兼容社区 Knaitve 的同时对 FC.ECI 工作负载进行统一应用编排,支持事件驱动.自动弹性,为您提供统一的 Serverless 应用 ...

  7. ibm mq 编程_IBM SOA编程模型简介

    ibm mq 编程 SOA编程模型系列 对于任何一个程序员,尤其是非程序员,要有效地掌握和应用令人震惊的软件技术,实践,工具和平台,变得越来越困难. 但是,如果要成功进行业务流程转型,则大量的非程序员 ...

  8. [转]搜索引擎的文档相关性计算和检索模型(BM25/TF-IDF)

    搜索引擎的检索模型-查询与文档的相关度计算 1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是 ...

  9. 面向大数据处理的数据流编程模型和工具综述

    点击上方蓝字关注我们 面向大数据处理的数据流编程模型和工具综述 邹骁锋, 阳王东, 容学成, 李肯立, 李克勤 湖南大学信息科学与工程学院,湖南 长沙 410008 论文引用格式: 邹骁锋, 阳王东, ...

  10. [导入]WCF后传系列(8):深度通道编程模型Part 1—设计篇

    摘要: 从本质上说,WCF是一个通信服务框架,它允许我们使用不同的传输协议,使用不同的消息编码形式,跟不同的WS-*系列规范交互,而所有这些细节都是由通道堆栈来处理的.为了简化这些处理,在WCF中提供 ...

最新文章

  1. 2022-2028年中国钽酸锂单晶行业市场调查分析及投资发展潜力报告
  2. Springboot .properties或.yml配置文件读取pom.xml文件值
  3. NLP的一些学习资料
  4. 边工作边刷题:70天一遍leetcode: day 92
  5. 自己收藏的symantec 需要的拿走
  6. [python opencv 计算机视觉零基础到实战] 十一找到图片中指定内容
  7. 基本的二分查找、寻找第一个和最后一个数的二分查找
  8. PHP foreach 小结
  9. SAP License:用科学发展观认识会计
  10. 分享实录+PPT | 高通高级技术标准总监李俨:移动车联网技术解析
  11. 如何修改搜索框中的cancel button的颜色
  12. Apache静态缓存配置
  13. 在vue中实现在线代码编辑器(lua) - ace/codemirror/monaco-editor
  14. 事业单位计算机技术岗工资,事业单位待遇,是管理岗好还是技术岗好?
  15. 小时候玩过的游戏之十八——丢沙包
  16. egret 微信小游戏 分享游戏截图
  17. linux在线文档库
  18. Postgresql学习笔记之——SQL 执行计划
  19. 【关系抽取】TPLinker:单阶段联合抽取,并解决暴漏偏差
  20. 引入jquery不起作用 原因

热门文章

  1. iTunes恢复备份时失败?3个常见原因
  2. 高德地图获取经纬度工具类
  3. 经验分布函数(Empirical Distribution Functions)
  4. 陀螺仪加速度计MPU6050
  5. java 汉字转拼音缩写_用JAVA实现汉字转拼音缩写
  6. 电脑键盘出现计算机,电脑上出现了键盘怎么办
  7. 被远程之后,键盘失灵问题
  8. 优达前端课程免费分享
  9. c语言逻辑运算符用法大全,C语言之逻辑运算符(示例代码)
  10. 官方通知:考研国家线预计4月中旬公布