1. 程式人生 > >elastic job原理解析

elastic job原理解析

1、每個作業程序都對應一個JobInstance,儲存在JobRegistry中       一個instance就是執行此job分片的一個程序,instanceid由ip+程序號組成。       JobName -> JobInstance       JobName -> shardtotalNumber(該job分片的總數)       JobName -> 作業是否執行       JobName -> JobScheduleController(作業排程控制器)       JobName -> CoordinaryRegistryCenter(註冊中心) 2、主節點選舉觸發       a、主節點down機       b、主節點機器設定為disable 3、重新分片觸發       a、config的分片總數發生了變化       b、節點down 4、failover的觸發      a、節點down,執行在這個instanceid上的分片或者已經failover的分片會重新標記成failover      b、關於failover的配置改變設定為false,刪除failover的相關資訊      監聽到failover的節點如果當前沒有要執行的作業,則直接抓取failover的分片執行。 5、在instanceid上新增TRIGGER,可以出發當前的instance上的job執行(前提是此instance上的job不在執行中)。 6、配置改變會從新排程作業。 7、與zookeeper之間的連線丟失會停止作業排程,等待連線恢復會重新排程。 

三、啟動流程如下圖:

JobScheduleController就是封裝了quartz的排程資訊。

四、作業分片流程如下圖: