1. 程式人生 > >Cash Loan(六):定時任務的選型及改造

Cash Loan(六):定時任務的選型及改造

【前言】

      專案中用到了定時任務,專案之初為了快速開發上線,當時直接採用最簡單的Linux自帶的crontab;專案逐漸維定下來時,針對定時任務自己進行了相關研究,並根據專案實際情況進行了對比以及相關改造。

【比一比&改一改】

        一、專案目前定時任務現狀

                1、 使用Linux系統的crontab直接呼叫Java服務

                2、 優缺點:

                   (1)優點:部署簡單,由linux系統維護相對Java程序維護更加維定

                   (2)缺點:單機部署,風險大;出問題後排錯難度大;需要運維介入成本大

                   (3)總結:針對目前專案情況,弊大於利

        二、   Java主流三大定時任務框架優缺點

                1、 選型時原則:少伺服器 後期維護方便 增加任務省事 而且快捷 不涉及啟停服務

                2、 Quartz

                   (1)優點:支援叢集部署

                   (2)缺點:沒有自帶的管理介面;排程邏輯和執行任務耦合在一起;維護需要重啟服務

                   (3)總結:針對目前專案情況,利弊相同

                3、 xxl-job

                   (1)優點:支援叢集部署;提供運維介面維護成本小;自帶錯誤預警;相對elastic-job來說不需要額外的元件(zookeeper);支援排程策略;支援分片;

                   (2)缺點:相對Quartz來說需要多部署排程中心

                   (3)總結:針對目前專案情況,利大於弊

                4、 elastic-job

                   (1)優點:支援叢集部署;維護成本小

                   (2)缺點:elastic-job需要zookeeper,zookeeper叢集高可用至少需要三臺伺服器

                   (3)總結:針對目前專案情況,弊大於利

                5、 小結:

                   綜合選型原則及三個定時任務框架的優缺點和目前專案的狀況,建議選用xxl-job

        三、xxl-job一些特性

                2、 一些實用特性:

                   (1)執行失敗可以檢視日誌


(2)支援郵件報警


(3)路由策略支援輪詢等策略,可以減輕執行伺服器的壓力


(4)輪詢時間等引數修改後立即生效


(5)執行器有問題或新增,快速識別


(6)排程中心高可用,排程中心可以叢集部署(叢集部署的機器時鐘必須同步),如果排程中心沒有做負載在執行器的配置中需要配多個地址,如果排程中心配置負載則執行器配置負載地址即可

      

(7)執行器高可用(執行器可以叢集部署)

        四、專案中加入xxl-job結合

                1、 說明:以下Demo以簡訊傳送服務定時任務為例

                2、 建議:執行器根據不同的模組建立工程(既方便統一部署又方便升級維護),比如:結算的定時任務可以組成一個工程;簡訊定時任務可以組成一個工程等

                3、 專案中增加xxl-job

                   (1)在pom中增加依賴

                         

(2)application.properties增加相關配置

                     

(3)增加config解析類

                    

(4)增加執行器

                    

【總結】

       在技術選型的時候既要站在當前也要考慮到未來,沒有什麼是永遠的唯一的,要結合具體的場景業務用發展的眼光去看待。