Oozie-Service-CallableQueueService

Oozie 使用 CallableQueueService 來異步執(zhí)行操作吻育;

特點:

Callables can be queued for immediate execution or for delayed execution (some time in the future).
加入執(zhí)行隊列的任務(wù)可能是可以立即被吊起的,也可能是未來某個時間才觸發(fā)的。
Callables are consumed from the queue for execution based on their priority.
執(zhí)行線程池根據(jù) 任務(wù)的執(zhí)行時間和任務(wù)的優(yōu)先級別來選取任務(wù)吊起包个。
When the queues (for immediate execution and for delayed execution) are full, the callable queue service stops queuing callables.
執(zhí)行線程池的任務(wù)隊列大小可配置矢沿,當?shù)竭_隊列最大值,線程池將不再接收任務(wù)何什。

參數(shù)說明:

int maxCallableConcurrency:并發(fā)數(shù)控制
Map<String, AtomicInteger> activeCallables:每種類型的任務(wù)的實時并發(fā)數(shù);
Map<String, Date> uniqueCallables:標識在隊列中的任務(wù)等龙,并且還沒有開始執(zhí)行完成的处渣,任務(wù)加入隊列前,需要和改map的任務(wù)做重復檢查蛛砰,用來防止任務(wù)的重復提交罐栈,執(zhí)行。
int interruptMapMaxSize:
ConcurrentHashMap<String, Set<XCallable<?>>> interruptCommandsMap:
int queueSize:任務(wù)隊列大小
ThreadPoolExecutor executor:任務(wù)執(zhí)行器

線程池選取的隊列是oozie自定義的隊列 PriorityDelayQueue:

特點:

根據(jù)隊列中元素的延時時間以及其執(zhí)行優(yōu)先級出隊列:

實現(xiàn)策略:

PriorityDelayQueue 中為每個優(yōu)先級別的任務(wù)設(shè)置一個 延時隊列 DelayQueue
因為使用的是jdk自帶的延時隊列 DelayQueue泥畅,可以保證的是如果任務(wù)在該隊列中的延時時間滿足條件荠诬,我們
通過poll()方法即可得到滿足延時條件的任務(wù),如果 poll()得到的是null位仁,說明該隊列的中任務(wù)沒有滿足時間條件的任務(wù)浅妆。

如何編排多個優(yōu)先級的隊列:
每次從PriorityDelayQueue去選取任務(wù),都優(yōu)先從最高優(yōu)先級的隊列來poll出任務(wù)障癌,如果最高的優(yōu)先級隊列中沒有滿足條件的任務(wù)凌外,則次優(yōu)先級隊列poll出任務(wù),如果仍未獲取
將按照隊列優(yōu)先等級以此類推涛浙。
餓死現(xiàn)象:假如高優(yōu)先級中的任務(wù)在每次獲取的時候都滿足條件康辑,這樣容易將低優(yōu)先級的隊列中滿足條件的任務(wù)活活餓死,為了防止這種情況的產(chǎn)生轿亮,在每次選取任務(wù)之前疮薇,遍歷
低優(yōu)先級隊列任務(wù),如果任務(wù)早已經(jīng)滿足出隊列條件我注,如果超時時間超過了我們設(shè)定的最大值按咒,我們會為這個任務(wù)提高優(yōu)先級,將這個任務(wù)優(yōu)先級加一但骨,添加到上個優(yōu)先級隊列中進行
排隊励七。

優(yōu)化隊列 PollablePriorityDelayQueue:

特點:

 在從隊列中選取任務(wù)的時候智袭,先判斷滿足時間的任務(wù)是否滿足并發(fā)等限制,如果滿足再從隊列中取出掠抬,而不是像PriorityDelayQueue那樣吼野,先取出如果不滿足并發(fā)等限制,再將該任務(wù)重新放置回去两波。

任務(wù)類型:

使用線程池異步執(zhí)行任務(wù)瞳步,任務(wù)和任務(wù)之間是無序的,針對具體的業(yè)務(wù)場景腰奋,可能執(zhí)行的單元是需要串序執(zhí)行的单起。oozie中封裝了 CompositeCallable 和 一般的 XCallable的任務(wù)
類型,前者是XCallable的一個集合劣坊,它能保證的是這個集合里面的XCallable是順序執(zhí)行的嘀倒。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市讼稚,隨后出現(xiàn)的幾起案子括儒,更是在濱河造成了極大的恐慌,老刑警劉巖锐想,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帮寻,死亡現(xiàn)場離奇詭異,居然都是意外死亡赠摇,警方通過查閱死者的電腦和手機固逗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來藕帜,“玉大人烫罩,你說我怎么就攤上這事∏⒐剩” “怎么了贝攒?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長时甚。 經(jīng)常有香客問我隘弊,道長,這世上最難降的妖魔是什么荒适? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任梨熙,我火速辦了婚禮,結(jié)果婚禮上刀诬,老公的妹妹穿的比我還像新娘咽扇。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布质欲。 她就那樣靜靜地躺著树埠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪把敞。 梳的紋絲不亂的頭發(fā)上弥奸,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天榨惠,我揣著相機與錄音奋早,去河邊找鬼。 笑死赠橙,一個胖子當著我的面吹牛耽装,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播期揪,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼掉奄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凤薛?” 一聲冷哼從身側(cè)響起姓建,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缤苫,沒想到半個月后速兔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡活玲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年涣狗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舒憾。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡镀钓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镀迂,到底是詐尸還是另有隱情丁溅,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布探遵,位于F島的核電站窟赏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏别凤。R本人自食惡果不足惜饰序,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望规哪。 院中可真熱鬧求豫,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚤告,卻和暖如春努酸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背杜恰。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工获诈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人心褐。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓舔涎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逗爹。 傳聞我的和親對象是個殘疾皇子亡嫌,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容