當您希望節點發布到生產環境後能夠按照配置立即產生調度執行個體自動執行時,可以將節點的執行個體產生方式配置為發布後即時產生。
背景資訊
節點發布後,可在營運中心查看任務最新配置。DataWorks每晚會根據周期任務的節點配置,產生第二天周期性自動調度的周期執行個體。而節點建立和更新操作發布至生產環境當天,自動調度的周期執行個體何時生效,或依賴關係何時更新,與您選擇的執行個體產生方式有關。
在DataWorks,您可以通過執行個體產生方式的兩個選項:T+1次日產生、發布後即時產生,來控制是否立即生效。
-
T+1次日產生:節點建立和更新操作在第二天的周期執行個體上生效。如果節點發布到生產環境後,需要立即執行任務,可以針對該任務執行補資料操作。
-
發布後即時產生:節點建立和更新操作將及時生效,但發布節點的時間點與真正產生可運行執行個體之間存在時間差,這將對不同的任務運行情境產生不同影響,詳情可參見常見即時產生執行個體情境說明。
注意事項
-
調度配置執行個體產生方式為立即產生時,若修改重跑屬性,已經到期的執行個體重跑屬性選項不生效。
-
工作流程內的節點不支援單獨配置發布後即時產生,僅支援在工作流程編輯頁面的調度配置中對整個工作流程配置發布後即時產生。
-
無論在調度配置中選擇T+1次日產生執行個體,還是發布後即時產生執行個體,每天22:00至24:00為全量產生次日周期調度執行個體的時間。在該時間段發布的任務均需等待至第三天才能產生相應執行個體。
-
上遊任務執行個體產生方式不一致,可能導致孤立節點產生。
-
即時產生執行個體存在時間差:為避免執行個體變更導致任務運行異常,發布後即時產生執行個體存在10分鐘的時間差,即定時調度時間需晚於發布時間點至少10分鐘,任務才會按最新配置運行。
-
即時產生執行個體的作用範圍(任務代碼與調度配置的生效差異):並非所有變更都會隨執行個體即時生效,需區分任務代碼與調度配置兩類變更,二者的生效邏輯不同。
-
任務代碼(如SQL、Shell等指令碼邏輯):執行個體在運行時讀取的是任務當前最新的代碼。因此當代碼寫錯導致運行異常時,通常只需修正代碼並重新發布上線,再重跑對應執行個體即可恢複,無需重建執行個體。
-
調度配置(如調度參數、重跑策略等):此類屬性在執行個體產生時即固化到執行個體上。執行個體產生後再修改任務的調度配置,已產生的執行個體不會自動同步,仍會沿用產生時的舊配置運行。
例如:僅將調度參數由
${bizdate}改為${datehour}並發布,代碼中對${datehour}的引用會立即生效,但已產生執行個體上固化的舊參數上下文不會重新整理,二者不匹配時可能導致執行個體運行時參數解析失敗。修改節點關聯的資料來源執行個體等情境同理,當天已產生的執行個體仍會採用變更前的配置執行。
若需讓調度配置的變更作用到已產生的執行個體上,您可以:
-
在營運中心找到變更後的任務,通過重新整理執行個體操作批次更新已產生執行個體的調度配置;
-
或對該任務執行補資料操作,補資料將根據任務最新配置產生執行個體並執行。
-
即時產生執行個體說明
發布後即時產生執行個體僅適用於未來時間段的定時調度。具體來說,只有在任務的調度時間晚於發布時間點時,執行個體才會正常執行
-
建立任務當天會組建循環執行個體,但只有定時調度時間在未來時間段的執行個體才會正常執行;
-
更新節點調度時間,定時調度時間在過去,則不會產生執行個體;如果定時調度時間在未來時間段,將按照新配置產生新執行個體,替換更新前執行個體。
說明定時調度時間必須在節點發布時間點的10分鐘以後的未來時間,才可正常即時產生執行個體。
執行個體定時時間在正常執行的區間
-
情境一:建立節點當天產生真實啟動並執行周期執行個體,配置調度時,執行個體定時調度時間是節點發布產生執行個體時間的未來時間,兩個時間點之間的差值大於10分鐘,則會正常調度執行個體,詳情可參見:建立節點發布後選擇即時產生執行個體。
-
情境二:更新節點配置後,且執行個體定時調度時間是節點發布產生執行個體時間的未來時間,且兩個時間點之間的差值應大於10分鐘,則會正常調度執行個體,調度的執行個體為更新後的執行個體。詳情請參見:更新發行任務的調度周期。
-
情境四:變更任務定時時間,對下遊依賴關係的影響。
-
變更後的執行個體調度時間點是節點發布產生執行個體的預定未來時間,且兩個時間點之間的差值大於10分鐘,則會正常調度執行個體,下遊未啟動並執行執行個體,將依賴變更後的新執行個體。詳情可參見:變更任務調度時間,對下遊依賴關係的影響。
-
變更後的執行個體調度時間點是節點發布產生執行個體的預定過去時間,則會產生空跑執行個體,下遊未運行執行個體,將成為孤立節點,詳情可參見:上下遊任務執行個體產生方式不一致。
-
不建議在修改生產節點調度配置時使用該功能。該功能可能存在依賴關係變更、依賴關係錯亂、執行個體替換、執行個體被刪除等現象,導致當天依賴關係變得複雜,但第二天任務依賴關係會恢複正常。
執行個體定時時間在空跑的區間
定時調度時間在節點發布時間的過去時間,仍會產生自動調度的周期執行個體,但執行個體會空跑,執行個體狀態為即時產生的到期執行個體,不會產生真實運行代碼邏輯,詳情可參見:建立節點發布後選擇即時產生執行個體。
-
情境一:執行個體定時調度時間是節點發布產生執行個體的預定未來時間,兩個時間點之間的差值應小於10分鐘。該執行個體狀態為即時產生的到期執行個體。
例如:A節點的定時調度時間為
09:05,而節點的發布時間為09:00。若執行個體的調度時間點位於節點發布產生執行個體時間點的未來時刻,並且兩者之間的時間差小於10分鐘,則A節點將產生即時產生的到期執行個體的空跑執行個體。 -
情境二:執行個體定時調度時間點是節點發布產生執行個體時間的過去時間點,立即產生即時產生的到期執行個體。
例如:A節點的調度時間配置為
09:00,發布時間為10:00,執行個體產生時間點在發布時間點之前。則A節點立即產生即時產生的到期執行個體的空跑執行個體。
常見即時產生執行個體情境說明
使用發布後即時生成方式產生執行個體時,相關功能情境的執行個體運行及上下遊依賴情況如下: