Spring Batch 批處理框架

Spring Batch 批處理框架

《Spring Batch 批處理框架》是2015年2月電子工業出版社出版的圖書,作者是劉相。

基本介紹

  • 書名:SpringBatch 批處理框架
  • 作者:劉相 編著  
  • ISBN: 978-7-121-25241-9
  • 類別:計算機科學
  • 頁數:404
  • 定價:69
  • 出版社:電子工業出版社
  • 出版時間:201502
  • 裝幀:平裝
  • 開本:16
內容簡介,編輯推薦,內容提要,目錄,

內容簡介

《Spring Batch 批處理框架》全面、系統地介紹了批處理框架Spring Batch,通過詳盡的實戰示例向讀者展示了SpringBatch 框架對大數據批處理的基本開發能力,並對框架的架構設計、源碼做了特定的剖析;在幫助讀者掌握Spring Batch 框架基本功能、高級功能的同時,深入剖析了Spring Batch 框架的設計原理,幫助讀者可以遊刃有餘地掌握Spring Batch 框架。
《Spring Batch 批處理框架》分為入門篇、基本篇和高級篇三部分。入門篇介紹了批處理、Spring Batch 的基本特性和新特性,快速入門的Hello World 等內容引領讀者入門,從而進入數據批處理的世界。基本篇重點講述了數據批處理的核心概念、典型的作業配置、作業步配置,以及Spring Batch 框架中經典的三步走策略:數據讀、數據處理和數據寫,詳盡地介紹了如何對CVS 格式檔案、JSON 格式檔案、XML 檔案、資料庫和JMS 訊息佇列中的數據進行讀操作、處理和寫操作,對於資料庫的操作詳細介紹了使用JDBC、Hibernate、存儲過程、JPA、Ibatis 等處理。高級篇提供了高性能、高可靠性、並行處理的能力,分別向讀者展示了如何實現作業流的控制,包括順序流、條件流、並行流,如何實現健壯的作業,包括跳過、重試和重啟等,如何實現擴展作業及並行作業,包括多執行緒作業、並行作業、遠程作業和分區作業等,從而實現分散式、高性能、高擴展性的數據批處理作業。
Spring Batch 批處理框架(國內首本全面解析Spring Batch 批處理框架的中文原創圖書!大數據時代數據批處理利器學習必備!)
劉相 編著
ISBN 978-7-121-25241-9
2015年2月出版
定價:69.00元
404頁
16開

編輯推薦

國內首本全面解析Spring Batch 批處理框架的中文原創圖書!
輕鬆引領進入數據批處理世界:基本特性和新特性,快速入門的Hello World。
深度探索Spring Batch 批處理框架的核心概念:作業配置、作業步配置,以及Spring Batch 框架中經典的三步走策略。
快速提升數據批處理的能力:高性能、高可靠性、並行處理。

內容提要

《Spring Batch 批處理框架》全面、系統地介紹了批處理框架Spring Batch,通過詳盡的實戰示例向讀者展示了SpringBatch 框架對大數據批處理的基本開發能力,並對框架的架構設計、源碼做了特定的剖析;在幫助讀者掌握Spring Batch 框架基本功能、高級功能的同時,深入剖析了Spring Batch 框架的設計原理,幫助讀者可以遊刃有餘地掌握Spring Batch 框架。
《Spring Batch 批處理框架》分為入門篇、基本篇和高級篇三部分。入門篇介紹了批處理、Spring Batch 的基本特性和新特性,快速入門的Hello World 等內容引領讀者入門,從而進入數據批處理的世界。基本篇重點講述了數據批處理的核心概念、典型的作業配置、作業步配置,以及Spring Batch 框架中經典的三步走策略:數據讀、數據處理和數據寫,詳盡地介紹了如何對CVS 格式檔案、JSON 格式檔案、XML 檔案、資料庫和JMS 訊息佇列中的數據進行讀操作、處理和寫操作,對於資料庫的操作詳細介紹了使用JDBC、Hibernate、存儲過程、JPA、Ibatis 等處理。高級篇提供了高性能、高可靠性、並行處理的能力,分別向讀者展示了如何實現作業流的控制,包括順序流、條件流、並行流,如何實現健壯的作業,包括跳過、重試和重啟等,如何實現擴展作業及並行作業,包括多執行緒作業、並行作業、遠程作業和分區作業等,從而實現分散式、高性能、高擴展性的數據批處理作業。
《Spring Batch 批處理框架》適合需要具體使用批處理作業、大數據處理的開發人員、設計人員和架構師,對於企業中存在大量作業的運維人員亦有一定的參考價值。

