歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

選擇正確的 JSR-352 (Java批處理)實現的 10 個關鍵點

您可能已經知道,JSR-352是一個Java批處理的標准。該標准在今年發布,並被包含在了JEE7之中,這意味著,所有的JEE7應用服務器都會有批處理的能力。正如我在上一篇文章中指出,即使您的應用服務器是固定的,但是您依舊可以選擇JSR-352的實現。

既然您可以選擇,那麼您應該怎麼樣選擇呢?當然,這和JSR-352提供了什麼沒有關系,因為所有的實現都會有這些功能。你應該根據那些超出標准之外功能來進行選擇。在本文中,基於之前在一些有代表性的公司例如保險公司和銀行,中實現Spring Batch的一些經驗,我整理了一些可以作為參考的標准。現在而言沒有嚴格的JSR-352實現,即使是Spring Batch也還有一段距離,因此現在還沒有直接比較實現方案的可能。但是我們依舊可以看看各個實現在每個參考標准上面的比較(下面的標准按照重要性來排序)。

可測試性

Junit 集成測試在不要部署到應用服務器商應該可以跑批處理任務。開發的周期性和測試覆蓋的潛力都會提高很多。

組件

一個干淨的批處理模型是很好的,但是為了快速開發批處理任務你需要依賴別人寫好的穩定的組件。Spring Batch 有很多的這類組件 例如 ItemReaders,ItemWriters,PartitionHandlers 等等對應各類數據和環境。

可觀察性

JSR-352 定義了批處理的元數據像 JobExecutions,JobInstances,StepExecutions 等等。應該有一個簡單的能以圖形化的方式查看這些數據或者起/停批處理任務。Spring Batch 提供了Spring Batch Admin 來實現這個功能。你也可以看看JMX提供的工具。

社區化

一個友好的開發者社區能很大的提高生產能力。看看Google的搜索結果,一個活躍的論壇和Stackoverflow上的活動來檢查JSR352實現廠商的產品普及度。

任務繼承

這個參考點看起來不是很重要,但是實際上所有Spring Batch項目都在用。大公司裡面都有一些通用規則,例如協議監聽器,日志初始化,退出代碼轉換等等等等。開發人員不應該自己添加適當的監聽器,應該從父任務裡簡單的繼承過來。然後在很多個類似的任務中用一個父任務來包含所有的公用組件這個功能聽起來就比較有道理了。

開源化

開源到底好不好是個爭論了很久問題,咱們也別老調重彈了。我個人喜歡開源的東西,因為代碼的實現方式對我來說是比較重要的。所以我最起碼能檢查每一個我選擇的開源產品的實現代碼。

安全性

安全一直都是很重要的,應該要具備開始和停止任務的用戶控制,而且不是所有人能看到批處理的元數據。

可伸縮性選項

可伸縮性是很重要的,我在這裡列到第8點才說是因為最重要的伸縮性選項-Local Partitioning 已經包含在JSR -352 裡面了。但是還應該有更多的選擇 ,例如Spring Batch 提供的 Multi-threaded Step,Remote Partitioning ,Parallel Step,Remote Chunking 等等選項,所以看看你的實現廠商有沒有提供其他的伸縮性選項。

可配置性

JSR-352 定義了基於XML的任務設置模型。Spring Batch 提供了基於Java (類型安全的)的配置方式,因此確保了編譯期間很多細節問題的處理而且在任意IDE下支持重構。這個參考點對執行批處理任務不是很重要,所以我放在第九位,但是也是個值得擁有的功能點。

可擴展性

擴展性是一個非常重要的參考點,但是我把它放在最後一位是因為JSR-352 的 API 已經提供了基本上全部的用於可擴展的接口,例如啟動和停止任務,查看批處理元數據和編寫自有組件等等。但是,可能你還是會需要沒有被包含在JSR-352標准裡面的功能。

10條參考點,有些范圍太廣太淡,有些又是很必要很實用的,重要性的排序是基於我在一些大公司使用Spring Batch 的經驗。你可能會有自己的排序或者有些其他想法,但是你得承認上面得這些參考點都是很重要的。 選擇JSR-352的實現廠商應該慎重因為你可能會用很久。我也希望這些參考點在你需要做出選擇的時候能幫助你。

Copyright © Linux教程網 All Rights Reserved