xxl-job排程策略的研究報告
阻塞策略研究
xxl-job一共有如下三種任務阻塞策略:單機序列、丟棄後續排程、覆蓋之前排程(如下圖)
不同阻塞策略的研究:
實驗結果如下表:
不同阻塞策略下不同執行器的執行結果
執行器1
執行器2
單機序列
接受到兩次,執行兩次,按順序執行
接受到兩次,執行兩次,按順序執行
丟棄後續排程
對重複的任務只接受一次(接受到一次)
對重複的任務只接受一次(接受到一次)
覆蓋之前排程
在執行過程中如果收到了同乙個任務會立馬停掉當前任務去執行最新進來的任務(接受到兩次)
在執行過程中如果收到了同乙個任務會立馬停掉當前任務去執行最新進來的任務(接受到兩次)
路由策略的研究
1.第乙個:當有任務待執行器執行時,排程中心會將任務下發到權重較高(路由路徑最短的)的執行器,比如當我們將執行器與排程器同時部署在同一臺伺服器上,那麼此執行器的權重最高,它為第乙個,如果它掛了那麼,90s以後會重新設定第乙個。在執行過程中掛了,那麼此任務執行失敗,在未來的90s內有新的任務進來也將會失敗。
2.最後乙個:原理同上
3.隨機:當有任務待執行器執行時,排程中心會將任務隨機下發某個執行器上,在執行過程中掛了,那麼此任務執行失敗,在未來的90s內有新的任務進來也將會失敗。
4.輪詢:原理同上
5.一致性hash:原理同上
6.最不經常使用:原理同上
7.最近最久未使用:原理同上
9.忙碌轉移:原理同上
10.分片廣播:原理同上
總結:阻塞策略是用來設定任務該如何執行,路由策略是用來分發任務,兩者是完全不同的概念。
問題1:如何設定讓排程器更快將不可用的執行器移除?
答:參看原始碼:設定registryconfig.dead_timeout的時間即可。
//來自於包:
package com.xxl.job.admin.core.thread;
// remove dead address (admin/executor)
listids = xxljobadminconfig.getadminconfig().getxxljobregistrydao().finddead(registryconfig.dead_timeout, new date());
public class registryconfig
}
問題2:假設我有如下情況他的執行結果是怎樣的?
阻塞策略使用覆蓋之前的之前排程,同時路由策略採用故障轉移,這個任務執行所需花費的時間是30s,在30s內我傳送了兩次執行該任務的請求,那麼他的執行結果是怎樣的?
答:因為我們採用的是故障轉移的路由策略,所以我們要搞清楚我們的兩次執行該任務的請求是在發生故障之前發的還是在發生故障以後發的,比如第乙個請求傳送過去,然後緊接著傳送第二個,在兩個請求都傳送出去時才掛掉,那麼此次任務執行失敗,反之,如果第一次請求傳送過去執行了10s,然後執行器掛了,然後發起了第二次請求,那麼此時第二次任務請求被轉移到新的執行器上,第二次請求執行成功。
Ohloh研究報告
由於近期接合ospaf同樣是乙個開源專案的成熟度分析工具,由於該專案現在ohloh我們有共同的東西,這麼ohloh我們進行了調查。簡單的說,初始ohloh是乙個 搜尋工具。我們輸入一行 然後他能夠查詢到這行 出如今那些開源軟體的哪些類中,還是比較強大的,特別是在進行一些源 追蹤的任務的時候。例如以下...
研究報告 侯總迅速躥紅現象研究報告
一.侯總事件總述 整個訪談過程中,侯總多次接觸網易主持人的身體,方式有 拍肩,摟肩,拍背,拍腿。這顯示他在人際交往中屬於進攻型的人物,用密集的身體接觸給對方一種暗 示性誘導 大家的關係很融洽親密。而在這四個動作中,真正屬於他發自內心的動作是拍腿。當他在開玩笑的時候,一般採取前面三個動作。而真正想要闡...
最新SaaS研究報告
最新saas研究報告 什麼saas 為什麼saas 概念一 軟體工作者的價值 bill gates是第乙個公開宣告,軟體是工程師辛勤工作的結果,是有價值的,是應該付費的,之後就有了軟體的授權費 license fee 在license模式下,軟體一次付費終生使用的方式銷售給客戶,但軟體開發者為了持續...