分佈式調度框架Tbschedule結構分析【01】

說起分佈式調度框架Tbschedule 先從 Tbschedule-console 分析

對應實體類:

com.taobao.pamirs.schedule.strategy.ScheduleStrategy
1.策略名稱:strategyName

2.任務類型:

public enum Kind {
    Schedule, Java, Bean
}
3.任務名稱:taskName

  此任務名稱對應 具體的任務名稱

4.任務參數:taskParameter   這個參數目前一直沒有用到過。

5.單JVM最大線程組數量  :numOfSingleServer

單JVM最大線程組數量,如果是0,則表示沒有限制.每臺機器運行的線程組數量 =總量/機器數

注意這個機器數 有點坑:機器數應該是啓動的JVM的數量。這個機器數和我們平時理解的服務器的數量不是同一個

概念

6.最大線程組數量:assignNum

   所有服務器能夠運行的最大數。這個又和我們理解的不太一樣。應該是所有JVM能夠同時運行的最大線程組數量。tbschdule分佈式調度框架中有任務切片的功能。

   其實這個框架中的任務 可以舉個栗子說明:某理財平臺 每天10點會全量同步用戶收益,這個算是一個任務。不管這個任務中包含多少數據。按照日常需求,我們肯定是想讓這個定時任務 以最快的速度,且不重複的執行完畢。但是單臺JVM的執行性能是有上限的。即使你單臺服務器上的JVM開啓多線程處理,總歸會遇到單機性能瓶頸。此時tbshcule就出場了。此地的assignNum的含義是你能將這個任務切分成幾片,並行執行。例如:你總共有1W條需要同步的用戶收益記錄,如果切分成四片之後,每個線程組只需要領取 2500個 要同步的數據。且每個線程組,又是多線程的,這樣運行就效率高了。具體的切片方案有很多種。

這些切片方案最長見的是採用MYSQL的分表的hash切片策略。

具體可以參考:

https://www.jianshu.com/p/7aec260ca1a2

這塊的切片要和 任務添加 種的 【任務項(","分隔):】這個選項有關係後續會繼續說明

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章