<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [toc] ## 一、什么是dolphinscheduler? ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20201031223912411.png#pic_center) Apache DolphinScheduler,是一個分布式易擴展的可視化DAG工作流任務調度系統。致力于解決數據處理流程中錯綜復雜的依賴關系,使調度系統在數據處理流程中**開箱即用**。 更多簡介信息請查看[官網](https://dolphinscheduler.apache.org/zh-cn/)。 本文就讓我們跟隨子涵先生來用圖說源碼~走你!┏ (゜ω゜)=? ## 二、圖說dolphinscheduler任務執行過程 ### 2-1 概念梳理 為了方便大家容易理解,子涵先生先幫大家梳理一下Dolphinscheduler中的幾個概念: - ProcessDefinition:流程圖定義,即用戶在項目空間下通過拖拽保存的任務信息; - ProcessInstance:流程圖實例。了解Java的同學可以通過class信息與類實例,來類比processDefinition與processInstance的概念。 - Task:任務配置信息。一個流程圖中可以有多個任務。 - TaskInstance:任務實例。是根據任務配置信息生成的。 模塊 ### 2-2 工作流執行過程源碼解析 #### APIServer的作用 用戶點擊"運行"按鈕時,工作流的執行過程就開始了。處理UI相關用戶請求的都是APIServer模塊,啟動命令由`ExecutorController.execute()`進行處理,最終交給持久化到`t_ds_command`這個隊列表中。 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20201101110651689.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2w3MTQ0MTc3NDM=,size_16,color_FFFFFF,t_70#pic_center) #### MasterSever的作用 MasterServer的主要作用是:解析任務創建流程實例、按照優先級提交任務隊列、負載均衡、把任務分發給workerServer。接下來我們用畫圖的方式看看他是怎么執行的。 MasterServer啟動后,會通過一個`masterSchedulerService`進行以下幾個步驟: (1)MasterServer環境檢查; (2)監聽工作流隊列(t_ds_command),查找可運行command(); (3)根據command返回流程實例; (4)流程實例交給異步線程運行。 ![在這里插入圖片描述](https://img-blog.csdnimg.cn/202011011127084.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2w3MTQ0MTc3NDM=,size_16,color_FFFFFF,t_70#pic_center) #### WorkerServer的作用 MasterServer使用netty的方式遠程調用workerServer處理任務。worker任務的處理主要交給`TaskExecuteProcessor`來負責執行。圖示如下: ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20201101115842879.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2w3MTQ0MTc3NDM=,size_16,color_FFFFFF,t_70#pic_center) ## 三、結語 用圖說代碼是一個學習源碼的不錯的方式:一來可以清晰剖析代碼結構,二來通過記錄源碼關鍵位置,回過頭來再看時節省時間,且有跡可循。 有朋友私聊想獲得我的作圖,子涵特意把圖在[processOn](https://www.processon.com/i/55e3d74ee4b0e4854096c282)上畫了一遍,[點我直達??](https://www.processon.com/view/60e84e4ee401fd047de856a6)。 >感謝您的賞讀。客官,點贊、留言再走唄~或者留下您的問題一起探討\~ >讓我們一起共同進步! > ![在這里插入圖片描述](https://img-blog.csdnimg.cn/20200724185322310.PNG#pic_center#pic_center)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看