任務流程引擎設計

1、前言前端

        前段時間作的一塊東西,涉及到任務的拆解與依賴,因爲時間緊急,當時採用的硬編碼辦法解決,如今終於回過神來,因而設計成一個「小框架」。數據庫

2、問題描述框架

        進行大數據分析,用Java調用Sqoop接口將數據導入Hadoop,而後運行一個mapreduce任務和多個Hive任務進行建表、統計、分析,最後運算結果導回數據庫。dom

3、圖解問題oop

4、需求分析單元測試

        一、任務有分層測試

        二、任務之間有上下層級依賴,下層任務依賴於上層任務的運算結果大數據

        三、前端可配置化,用戶自行配置任務層級與依賴關係編碼

        四、運行過程當中前端能夠實時查詢到運行到哪一個層級,以及已經運行的節點的運行日誌線程

        五、運行過程當中只要有一個節點失敗,咱們認爲整個任務失敗,中止本次任務

        六、同層級的任務並行,任務至上而下運行

5、模型

        一、工做節點(WorkNode):完成某一具體任務

        二、任務(WorkTask):由N個工做節點組成一個任務

        三、線程組(ThreadGroup):同時執行同一層級任務

6、狀態     

        一、Task狀態:成功、失敗

        二、WorkNode狀態:未運行、運行中、失敗、成功

7、編碼

    一、常量定義

           (1)、 任務狀態

            

             (2)、 工做節點狀態

                    

        二、domain定義

                (1)、 工做任務定義(任務執行狀態、分層有序節點、當前執行到的層級)    

                    

                (2)、工做節點定義

                      

                    

            三、線程組設計

                 (1)、線程執行器接口

                            

                  (2)、線程組

                        

                   四、節點行爲接口,定義工做節點所能執行的動做,用於擴展,已經實現的節點動做有三種                                   (Hive執行HiveWorkNodeAction、Java執行JavaWorkNodeAction、MapReduce 執                                行 MapReduceWorkNodeAction)

                          

                    五、 節點線程執行器實現

                            

                    六、任務執行器,用於執行任務

                        

8、單元測試

            一、構建任務

                

                    運行結果:

                            

9、後記

       限於篇幅,代碼沒粘貼徹底, 後續會加入根據運行日誌,從失敗層級恢復任務(前提是全部任務都是可重入的)

相關文章
相關標籤/搜索