1. 程式人生 > 其它 >分散式定時排程:xxl-job

分散式定時排程:xxl-job

背景

  • 有服務裡面在跑定時任務,一直是單點在執行,雖然存在挺大的風險,但也這樣扛下來了。
    但是呢,現在要做多點了,springboot 的 Scheduled,雖然好用,在多點就會存在一些問題,多個節點都跑了定時任務,就會有問題。
    基於些,就把 xxl-job引用進來了。

使用說明

關於xxl-job 的使用,可以參考這個,
描述方面更加清晰:分散式定時排程:xxl-job 萬字詳解
雖然也不知道什麼時候會不會消失這個博文(之前遇到過消失的,找不到了,很可惜)


嗯,不過關於 xxl-job 的使用,網上肯定也不缺的。我這邊只記錄一些使用過程中遇到過的小問題,僅當做一下筆記。


程式碼

原始碼倉庫地址

程式碼拉下來後,按說明裝上,是直接能跑的


說個小問題
當時把程式碼拉下來後,就想整合到專案裡面去(雖然其實並沒有必要,但確實這樣幹了),然後,整合過程中,改了pom.xml 裡面的 < parent > 給換掉了,然後各種報錯,報復性地報錯。各種引用不對,各種properties 也都找不到,就很奇怪,怎麼這個專案,根本就跑不起來啊?版本號各種都沒有,還以為下載了錯誤的原始碼,但在 github上看,最多星的就是這個,不太可能其它人沒問題,就我有問題啊。。emmmm,行吧。當時也沒多想,但確實,浪費了不少時間。

當,我終於想起,拉下來的程式碼,先不要急著去整合,先讓它原生態地跑一下先的時候,發現,非常絲滑。emmm,能怎麼說呢,太慘了。也是一個教訓吧。拿到一個東西,應該先按它原本的樣子,先跑通了,再想著去做進一步的整合,不然還是很容易扯著蛋。emmm

這是第一個小問題。


跑起來後,

再說一些小事兒
其實這個 xxl-job 還是比較容易上手的,也確實很強大。很靈活,比 springboot 的做定時任務的,感覺要強大不少。嗯,當然,其實如果是單點,或者體量比較小的專案,也不一定需要用上。

好,說正經的事兒:

  • 這裡有一個執行器的概念,是這個啥呢,比如在我這邊的專案,要把 xxl-job用起來,需要在現有專案的專案,把xxl-job-core 依賴引到pom.xml裡面,然後,要進行一些配置,這個配置裡面,包括註冊xxl-job的地址外,還有一個 RPC 監聽埠,這個埠是用於讓執行器發起排程用的,是什麼意思呢,就是 xxl-job中心對服務裡面的某個方法/介面的呼叫。那這樣說來,一個服務就得是單獨的一個執行器,那每個服務都應該有自己的RPC監聽埠,所以這個埠也是要一個節點一個埠。當節點特別多的時候,埠也是要好好管理才行。不然,會衝突!!!!(埠衝突嘛,應該很容易理解),但這個確實是一個要注意的一個地方。

  • 它雖然好,但不可否認地,它也帶來了一些額外的配置。並且,像埠這種每個節點都不同,配置還不能完全複用(在配置中心不能引用同一份)。

  • 有好,有麻煩。還是得看業務需求。

  • 繼續發現吧。總的來說,這確實是一個挺好的東西。至少解決了專案上服務叢集的定時任務的問題。