自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

XXL-JOB內(nèi)部機制大揭秘,任務飛起來!

開發(fā) 前端
通過對XXL-JOB內(nèi)部機制的揭秘,我們可以看到它在任務調(diào)度方面的強大功能和高效實現(xiàn)。從調(diào)度中心到執(zhí)行器,從時間輪調(diào)度到任務分配與執(zhí)行,再到彈性擴容縮容、豐富的觸發(fā)策略和任務失敗重試與告警等高級特性,XXL-JOB以其輕量級、易擴展、高性能的特點贏得了市場的認可。

今天我們給大家分享一下XXL-JOB這個框架的內(nèi)部運行機制,因為大家平時開發(fā)系統(tǒng)的時候肯定會遇到后臺調(diào)度任務的相關(guān)功能開發(fā)吧,比如說系統(tǒng)需要定時跑個什么任務做一些數(shù)據(jù)處理的工作,或者是數(shù)據(jù)檢查的工作這類的,這些都是要開后臺調(diào)度任務的。

那什么是后臺調(diào)度任務?說白了其實就是你系統(tǒng)啟動后開個線程后臺自己跑,執(zhí)行任務,這就是后臺調(diào)度任務了,你的線程里可以設置一個while循環(huán),如果任務沒結(jié)束就一直在while循環(huán)里重復執(zhí)行一些代碼,每次執(zhí)行還可以sleep一段時間,那就每次執(zhí)行都有一個時間間隔了,這就是最簡單的調(diào)度任務。

那自己搞線程有什么問題?問題大了,你線上系統(tǒng)一般都是多機器部署的吧,那每個機器上啟動的系統(tǒng)進程是不是都有自己的調(diào)度線程?那不同的調(diào)度線程之間怎么協(xié)調(diào)?會不會并發(fā)更新數(shù)據(jù),導致臟數(shù)據(jù)?你是不是還要引入分布式鎖來處理?所以類似這種多臺機器上同時啟動調(diào)度線程的就是分布式任務調(diào)度了,為啥叫分布式,因為你多臺機器一起跑調(diào)度線程啊,可不是分布式嗎?

分布式的意思就是分布在多臺機器上,大家一定要明白這個點。

而且一般我們開發(fā)的系統(tǒng)都是面向web的系統(tǒng),一般都是web來了請求或者是內(nèi)部其他系統(tǒng)來了rpc調(diào)用,我們系統(tǒng)接口開始跑代碼,系統(tǒng)的運行模型不是那種定時調(diào)度的,所以其實把調(diào)度線程混合在系統(tǒng)里也不好,這個時候就可以當當當當了,所以引入一個專門的分布式任務調(diào)度系統(tǒng),來專門跑各種我們的調(diào)度任務代碼。

那國內(nèi)這塊用的比較多的開源的分布式任務調(diào)度系統(tǒng)有比較知名的就是elastic-job,還有就是xxl-job,其實干的事兒都差不多,就是可以把獨立的開源調(diào)度系統(tǒng)部署在多臺機器上,每臺機器都可以跑很多調(diào)度任務,我們就把自己的調(diào)度任務代碼提交給他,然后設置好調(diào)度策略就可以了,他就會自己按照策略調(diào)度執(zhí)行任務了。

所以今天分享的重點就是xxl-job這個框架的內(nèi)部工作機制了!

那我們來進入主題了,那在軟件開發(fā)的世界里,定時任務調(diào)度是不可或缺的一環(huán)。想象一下,系統(tǒng)需要定時備份數(shù)據(jù)、清理日志、發(fā)送提醒郵件,這些工作如果靠人工來完成,那得多低效??!這時候,一個強大的任務調(diào)度平臺就顯得尤為重要了。而XXL-JOB,作為分布式任務調(diào)度領域的佼佼者,憑借其輕量級、易擴展、高性能的特點,贏得了眾多開發(fā)者的青睞。今天,咱們就來揭開XXL-JOB的神秘面紗,看看它如何讓任務“飛起來”!

一、XXL-JOB是什么?