目錄

第1篇入門篇
第1章 Spring Batch簡介 2
1.1 什麼是批處理 2
1.2 Spring Batch 3
1.2.1 典型場景 3
1.2.2 Spring Batch架構 4
1.3 Spring Batch優勢 4
1.3.1 豐富的開箱即用組件 5
1.3.2 面向Chunk的處理 5
1.3.3 事務管理能力 5
1.3.4 元數據管理 5
1.3.5 易監控的批處理套用 5
1.3.6 豐富的流程定義 5
1.3.7 健壯的批處理套用 6
1.3.8 易擴展的批處理套用 6
1.3.9 復用企業現有IT資產 6
1.4 Spring Batch 2.0新特性 6
1.4.1 支持Java 5 7
1.4.2 支持非順序的Step 7
1.4.3 面向Chunk處理 7
1.4.4 元數據訪問 11
1.4.5 擴展性 11
1.4.6 可配置性 12
1.5 Spring Batch 2.2新特性 13
1.5.1 Spring Data集成 13
1.5.2 支持Java配置 13
1.5.3 Spring Retry 14
1.5.4 Job Parameters 14
1.6 開發環境搭建 15
第2章 Spring Batch之Hello World 16
2.1 場景說明 16
2.2 項目準備 16
2.2.1 項目結構 16
2.2.2 準備對賬單檔案 17
2.2.3 定義領域對象 18
2.3 定義job基礎設施 18
2.4 定義對賬Job 19
2.4.1 配置ItemReader 19
2.4.2 配置ItemProcessor 21
2.4.3 配置ItemWriter 22
2.5 執行Job 23
2.5.1 Java調用 23
2.5.2 JUnit單元測試 24
2.6 概念預覽 26
第2篇基本篇
第3章 Spring Batch基本概念 28
3.1 命名空間 29
3.2 Job 30
3.2.1 Job Instance 31
3.2.2 Job Parameters 33
3.2.3 Job Execution 34
3.3 Step 35
3.3.1 Step Execution 37
3.4 Execution Context 38
3.5 Job Repository 39
3.5.1 Job Repository Schema 39
3.5.2 配置Memory Job Repository 40
3.5.3 配置DB Job Repository 41
3.5.4 資料庫Schema 42
3.6 Job Launcher 48
3.7 ItemReader 49
3.8 ItemProcessor 50
3.9 ItemWriter 50
第4章配置作業Job 52
4.1 基本配置 52
4.1.1 重啟Job 54
4.1.2 Job攔截器 55
4.1.3 Job Parameters校驗 58
4.1.4 Job抽象與繼承 59
4.2 高級特性 61
4.2.1 Step Scope 61
4.2.2 屬性Late Binding 62
4.3 運行Job 63
4.3.1 調度作業 65
4.3.2 命令行執行 68
4.3.3 與定時任務集成 71
4.3.4 與Web套用集成 73
4.3.5 停止Job 77
第5章配置作業步Step 85
5.1 配置Step 86
5.1.1 Step抽象與繼承 87
5.1.2 Step執行攔截器 89
5.2 配置Tasklet 92
5.2.1 重啟Step 93
5.2.2 事務 94
5.2.3 事務回滾 96
5.2.4 多執行緒Step 97
5.2.5 自定義Tasklet 97
5.3 配置Chunk 99
5.3.1 提交間隔 102
5.3.2 異常跳過 103
5.3.3 Step重試 105
5.3.4 Chunk完成策略 107
5.3.5 讀、處理事務 110
5.4 攔截器 112
5.4.1 ChunkListener 115
5.4.2 ItemReadListener 116
5.4.3 ItemProcessListener 116
5.4.4 ItemWriteListener 117
5.4.5 SkipListener 117
5.4.6 RetryListener 118
第6章讀數據ItemReader 120
6.1 ItemReader 120
6.1.1 ItemReader 120
6.1.2 ItemStream 121
6.1.3 系統讀組件 122
6.2 Flat格式檔案 122
6.2.1 Flat檔案格式 123
6.2.2 FlatFileItemReader 125
6.2.3 RecordSeparatorPolicy 129
6.2.4 LineMapper 130
6.2.5 DefaultLineMapper 131
6.2.6 LineCallbackHandler 138
6.2.7 讀分隔設定檔案 139
6.2.8 讀定長檔案 141
6.2.9 讀JSON檔案 143
6.2.10 讀記錄跨多行檔案 145
6.2.11 讀混合記錄檔案 147
6.3 XML格式檔案 150
6.3.1 XML解析 150
6.3.2 Spring OXM 151
6.3.3 StaxEventItemReader 153
6.4 讀多檔案 156
6.5 讀資料庫 159
6.5.1 JdbcCursorItemReader 160
6.5.2 HibernateCursorItem Reader 167
6.5.3 StoredProcedureItem Reader 171
6.5.4 JdbcPagingItemReader 174
6.5.5 HibernatePagingItem Reader 179
6.5.6 JpaPagingItemReader 183
6.5.7 IbatisPagingItemReader 186
6.6 讀JMS佇列 190
6.6.1 JmsItemReader 190
6.7 服務復用 194
6.8 自定義ItemReader 197
6.8.1 不可重啟ItemReader 197
6.8.2 可重啟ItemReader 199
6.9 攔截器 202
6.9.1 攔截器接口 202
6.9.2 攔截器異常 203
6.9.3 執行順序 204
6.9.4 Annotation 204
6.9.5 屬性Merge 205
第7章寫數據ItemWriter 207
7.1 ItemWrite 207
7.1.1 ItemWriter 208
7.1.2 ItemStream 208
7.1.3 系統寫組件 209
7.2 Flat格式檔案 210
7.2.1 FlatFileItemWriter 210
7.2.2 LineAggregator 214
7.2.3 FieldExtractor 217
7.2.4 回調操作 219
7.3 XML格式檔案 222
7.3.1 StaxEventItemWriter 222
7.3.2 回調操作 226
7.4 寫多檔案 230
7.4.1 MultiResourceItemWriter 230
7.4.2 擴展MultiResourceItem Writer 233
7.5 寫資料庫 234
7.5.1 JdbcBatchItemWriter 235
7.5.2 HibernateItemWriter 239
7.5.3 IbatisBatchItemWriter 242
7.5.4 JpaItemWriter 245
7.6 寫JMS佇列 248
7.6.1 JmsItemWriter 248
7.7 組合寫 252
7.8 Item路由Writer 254
7.9 傳送郵件 258
7.9.1 SimpleMailMessageItem Writer 258
7.10 服務復用 262
7.10.1 ItemWriterAdapter 262
7.10.2 PropertyExtracting DelegatingItemWriter 264
7.11 自定義ItemWrite 267
7.11.1 不可重啟ItemWriter 267
7.11.2 可重啟ItemWriter 268
7.12 攔截器 271
7.12.1 攔截器接口 271
7.12.2 攔截器異常 273
7.12.3 執行順序 274
7.12.4 Annotation 274
7.12.5 屬性Merge 275
第8章處理數據ItemProcessor 277
8.1 ItemProcessor 277
8.1.1 ItemProcessor 277
8.1.2 系統處理組件 278
8.2 數據轉換 279
8.2.1 部分數據轉換 279
8.2.2 數據類型轉換 281
8.3 數據過濾 282
8.3.1 數據Filter 282
8.3.2 數據過濾統計 283
8.4 數據校驗 285
8.4.1 Validator 285
8.4.2 ValidatingItemProcessor 286
8.5 組合處理器 288
8.6 服務復用 291
8.6.1 ItemProcessorAdapter 291
8.7 攔截器 293
8.7.1 攔截器接口 293
8.7.2 攔截器異常 295
8.7.3 執行順序 295
8.7.4 Annotation 296
8.7.5 屬性Merge 297
第3篇高級篇
第9章作業流Step Flow 300
9.1 順序Flow 300
9.2 條件Flow 302
9.2.1 next 303
9.2.2 ExitStatus VS BatchStatus 306
9.2.3 decision條件 308
9.3 並行Flow 311
9.4 外部Flow定義 314
9.4.1 Flow 314
9.4.2 FlowStep 317
9.4.3 JobStep 319
9.5 Step數據共享 321
9.6 終止Job 323
9.6.1 end 324
9.6.2 stop 326
9.6.3 fail 327
第10章健壯Job 330
10.1 跳過Skip 331
10.1.1 配置Skip 331
10.1.2 跳過策略SkipPolicy 333
10.1.3 跳過攔截器 335
10.2 重試Retry 338
10.2.1 配置Retry 339
10.2.2 重試策略RetryPolicy 341
10.2.3 重試攔截器 343
10.2.4 重試模板 345
10.3 重啟Restart 353
10.3.1 重啟Job 353
10.3.2 啟動次數限制 355
10.3.3 重啟已完成的任務 355
第11章擴展Job、並行處理 357
11.1 可擴展性 357
11.2 多執行緒Step 358
11.2.1 配置多執行緒Step 359
11.2.2 執行緒安全性 360
11.2.3 執行緒安全Step 361
11.2.4 可重啟的執行緒安全Step 363
11.3 並行Step 365
11.4 遠程Step 366
11.4.1 遠程Step框架 366
11.4.2 基於SI實現遠程Step 368
11.5 分區Step 373
11.5.1 關鍵接口 374
11.5.2 基本配置 376
11.5.3 檔案分區 378
11.5.4 資料庫分區 382
11.5.5 遠程分區Step 387
後記 392
精彩節摘
批處理編程之美
這是一部論述批處理程式編程的書。在信息系統中,在線上和批處理是計算機處理的兩種基本模式,前者快速回響、逾時中斷、密集並發,後者處理時間長、異常需要支持重做、通常以順序執行。早期的計算機系統多採用批處理的處理模式,客戶機/伺服器架構的產生讓在線上模式越來越多地被採用,但批處理模式一直在信息系統中起著重要作用,隨著OLAP、大數據等新技術的套用,批處理的處理模式又成為熱點,例如在傳統銀行IT系統中每日動輒運行上萬個批處理作業,在網際網路套用中,騰訊、阿里每日的批處理作業可達百萬量級的水平。
編程之美,美在架構,架構之美,美在抽象,只有具備充分理解複雜業務場景的格局,才能進行將複雜問題做簡單化的抽象。同在線上模式汗牛充棟的著作、框架相比,批處理模式的抽象不多,著名的MapReduce就是其中之一,MapReduce將大批數據的處理過程進行了抽象,而Spring Batch則是對編寫批處理程式本身的特性進行了抽象。通過將批處理程式分解為Job和Job Step兩個部分,將處理環節定義為數據讀、數據處理和數據寫三個步驟,將異常處理機制歸結為跳過、重試、重啟三種類型,將作業方式區分為多執行緒、並行、遠程、分區四大特徵,正所謂增一分則肥,減一分則瘦。類似之美,Spring系列項目還有很多,例如Spring Framework對依賴注入的抽象,Spring integration中利用訊息、佇列、處理器三個概念的組合對集成模式的抽象,都讓我嘆為觀止。
當相相遞給我他的新作時,我吃了一驚,驚在他“悄無聲息”地完成了這樣一個大部頭作品,迫不及待地有一種先睹為快的衝動。我發現,書中通過對Spring Batch本身的論述,讓我體會到了Spring Batch的精髓,也更加深刻地理解了批處理編程模式,還看到了相相對信息系統中如何使用這一框架的見解,畢竟信息系統中的批處理程式,不僅僅是一個框架,還需要包含更多的管理、運維方面的流程、制度與平台。近年來,我看到很多企業都在構建集中的批處理平台,管理大量出現的批處理作業,也期待相相能有更多這方面的分享。
普元CTO 焦烈焱
2015年1月
作者簡介
劉相:畢業於上海理工大學計算機學院,碩士學位,從業9年,Java技術專家。2006年加入普元信息技術股份有限公司至今,業務集成產品線技術總監、資深架構師,主要從事中間件產品設計研發工作,參與國內多款中間件產品(SOA套用開發平台、SOA流程平台、企業服務匯流排)的研發設計工作。主要研究方向BPM、分散式計算、SOA領域,在企業套用平台產品開發方面具有豐富的產品、架構設計經驗。
前言
資訊時代,數據是現代企業最寶貴的核心資產,是企業運用科學管理、決策分析的基礎。截至目前,國內大多數企業已經完成了OLTP(在線上事務處理)的業務系統和辦公自動化系統,用來記錄事務處理的各種相關數據。據統計,企業的數據每年都在成倍增長,企業如能充分利用這些數據會帶來巨大的商機。但目前企業通常所關注的數據僅占總數據量的5%左右,企業沒有最大化地利用已經存在的數據資源,導致浪費了更多的時間和資金,同時也失去了制定關鍵商業決策的最佳契機。於是,企業如何通過各種技術手段,並把數據轉換為信息、知識和商機已經成為提高其核心競爭力的主要手段。而數據批處理則是達成上述目標的一個主要技術手段,通過數據批量處理,可以完成數據的載入、抽取、轉換、清洗等功能,進而支撐企業的各種數據分析。
2012年底,筆者有幸接手某銀行批處理項目,首次接觸Spring Batch批處理框架,深入學習Spring Batch框架後發現:Spring Batch框架的架構設計清晰和優雅,其功能完備,具有無所不在的擴展能力、豐富的業務組件,並且採用業務與技術分離的設計思想。筆者通過近半年多的學習,通讀了官網提供的所有文檔,深入學習了原版書籍Spring Batch In Action。在大數據時代,批處理框架在金融、電信、大型製造業等套用非常廣泛。在學習的過程中,筆者了解到同事、網路上有不少朋友苦於沒有中文版的Spring Batch框架介紹資料,於是萌生出寫一本Spring Batch框架中文版的介紹圖書的想法,希望能夠幫助國內的讀者快速地掌握該框架。
自2013年年中起筆者開始構思本書的大綱,在繁忙工作之餘堅持每周完成部分章節內容,前後歷時1年多時間完成書稿編寫工作。在此感謝妻子Phyllis給予我充足的時間、感謝可愛女兒Rachel給我帶來的巨大歡樂動力。本書主要的目的是全面、系統地介紹批處理框架Spring Batch,通過詳盡的實戰示例向讀者展示了Spring Batch框架的基本開發能力,並對框架的架構設計、源碼做了特定的剖析;在幫助讀者掌握該框架基本功能、高級功能使用的同時,深入剖析Spring Batch框架的設計原理,幫助讀者可以遊刃有餘地掌握Spring Batch框架。
本書分為入門篇、基本篇、高級篇三個部分。從基本的入門篇講起,通過介紹批處理、Spring Batch基本特性、新特性、快速入門的Hello World等內容引領讀者入門,進入批處理的世界。之後的基本篇,重點講述了批處理的核心概念、典型的作業配置、作業步配置以及Spring Batch框架中經典的三步走策略:數據讀、數據處理、數據寫,詳細地介紹了如何對分隔設定類型檔案、定長類型檔案、JSON格式檔案、複雜類型格式檔案、XML檔案、資料庫、JMS訊息佇列中的數據進行讀、處理、寫操作,對於資料庫的操作詳細介紹了使用JDBC、Hibernate、存儲過程、JPA,Ibatis等處理。為了能夠讓讀者更深入地了解Spring Batch框架,高級篇提供了高性能、高可靠性、並行處理的能力,分別向讀者展示如何實現作業流的控制包括順序流、條件流、並行流,如何實現健壯的作業包括跳過、重試、重啟等,如何實現擴展作業及並行作業包括多執行緒作業、並行作業、遠程作業、分區作業等。
本書適合需要具體使用批處理框架Spring Batch的開發人員、設計人員、架構師,對於企業中存在大量作業的運維人員亦有一定的參考價值。
編者

相關詞條

熱門詞條

聯絡我們