`
runfeel
  • 浏览: 935886 次
文章分类
社区版块
存档分类
最新评论

Spring Batch Framework– introduction chapter(上)

 
阅读更多

Bacth processes are hard to write-especially when using ageneral language like Java. Batch jobs run every night, making it easy formillions of people to do things like banking, online shopping, querying billinginformation.

Spring Batch is Java Framework that makes it easy to writebatch applications. Batch applications invlove reliably and efficientlyprocessing large volumes of data to and from various data sources (files,databases, and so on). Spring Batch is great at doing this and provides thenecessary foundation to meet the stringent requirements of batch appliocations.Sir Isaac Newton said, “If I have seen further it is only by standing on theshoulders of giants.” Spring batch builds on the shoulders of one giant inpraticular: the Spring Framework. Spring is the framework of choice for asignificant segment of the Enterprise Java development market. Spring Batchmakes the Spring programming model – based on simplicity and efficiency –easier to apply for batch applications.

What are batch applications? Batch applications processlarge amounts of data without human intervention. You’d opt to use bacthapplications to compute data for generating monthly financial statements,calculating statistics, and indexing files.

The most common scenario for a batch application isexporting data to files from one system and processing them in another. A batchapplication processes data automatically, so it must be robust and reliablebecause there is no human interaction to recover from an error. The greater thevolume of data a batch application must process, the longer it takes tocomplete. This means you must also consider performance in your batchapplication because it’s often restricted to execute within a specific timewindow. Every day, large and complex calculations take place to index billionsof documents, using cutting-edge algorithms like MapReduce. For data exchange,message-based solutions are also popular, having the advantage over batchapplications of being(close to) real time.




The goal of the Spring Batch project is to provide an opensource batch-oritened framework that effectively addresses the most common needsof batch applications.

Spring Batch isn’t a scheduler!

Spring Batch drives batch jobs (we use the terms job, batch,and process interchangeably) but doesn’t provide advanced support to launchthem according to a schedule. Spring Batch leaves this task to dedicatedschedulers like Quartz and cron. A scheduler triggers the launching of SpringBatch jobs by accessing the Spring Batch runtime ( like Quartz because it’s ajava solution) or by launching a dedicated JVM process( in the case of cron).Sometimes a scheduler launches batch jobs in sequence; first job A, and thenjob B if A succeeded, or job C if A failed. The scheduler can use the filesgenerated by the jobs or exit codes to orchestrate the sequence. Spring Batchcan aslo orchestrate such sequences itself; Spring Batch jobs are made ofsteps, and you can easily configure the sequence by using Spring Batch XML.

Should a whole batch fail because of one badly formattedline? Not always. The decision to skip an incorrect line or an incorrect itemis declarative in Spring Batch. It’s all about configuration. Components can trackeverything they do, and the framework provides them with the execution data onrestart. The components then know ehre they left off and can restart processingat the right place.


Spring Batch processes items in chunks. A job reads andwrites items in small chunks. Chunk processing allows streaming data instead ofloading all the data in memory. By default, chunk processing is single threadedand susally performs well. But some batch jobs need to execute faster, soSpring Batch provides ways to make chunk processing multi-threaded and todistribute processing on multiple physical nodes.

Partitioning splits a step into substeps, each of whichhandles a specific portion of the data. This implies that you know thestructure of the input data and that you know in advance how to distribute databetween substeps. Distribution can take place by ranges of primary key valuesfor database records or by directories for files. The substeps can executelocally or remotely, and Spring Batch provides support for multi-threadedsubsteps.

Spring Batch and grid computing

When dealing with large amounts of data—petabytes-a popularsolution to scaling is to divide the enormous amounts of computations intosmaller chunks, compute them in parallel(usually on different nodes), and thengather the results. Some open source frameworks(Haddop, GridGain, andHazelcast, for example) have appeared in the last few years to deal with theburden of distributing units of work so that developers can focus on developingthe computations themselves. How does Spring Batch compare to thesegrid-computing frameworks? Spring Batch is a loghtweight solution: all it needsis the Java Runtime installed, whereas grid-computing frameworks need a moreadvanced infrastucture. As an example, Hadoop usually works on top of its owndistributed fle system, HDFS. In terms of features, Spring Batch provides a lotof support to work with flat files, XML files, and relational database.


分享到:
评论

相关推荐

    Spring Boot 2 Recipes: A Problem-Solution Approach

    Chapter 1: Spring Boot—Introduction Chapter 2: Spring Boot—Basics Chapter 3: Spring MVC Chapter 4: Spring MVC - Async Chapter 5: Spring WebFlux Chapter 6: Spring Security Chapter 7: Data Access ...

    Pro Spring Integration

    #### 三、Spring框架介绍(Chapter 3: Introduction to Core Spring Framework) - **核心概念**:介绍Spring框架的核心概念,包括依赖注入(DI)、面向切面编程(AOP)等。 - **配置管理**:讨论Spring框架中的...

    CANNY 边缘检测Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    【光学】基于matlab菲涅耳衍射S-FFT计算平面波照射下给定波长及距离的衍射场振幅图像【含Malab源码 11032期】.zip

    Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    AI实战-2017-2023年俄罗斯酒精消费量统计数据分析预测实例(含9个源代码+222.83 KB完整的数据集).zip

    AI实战-2017-2023年俄罗斯酒精消费量统计数据分析预测实例(含9个源代码+222.83 KB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:9个代码,共65.56 KB;数据大小:2个文件共222.83 KB。 使用到的模块: pandas seaborn matplotlib.pyplot warnings missingno plotly.express plotly.graph_objects plotly.subplots.make_subplots urllib.request.urlopen json sklearn.preprocessing.StandardScaler sklearn.cluster.KMeans geopandas shapely.geometry.shape os requests folium folium.plugins.MousePosition random numpy sklearn.model_selection.train_test_split sklearn.model_selection.learning_curve sklearn.ensemble.RandomForestClassifier sklearn.metrics.confusion_matrix sklearn.metrics.ConfusionMatrixDisplay sklearn.metrics.accuracy_score sklearn.metrics.precision_score sklearn.metrics.recall_score sklearn.metrics.f1_score sklearn.metrics.roc_auc_score sklearn.metrics.roc_curve sklearn.preprocessing.OneHotEncoder sklearn.preprocessing.label_binarize sklearn.ensemble.GradientBoostingClassifier sklearn.linear_model.LogisticRegression sklearn.svm.SVC sklearn.linear_model.LinearRegression sklearn.ensemble.RandomForestRegressor sklearn.metrics.mean_squared_error sklearn.metrics.r2_score scipy.stats matplotlib scipy.optimize.curve_fit sklearn.inspection.permutation_importance

    基于微信小程序的医院挂号系统设计与实现.docx

    基于微信小程序的医院挂号系统设计与实现.docx

    网络安全领域红队攻防演练的魔鬼训练营:自动化渗透测试与技战法探讨

    聚焦红队知识,内容涵盖多个方面。在魔鬼训练营板块,介绍了 HW 攻击准备工作,包括战略战术、组织分工、分阶段任务以及整体架构和协同机制 。武器平台方面,重点讲解洞鉴 SaaS 专版这一红队攻防演练综合服务产品的功能与优势。前沿技战法中,针对信创国产化产品、金融单位、单点登录和统一身份认证系统等不同场景,分别提出了相应的攻击策略。

    全控整流 MATLAB Simulink 全控整流,电阻负载,电阻电感负载,续流二极管电阻电感负载,角度任意调节

    全控整流 MATLAB Simulink 全控整流,电阻负载,电阻电感负载,续流二极管电阻电感负载,角度任意调节

    igh ethercat主站 zynq igh ethercat 1.5.2 xenomai linux rt preempt 资源占用极少 源码、文档减少您摸索的时间,示例代码简单易懂,提供多轴运

    igh ethercat主站 zynq igh ethercat 1.5.2 xenomai linux rt preempt 资源占用极少 源码、文档减少您摸索的时间,示例代码简单易懂,提供多轴运行示例 仅仅提供电子资料,如果使用的开发板非米联miz702,请联系后再拿 配置如下: 1、单网卡,网卡用于Ethercat通信,程序通过手动拷贝到SD卡中执行 2、提供4.14.0-rt1-xilinx.tar.bz2,已加入preempt实时补丁 3、提供ethercat-1.5.2-linux-4.14.tar.bz2,已完成源码中针对4.14内核进行修订 4、提供编译好的内核uImage、ec_generic.ko、ec_master.ko、libethercat.a、ethercat工具、rt-test(实时性能测试工具) 5、提供编译环境、基于米联miz702平台的BOOT.bin、devicetree.dtb文件 6、提供单从站、双从站、三从站示例代码,提供从站控制代码设计说明文件 7、提供igh Ethercat Master Documentation的中文翻译稿 方案

    Qt编写控件组态属性设计器源码属性设计器产品不包括里面控件的源码 1. 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个 2. 拖曳到画布自动生成对应的控件,所见即所得 3. 右侧

    Qt编写控件组态属性设计器源码属性设计器产品不包括里面控件的源码 1. 自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个。 2. 拖曳到画布自动生成对应的控件,所见即所得。 3. 右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用。 4. 独创属性栏文字翻译映射机制,效率极高,可以非常方便拓展其他语言的属性栏。 5. 所有控件的属性自动提取并显示在右侧属性栏,包括枚举值下拉框等。 6. 支持手动选择插件文件,外部导入插件文件。 7. 可以将当前画布的所有控件配置信息导出到xml文件。 8. 可以手动选择xml文件打开控件布局,自动根据xml文件加载控件。 9. 可拉动滑动条、勾选模拟数据复选框、文本框输入,三种方式来生成数据应用所有控件。 10. 控件支持八个方位拉动调整大小,自适应任意分辨率,可键盘上下左右微调位置。 11. 打通了串口采集、网络采集、数据库采集三种方式设置数据。 12. 代码极其精简,注释非常详细,可以作为组态的雏形,自行拓展更多的功能。 13. 纯Qt编写,支持任意Qt版本+任意编译器+任意系统。

    信捷XC PLC与7台海利普变频器 通讯程序案例可直接拿来实用了,信捷XC系列PLC与7台海利普变频器通讯 采用器件:信捷XC系列PLC,多7台海利普HLP B系列变频器,1块昆仑通态MCGS触摸屏

    信捷XC PLC与7台海利普变频器 通讯程序案例可直接拿来实用了,信捷XC系列PLC与7台海利普变频器通讯 采用器件:信捷XC系列PLC,多7台海利普HLP B系列变频器,1块昆仑通态MCGS触摸屏。 通讯方式:用自由通讯模式方式。 特别针对那些老款的变频器 功能:对变频器进行频率设定,控制启停,读取输出频率。 也可以根据需要后续另外添加要通讯的参数 变频器可以为其他的品牌,只需要在程序里把相应的格式添加到数据区就好。 说明:本程序已经调试好了7台变频器通讯程序,包括程序的注释,触摸屏程序都做好了。 信捷XC系列PLC与7台海利普变频器通讯的程序案例已经可以直接应用了。这个方案使用了信捷XC系列PLC、7台海利普HLP B系列变频器和1块昆仑通态MCGS触摸屏。通讯方式采用了自由通讯模式。该方案特别适用于老款变频器。它的功能包括对变频器进行频率设定、控制启停以及读取输出频率。如果需要,还可以根据需求添加其他通讯参数。此外,该程序还支持其他品牌的变频器,只需要在数据区中添加相应的格式。需要说明的是,这个程序已经经过调试,包括了程序的注释和触摸屏程序。 知识点和领域范围: - PLC(可

    EP3C40F484C8N+cyusb3014 该板子之前批量过,现在没有板子了,只有完整的开发资料 包含FPGA源码,usb源码 资料里有原理图和pcb

    EP3C40F484C8N+cyusb3014 该板子之前批量过,现在没有板子了,只有完整的开发资料。 包含FPGA源码,usb源码。 资料里有原理图和pcb

    AI实战-销售数据的环境因素数据分析预测实例(含20个源代码+355.21 KB完整的数据集).zip

    AI实战-销售数据的环境因素数据分析预测实例(含20个源代码+355.21 KB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:20个代码,共91.90 KB;数据大小:1个文件共355.21 KB。 使用到的模块: pandas matplotlib.pyplot warnings sklearn.linear_model.LinearRegression sklearn.linear_model.Ridge sklearn.linear_model.Lasso sklearn.model_selection.train_test_split sklearn.preprocessing.StandardScaler sklearn.ensemble.RandomForestRegressor os seaborn sklearn.metrics.r2_score sklearn.model_selection.cross_val_score sklearn.model_selection.KFold sklearn.impute.SimpleImputer sklearn.preprocessing.OneHotEncoder sklearn.pipeline.Pipeline sklearn.compose.ColumnTransformer matplotlib sklearn.metrics.mean_squared_error sklearn.metrics.mean_absolute_error sklearn.metrics.mean_absolute_percentage_error sklearn.ensemble.GradientBoostingRegressor sklearn.ensemble.BaggingRegressor sklearn.tree.DecisionTreeRegressor sklearn.svm.SVR sklearn.neighbors.KNeighborsRegressor xgboost.XGBRegressor catboost.CatBoostRegressor numpy plotly.graph_objects plotly.subplots.make_subplots prophet.Prophet collections.Counter scipy.stats.zscore statsmodels.api xgboost sklearn.model_selection.cross_val_predict bayes_opt.BayesianOptimization sklearn.preprocessing.MinMaxScaler matplotlib.pylab scipy.stats.norm squarify

    AI实战-蘑菇分类数据集分析预测实例(含20个源代码+365.24 KB完整的数据集).zip

    AI实战-蘑菇分类数据集分析预测实例(含20个源代码+365.24 KB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:20个代码,共95.20 KB;数据大小:1个文件共365.24 KB。 使用到的模块: matplotlib.pyplot numpy os pandas sklearn.compose.ColumnTransformer sklearn.preprocessing.OneHotEncoder seaborn sklearn.model_selection.train_test_split sklearn.decomposition.KernelPCA sklearn.svm.SVC sklearn.metrics.accuracy_score sklearn.metrics.confusion_matrix sklearn.model_selection.cross_val_score sklearn.model_selection.GridSearchCV sklearn.preprocessing.LabelEncoder networkx tabulate.tabulate warnings sklearn.ensemble.RandomForestClassifier sklearn.ensemble.GradientBoostingClassifier xgboost.XGBClassifier sklearn.metrics.classification_report sklearn.preprocessing sklearn.svm sklearn.metrics.ConfusionMatrixDisplay summarytools.dfSummary missingno sklearn.metrics.roc_curve sklearn.metrics.auc joblib sklearn.linear_model.LinearRegression sklearn.preprocessing.StandardScaler tqdm.tqdm random sklearn.linear_model.LogisticRegression sklearn.tree.DecisionTreeClassifier

    使用心电图成像分析T波交替的MATLAB代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    以太网采集欧姆龙PLC DM数据并存入ACCESS 使用C#编写上位机程序,通过以太网使用FinsTCP协议读取欧姆龙PLC DM区数据 附图是程序界面,只要输入PLC IP地址、DM区起始地址号和

    以太网采集欧姆龙PLC DM数据并存入ACCESS 使用C#编写上位机程序,通过以太网使用FinsTCP协议读取欧姆龙PLC DM区数据。 附图是程序界面,只要输入PLC IP地址、DM区起始地址号和地址数量,然后点击读取即可取出数据。 DM区读取地址和读取地址数量可以自由输入; 从DM区取出的数据会在界面上显示出,并同步存储到本地的ACCESS数据库中并在界面上显示出来; ACCESS数据库定义了56个字段用来存储DM数据,如果连续读取的数据超过56个,软件会强制设置为56. 本程序使用VS2010开发。 以太网是一种用于在计算机网络中传输数据的通信技术,欧姆龙PLC是一种可编程逻辑控制器,DM是其数据存储区域。您的描述中提到了使用C#编写上位机程序,通过以太网使用FinsTCP协议读取欧姆龙PLC的DM区数据,并将数据存储到ACCESS数据库中。 在程序界面中,您可以输入PLC的IP地址、DM区起始地址号和地址数量,然后点击读取按钮来获取数据。您可以自由输入要读取的DM区地址和数量。 读取的数据将会在界面上显示,并且会同步存储到本地的ACCESS数据库中,并在界面上展示出来。A

    php审计1-extract函数变量覆盖 涉及的文件

    php审计1-extract函数变量覆盖 涉及的文件

    AI实战-Spotify专辑的数据集分析预测实例(含7个源代码+18.91 MB完整的数据集).zip

    AI实战-Spotify专辑的数据集分析预测实例(含7个源代码+18.91 MB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:7个代码,共22.84 KB;数据大小:1个文件共18.91 MB。 使用到的模块: numpy pandas matplotlib.pyplot seaborn sklearn.model_selection.train_test_split sklearn.ensemble.RandomForestRegressor sklearn.linear_model.LinearRegression sklearn.metrics.mean_squared_error xgboost warnings os sklearn.preprocessing.MinMaxScaler sklearn.metrics.pairwise.cosine_similarity tensorflow.keras.models.Sequential tensorflow.keras.layers.Dense tensorflow.keras.layers.Dropout plotly.express plotly.io

    物联网安全技术架构概述

    一、物联网安全架构概述 二、关键安全技术 三、安全措施

    动力总成悬置系统解偶计算及优化程序解偶计算能量分布矩阵6*6;ADAMS计算能量分布矩阵6*9;基于fmincon fgoalattain动力总成悬置优化程序;解偶计算GUI 可提供理论计算分析,为

    动力总成悬置系统解偶计算及优化程序解偶计算能量分布矩阵6*6;ADAMS计算能量分布矩阵6*9;基于fmincon fgoalattain动力总成悬置优化程序;解偶计算GUI。 可提供理论计算分析,为什么Adams的能量分布矩阵与一般lunwen6*6不一样;为什么Adams计算的各方向能量之和不为100%。 ————附图为Matlab与Adams计算6*9能量分布矩阵的结果对比(Matlab计算精确到0.0001,Adams为0.01) 动力总成悬置系统解偶计算及优化程序是一个用于计算和优化动力总成悬置系统的程序。它使用解偶计算方法来计算能量分布矩阵,该矩阵的大小为6*6。同时,该程序还使用ADAMS软件来计算能量分布矩阵,但其大小为6*9。基于fmincon fgoalattain算法的动力总成悬置优化程序也是其中的一部分。此外,该程序还提供了一个解偶计算的图形用户界面(GUI)。 根据您提供的信息,涉及到的知识点和领域范围包括动力总成悬置系统、解偶计算、能量分布矩阵、ADAMS软件、优化算法(如fmincon fgoalattain)、Matlab和GUI设计。 延申科普:

Global site tag (gtag.js) - Google Analytics