首先,咱們得明確一下,XXL-JOB到底是個啥?簡單來說,它就是一個分布式任務調(diào)度平臺,專門用來管理和調(diào)度定時任務。這個平臺由調(diào)度中心和執(zhí)行器兩部分組成,調(diào)度中心負責任務的分配和調(diào)度,執(zhí)行器則負責具體執(zhí)行這些任務。通過這樣的設計,XXL-JOB實現(xiàn)了調(diào)度與任務的解耦,提高了系統(tǒng)的穩(wěn)定性和擴展性。

二、XXL-JOB的核心組件

調(diào)度中心(XXL-JOB-ADMIN)

調(diào)度中心是XXL-JOB的大腦,它負責管理所有的調(diào)度信息,包括任務信息、執(zhí)行器信息等。它就像一個指揮官,根據(jù)任務的配置信息和執(zhí)行器的注冊信息,制定出合理的調(diào)度計劃,并在適當?shù)臅r候?qū)⑷蝿辗峙浣o執(zhí)行器去執(zhí)行。

調(diào)度中心的主要功能包括:

  • 任務管理:新增、修改、刪除任務,設置任務的觸發(fā)條件等。
  • 執(zhí)行器管理:注冊、注銷執(zhí)行器,監(jiān)控執(zhí)行器的狀態(tài)等。
  • 日志管理:查看任務的執(zhí)行日志,便于問題排查。

調(diào)度中心支持集群部署,通過數(shù)據(jù)庫鎖的方式保證任務在同一時間只會被一個調(diào)度中心實例觸發(fā)一次,提高了系統(tǒng)的容錯性和可用性。

執(zhí)行器(XXL-JOB-EXECUTOR)

執(zhí)行器是XXL-JOB的手腳,它負責接收調(diào)度中心分配的任務,并執(zhí)行具體的任務邏輯。執(zhí)行器可以部署在多個服務器上,形成執(zhí)行器集群,從而實現(xiàn)任務的分布式執(zhí)行。

執(zhí)行器的主要功能包括:

  • 任務執(zhí)行:接收調(diào)度中心的任務請求,執(zhí)行具體的任務邏輯。
  • 結(jié)果回調(diào):將任務的執(zhí)行結(jié)果回調(diào)給調(diào)度中心,供用戶查看。
  • 心跳檢測:周期性地向調(diào)度中心發(fā)送心跳信息,證明自己的存活狀態(tài)。

三、XXL-JOB的調(diào)度機制

時間輪調(diào)度

XXL-JOB的調(diào)度機制借鑒了Netty中的HashedWheelTimer,采用了類似時間輪的調(diào)度方式。時間輪是一個環(huán)形結(jié)構(gòu),可以想象成一個時鐘,鐘面上有很多格子(bucket),每個格子上可以存放多個任務。隨著時間的流逝,時間輪上的指針會一格一格地轉(zhuǎn)動,并執(zhí)行對應格子上的任務。

在XXL-JOB中,時間輪被簡化成了60個bucket,每個bucket代表1秒。調(diào)度中心內(nèi)部有兩個重要的線程:scheduleThread和ringThread。scheduleThread負責預讀未來5秒內(nèi)即將觸發(fā)的任務,并將它們放入時間輪中。ringThread則負責檢查當前bucket和前一個bucket中的任務,并取出執(zhí)行。

這種調(diào)度方式的好處在于,它能夠在內(nèi)存中以極低的成本維護一個高效的任務調(diào)度隊列,避免了頻繁訪問數(shù)據(jù)庫帶來的性能開銷。

任務分配與執(zhí)行

當任務到達觸發(fā)時間時,調(diào)度中心會根據(jù)任務的配置信息和執(zhí)行器的注冊信息,選擇合適的執(zhí)行器來執(zhí)行任務。這里涉及到XXL-JOB的路由策略,包括第一個、最后一個、輪詢、隨機、一致性Hash等多種策略。

  • 第一個/最后一個:直接選擇注冊列表中的第一個或最后一個執(zhí)行器。
  • 輪詢:依次選擇注冊列表中的執(zhí)行器,實現(xiàn)負載均衡。
  • 隨機:隨機選擇一個執(zhí)行器來執(zhí)行任務。
  • 一致性Hash:通過一致性Hash算法,將任務均勻分配到各個執(zhí)行器上,實現(xiàn)負載均衡的同時,減少節(jié)點增減對任務分配的影響。

