天天看點

xxlJob與Spring Boot原生定時器的差別

xxljob我接觸是在做釘釘考勤項目的時候,自己的接口子產品是一個job,每天早上固定時間去調釘釘的接口擷取當天的排班資訊。而@Scheduled是在學習視訊時接觸到,敲了一個demo。說起來xxljob和@Scheduled定時器的差別,之前隻是知道這兩個都是用來定時執行的。并且之前的了解就是這兩個應該差不多可以等價,後來得到了一些啟發。進行深究這兩個差別。

先來簡單介紹下xxljob,xxl-job是一個輕量級分布式任務排程平台,其核心設計目标是開發迅速、學習簡單、輕量級、易擴充。

@Scheduled是Spring boot自帶的原生的執行器。可以作為一個觸發源添加到一個方法中。

雖然兩者都能在固定的時間進行任務排程,但是有沒有注意到,xxljob的重點有一個分布式,而@Scehduled并沒有提到這一點。那擁有分布式的xxljob有什麼優點?

分布式的優點:

1.可靠性(容錯):一台伺服器的系統崩潰并不影響到其餘的伺服器。

2.可擴充性:在分布式計算系統可以根據需要增加更多的機器。

3.資源共享:能夠共享資料。

4.更高的性能:相較于集中式計算機網絡叢集可以提供更高的性能。

......

通過上面我們知道具有三高(高可用、高性能、高并發)的xxljob優點有很多。那具體的xxljob和@Scheduled差別是什麼?假如有一個場景。一個系統需要同一時間執行很多服務排程來實作一個功能,這時你部署在一台伺服器上就不行了。你可以将這些服務排程部署在一個xxljob分布式排程平台上,每個服務都有對應的job。每天固定的時間就會固定執行。那有人是不是會想我将使用@Schedule作為定時器的服務也部署在多個伺服器上不也可以嗎?

雖說這個xxljob分布式排程平台是由一個叢集搭建完成的,但是它可以同一時間執行多個job不會重複,對執行的服務進行加鎖處理。而不是分布式的叢集在定時執行服務時無法确定我執行的這個服務是否在另一台伺服器上已經執行。

繼續閱讀