elastic job的原理簡介

2021-08-28 08:34:13 字數 1246 閱讀 5570

elastic-job :

1,簡介

是噹噹開源的一款非常好用的作業框架,在這之前,我們開發定時任務一般都是使用quartz ,對於業務量小的話 quartz是可以滿足我們的要求的,使用quartz對於大的業務量的不足:

a)quartz應用服務多節點部署,可能會重複多次執行而引發系統邏輯的錯誤 。

b)quartz的集群僅僅只是用來ha,節點數量的增加並不能給我們的每次執行效率帶來提公升,即不能實現水平擴充套件。

對於定時任務quartz的不足,因此elastic-job應運而生。

2,使用場景:

典型的job應用場景,比如餘額寶里的昨日收益 ,job在每天某個時間點開始,給所有餘額寶使用者計算收益 ,如果使用者數量不多,我們可以輕易使用quartz來完成,我們讓計息job在某個時間點開始執行,迴圈遍歷所有使用者計算利息,這沒問題 ;如果使用者體量特別大,處理的時候可能出現的問題:

a)我們可能會面臨著在第二天之前處理不完這麼多使用者(單節點的情況下,單個的job應用);

b) 如果將quartz的job應用以多傑點部署的話,多個job同時執行,很容易造成重複執行,比如使用者重複計息,為了避免這種情況,我們可能會對job的執行加鎖,保證始終只有乙個節點能執行,

出現這樣的情況 ,elastic-job可以幫我們完美地解決。

3,elastic-job的原理:

a)elastic-job底層的任務排程還是使用的quartz,通過zookeeper來動態給job節點分片 ,通過集群達到水平擴充套件,集群裡的每個節點都處理部分使用者,不管使用者數量有多龐大,我們只要增加機器就可以了 ,單台機器特定時間能處理n個使用者,2臺機器處理2n個使用者,3臺3n,4臺4n...,

b)elastic-job開發的作業都是zookeeper的客戶端,比如我希望3臺機器跑job,我們將任務分成3片,框架通過zk的協調,最終會讓3臺機器分別分配到0,1,2的任務片,server0執行id%3==0的使用者,server1執行id%3==1的使用者,server2執行id%3==2的使用者;

c)在上面的基礎上再增加一台服務server3,此時server3分不到任務分片,因為只有3片,已經分完了。沒有分到任務分片的作業程式將不執行;如果此時server2掛了,那麼server2的分片項會分配給server3,server3有了分片,就會替代server2執行;如果此時server3也掛了,只剩下server0和server1了,框架也會自動把server3的分片隨機分配給server0或者server1 

本問大概介紹了下elastic-job 的使用場景和基本的原理,參考博文:

elastic job 執行原理

elastic job執行原理 1 如果只有乙個分片的情況下,就是和原生的quartz一樣的,就是所有的任務都在一台機器上面執行 2 如果有兩個分片的情況下,然後5個job在兩台機器上面執行 機器 machine1,machine2 job job1,job2,job3,job4,job5 分片 s...

Oracle BAM原理簡介

oracle bam全稱為oracle busines activity monitoring,中文叫oracle 業務活動監視 bam有兩種功能 1.建立實時report 2.建立基於一定規則的alert bam最大的特點就是,它的功能都是實時的,任意的資料變化,他都能實時的反應到正在顯示的rep...

git原理簡介

git 究竟是怎樣的乙個系統呢?請注意,接下來的內容非常重要,若是理解了 git 的思想和基本工作原理,用起來就會知其所以然,游刃有餘。在開始學習 git 的時候,請不要嘗試把各種概念和其他版本控制系統 諸如 subversion 和 perforce 等 相比擬,否則容易混淆每個操作的實際意義。g...