執(zhí)行器接收到任務后,會基于線程池執(zhí)行任務,并將執(zhí)行結(jié)果放入內(nèi)存隊列中。執(zhí)行器的回調(diào)線程會消費這個隊列中的結(jié)果,并主動上報給調(diào)度中心。用戶可以在調(diào)度中心查看任務的執(zhí)行日志和結(jié)果。

四、XXL-JOB的高級特性

彈性擴容縮容

XXL-JOB支持執(zhí)行器的動態(tài)注冊和注銷,這意味著當有新的執(zhí)行器機器上線或者下線時,調(diào)度中心能夠在下次調(diào)度時重新分配任務,實現(xiàn)彈性擴容縮容。這種特性使得XXL-JOB能夠輕松應對業(yè)務量的變化,提高系統(tǒng)的靈活性和可擴展性。

豐富的觸發(fā)策略

XXL-JOB提供了多種任務觸發(fā)策略,包括Cron觸發(fā)、固定間隔觸發(fā)、固定延時觸發(fā)、API觸發(fā)、人工觸發(fā)、父子任務觸發(fā)等。這些觸發(fā)策略可以滿足不同場景下的需求,使得任務調(diào)度更加靈活和高效。

任務失敗重試與告警

當任務執(zhí)行失敗時,XXL-JOB支持自定義任務失敗重試次數(shù),并在達到重試次數(shù)上限后發(fā)送告警通知。告警方式包括郵件、短信等多種方式,用戶可以根據(jù)實際需求進行配置。這種機制保證了任務的高可用性和可靠性。

五、總結(jié)

通過對XXL-JOB內(nèi)部機制的揭秘,我們可以看到它在任務調(diào)度方面的強大功能和高效實現(xiàn)。從調(diào)度中心到執(zhí)行器,從時間輪調(diào)度到任務分配與執(zhí)行,再到彈性擴容縮容、豐富的觸發(fā)策略和任務失敗重試與告警等高級特性,XXL-JOB以其輕量級、易擴展、高性能的特點贏得了市場的認可。如果你正在尋找一個穩(wěn)定可靠的分布式任務調(diào)度平臺來優(yōu)化你的系統(tǒng)架構(gòu)和提升業(yè)務效率那么XXL-JOB絕對值得你一試!讓任務飛起來不再是夢!

責任編輯:武曉燕 來源: 石杉的架構(gòu)筆記
相關(guān)推薦

2025-02-18 14:08:14

2022-09-23 13:57:11

xxl-job任務調(diào)度中間件

2020-07-17 09:33:39

CPU內(nèi)存調(diào)度

2022-03-26 17:13:22

ElasticJobxxl-job分布式

2023-01-04 09:23:58

2024-09-09 08:11:12

2024-07-31 08:18:40

2020-09-29 07:54:05

Express 飛起

2011-04-13 10:51:58

MATLAB

2022-01-27 08:44:58

調(diào)度系統(tǒng)開源

2023-06-27 07:44:53

xxl-job分布式任務調(diào)度平臺

2022-12-29 08:32:50

xxl-job緩存Schedule

2021-07-13 07:52:03

SQL面試COUNT(*)

2020-12-31 07:59:11

SaaS軟件即服務軟件

2023-11-30 22:06:43

2011-05-20 11:12:01

數(shù)據(jù)庫DB2優(yōu)化

2011-02-25 08:39:11

QFabric數(shù)據(jù)中心Juniper

2013-01-07 09:34:43

CodeLoveBAT

2016-01-19 17:03:59

數(shù)據(jù)中心網(wǎng)絡華為

2019-03-25 08:05:35

Elasticsear優(yōu)化集群
點贊
收藏

51CTO技術(shù)棧公眾號