基於ice的分布式作業調度引擎的製作方法
2023-04-26 11:46:11 3
專利名稱:基於ice的分布式作業調度引擎的製作方法
技術領域:
本發明屬於計算機領域,涉及一種分布式作業調度引擎。
背景技術:
作業調度主要用於分布式計算,包括作業調度算法、與計算節點之間的通訊等方 面的內容。目前,大多數作業調度系統採用面向模塊化的架構,包含了作業提交模塊、作業 調度模塊、資源管理模塊等。各種模塊之間是平行對等的關係。這種架構缺乏層次,側重於 作業調度系統的服務端功能,沒有包含計算節點,與上層具體應用和具體硬體關係結合過 於緊密,不易於在不同應用環境下進行移植。在與計算節點進行作業控制時,大多數作業調度系統採用中間件技術,如微軟公 司的DCOM/. net, OMG的CORBA,SUN公司的Java中間件、WebSerices和ICE等。在作業調 度方面,DCOM/. net只支持微軟公司旗下的WindoWs作業系統,不支持其它平臺系統。CORBA 規範過於複雜,不易開發、維護和擴展。Java RMI是基於Java的解決方案,與其他語言兼容 性差。此外,它們都要求使用特定協議實現客戶端與服務端之間的訪問,不支持不同平臺上 的服務之間的互相訪問。Web Services是一種新的分布式計算技術,具有傳統的組件技術 特點,支持不同平臺上的服務之間的互操作,在遙感衛星數據處理系統中取得了廣泛的應 用。但是Web Services佔用大量的網絡帶寬和CPU開銷,需要私有化開發平臺,還存在安 全方面的問題。
發明內容
本發明的技術解決問題是克服現有技術的不足,提供了一種容易擴展維護、佔用 網絡帶寬和系統資源低的基於ICE的分布式作業調度引擎。本發明的技術解決方案是基於ICE的分布式作業調度引擎,採用三層分布式對 象的體系架構,包括服務接口層、調度管理層和計算資源層,調度管理層和計算資源層之間 通過ICE進行通信,服務接口層和調度管理層之間通過接口函數完成作業提交和結果返 回,其中服務接口層屬於引擎服務端,接收外部輸入的計算作業請求,將計算作業請求提 交到調度管理層;將調度管理層傳來的計算作業處理結果返回給外部;調度管理層屬於引擎服務端,實時監控計算資源層中各計算節點的負載狀態,根 據各計算節點的負載情況將服務接口層接收的計算作業請求分配給相關的計算節點進行 處理;將計算資源層中各計算節點的計算作業請求處理結果返回給服務接口層;計算資源層包含有多個計算節點,各計算節點部署了引擎客戶端,服從調度管理 層的調度分配,對分配的計算作業請求進行處理並將處理結果返回給調度管理層。所述的調度管理層包括配置文件、計算節點列表、可用節點列表、作業等待列表、 作業分配控制器和節點管理器,其中配置文件存儲計算資源層中各計算節點的信息,包括計算節點的名稱、地址、最大作業數;計算節點列表記錄計算資源層中各計算節點的名稱、地址、最大作業數,同時實時記錄計算節點的可用狀態;可用節點列表記錄處於可用狀態的計算節點正在執行作業的參數、佔用的作業 數和空閒的作業數;作業等待列表記錄需要等待分配計算節點的計算作業請求;作業分配控制器負責對計算作業請求進行分配,當有計算作業請求時,從可用節 點列表中取出第一個節點,如果該節點的空閒作業數不為零,將當前的計算作業請求分配 給該節點,同時修改該節點的負載情況,將該節點的已佔用作業數增加,空閒作業數減小, 並把該節點排到可用節點列表的末尾,如果該節點的空閒作業數為零,則直接將該節點排 到可用節點列表的末尾,依次類推從可用節點列表中讀取下一節點進行處理;當計算作業 請求處理完成後,從可用節點列表中將處理該計算作業請求的計算節點找出,修改該節點 的負載情況,同時將該節點的已佔用作業數減小,空閒作業數增加;如果可用節點列表中的 所有節點都沒有空閒作業資源,則將該計算作業請求送入作業等待列表排隊等待,直到可 用節點隊列中的作業節點釋放出空閒的作業資源;節點管理器將配置文件存儲的信息送至計算節點列表和可用節點列表,對各計 算節點定時發送監控請求,根據計算節點是否對監控請求發出回應判斷計算節點狀態正常 或者故障並對計算節點列表和可用節點列表進行實時更新。本發明與現有技術相比的優點在於本發明作業調度引擎採用了三層分布式對象 的體系結構,引擎可以對由多個計算節點組成的計算集群進行分布式的管理,並且能夠根 據計算節點的負載情況,將計算作業分配給集群內的計算節點。引擎具有唯一的外部作業 接口,所有計算節點對外表現為一體,用戶不需要關心作業運行在哪個計算節點。採用ICE 中間件實現計算節點之間的通訊,可以實現根據實際應用時引擎的負載情況增刪節點而不 會影響引擎的穩定性,以保證引擎具有可擴展性和提高引擎的可靠性。引擎具有容易擴展 維護、佔用網絡帶寬和系統資源低等優點。
圖1為本發明調度引擎的結構圖;圖2為本發明調度管理層的作業調度原理圖;圖3為本發明引擎的工作流程圖。
具體實施例方式ICE是近幾年在CORBA技術基礎上發展出的一個新中間件技術,有著跨平臺性好, 性能高,安全性高,易於開發和維護等優點。ICE採用客戶-服務端機制,可以運行在不同的 作業系統和機器架構上,並且支持多種網絡技術進行通信。客戶端和服務端的底層核心提 供網絡通信的環境支持,包含了協議、線程、字節等與網絡相關的內容。如圖1所示,本發明作業調度引擎採用三層分布式對象的體系架構,S卩服務接口 層、調度管理層和計算資源層,每個層提供不同的功能,不同層之間相互獨立。調度管理層 和計算資源層之間通過ICE進行通信,服務接口層和調度管理層之間通過接口函數完成作業提交和結果返回。服務接口層是外部計算作業與引擎交互的唯一入口,負責接收外部的 計算作業提交請求和將作業提交到調度管理層,在作業處理完成後將結果返回給外部。調 度管理層具有作業管理調度和節點監控的功能,負責根據計算節點的負載情況向節點分配 計算作業和監測各個計算節點的運行狀態。計算資源層負責承擔請求作業的計算任務,由 多個計算節點組成。引擎使用ICE的API對按照ICE規範定義的Slice語言生成代理和骨 架。代理運行在引擎服務端,負責向計算節點上的應用程式發起調用請求,骨架運行在引擎 客戶端,是代理在服務端的等價物,負責在ICE和應用程式之間進行線程控制。也就是說, 本發明作業調度引擎分為服務端和客戶端兩個部分,服務端包含服務接口層和調度管理 層,運行在管理節點上,客戶端運行在計算資源層中的所有計算節點上。引擎利用ICE來實 現服務端和客戶端之間的網絡通信,完成遠程調用計算節點上的應用程式和監測計算節點 的運行狀態。 作為引擎的核心,調度管理層需要完成作業分配和節點管理兩個核心功能。調度 管理層內部維護三個列表,分別是計算節點列表、可用節點列表和作業等待列表。計算節點 列表記錄了計算資源層中的所有計算節點信息,包括節點的運行狀態、可運行的最大作業 數和地址信息等。可用節點列表記錄了當前正在運行的計算節點信息,包括已經佔用的作 業數、空閒的作業數和佔用作業參數等。作業等待列表記錄了需要等待分配節點的計算作 業。本發明引擎採用FIFO算法來管理計算節點中的可用節點列表,如圖2所示。FIFO 算法在作業分配控制器中進行,通過作業分配控制器對可用節點隊列進行管理,能夠根據 計算節點的負載情況對並發的計算作業進行調度。當有作業請求時,調度管理層從可用節 點列表中取出第一個節點,將該作業請求分配給該節點。同時,修改該節點的負載情況,將 該節點的已佔用作業數增加和空閒作業數減小,把該節點排到隊列末尾。當請求作業處理 完成後,根據節點返回的結果信息從可用節點列表中將該節點找出,修改該節點的負載情 況,將剛才所佔用的作業資源釋放。如果可用節點列表中的第一個節點沒有空閒的作業資 源,則直接將其放回隊列末尾,取第二個節點,以此類推。如果可用節點列表中的所有節點 都沒有空閒作業資源,則將該請求的作業放入到一個作業等待列表中,直到可用節點隊列 中的節點釋放出空閒的作業資源。為了提高引擎的效率,在有新的作業請求時,引擎先查詢作業等待列表中是否有 正在等待節點資源的作業。如果沒有等待的作業,則引擎從可用節點列表中查詢具有空閒 資源的節點,並將該作業分配給取出的節點。如果尚有等待的作業,則引擎直接將該作業排 入作業等待列表。計算資源層中的所有計算節點組成一個計算集群,彼此之間互相備份,但是節點 之間的聯繫是鬆耦合的,可以實現根據實際應用時引擎的負載情況增刪節點而不會影響引 擎的穩定性,以保證引擎具有可擴展性。當有新的計算節點加入或者移出計算節點時,只需 要更改引擎的配置文件,然後重新啟動引擎。引擎啟動時,會從配置文件中讀取計算節點信 息,並將其保存到計算節點列表和可用節點列表內。在無故障節點的情況下,計算節點列表 和可用節點列表內的節點個數是一致的。本發明引擎通過節點管理器來動態管理計算節點隊列,從而對計算節點的進行運 行狀態監控,可以根據實際應用情況對計算節點進行刪減,以保證引擎的可擴展性和可靠性。為了提高引擎的可用性和容錯性,節點管理器定時對計算資源層中的計算節點進行是 否宕機的檢測。根據計算節點列表中的節點信息,節點管理器向計算節點發出應答請求,如 果計算節點在規定時間內沒有應答,則認為該節點已經宕機。如果該節點當前狀態為運行, 節點管理器會將該節點從可用節點列表中移出,並將計算節點列表中該節點的運行狀態改 為停止。如果在該節點上尚有未完成的作業,則先將正在運行的作業移至下一個節點上,再 將該節點從可用節點列表中移出。如果節點管理器向處於停止狀態的計算節點發出應答請 求後,該節點及時向節點管理器返回應答,則表明該計算節點已經恢復運行,節點管理器會 將該節點的狀態改為運行,再將其加入到可用節點列表。引擎啟動時,會從配置文件中讀取計算節點信息,並將其保存到計算節點隊列和 可用節點隊列內。配置文件中定義了計算節點的地址信息、節點名稱和最大作業數。其中, 計算節點的硬體性能(如CPU個數、內存大小等)決定節點上所支持的最大作業數。如圖 3所示,啟動後,引擎處於等待狀態,服務接口層接收到外部的計算作業請求後,將作業請求 發給調度管理層。調度管理層先判斷作業等待隊列中是否有處於等待狀態的隊列,如果有 等待作業則將作業插入到隊列中,如果無等待作業則判斷可用節點對列中是否有可用狀態 的計算節點。如果無可用節點則將該作業插入到作業等待隊列中,如果有可用節點則直接 將作業分配給該節點上。作業計算完畢後,將作業結果返回。調度管理層定時向計算節點 發出監控請求,並根據節點運行狀態更新計算節點隊列和可用節點隊列。 本發明說明書中未作詳細描述的內容屬本領域技術人員的公知技術。
權利要求
1.基於ICE的分布式作業調度引擎,其特徵在於採用三層分布式對象的體系架構,包 括服務接口層、調度管理層和計算資源層,調度管理層和計算資源層之間通過ICE進行通 信,服務接口層和調度管理層之間通過接口函數完成作業提交和結果返回,其中服務接口層屬於引擎服務端,接收外部輸入的計算作業請求,將計算作業請求提交到 調度管理層;將調度管理層傳來的計算作業處理結果返回給外部;調度管理層屬於引擎服務端,實時監控計算資源層中各計算節點的負載狀態,根據各 計算節點的負載情況將服務接口層接收的計算作業請求分配給相關的計算節點進行處理; 將計算資源層中各計算節點的計算作業請求處理結果返回給服務接口層;計算資源層包含有多個計算節點,各計算節點部署了引擎客戶端,服從調度管理層的 調度分配,對分配的計算作業請求進行處理並將處理結果返回給調度管理層。
2.根據權利要求1所述的基於ICE的分布式作業調度引擎,其特徵在於所述的調度 管理層包括配置文件、計算節點列表、可用節點列表、作業等待列表、作業分配控制器和節 點管理器,其中配置文件存儲計算資源層中各計算節點的信息,包括計算節點的名稱、地址、最大作 業數;計算節點列表記錄計算資源層中各計算節點的名稱、地址、最大作業數,同時實時記 錄計算節點的可用狀態;可用節點列表記錄處於可用狀態的計算節點正在執行作業的參數、佔用的作業數和 空閒的作業數;作業等待列表記錄需要等待分配計算節點的計算作業請求; 作業分配控制器負責對計算作業請求進行分配,當有計算作業請求時,從可用節點列 表中取出第一個節點,如果該節點的空閒作業數不為零,將當前的計算作業請求分配給該 節點,同時修改該節點的負載情況,將該節點的已佔用作業數增加,空閒作業數減小,並把 該節點排到可用節點列表的末尾,如果該節點的空閒作業數為零,則直接將該節點排到可 用節點列表的末尾,依次類推從可用節點列表中讀取下一節點進行處理;當計算作業請求 處理完成後,從可用節點列表中將處理該計算作業請求的計算節點找出,修改該節點的負 載情況,同時將該節點的已佔用作業數減小,空閒作業數增加;如果可用節點列表中的所有 節點都沒有空閒作業資源,則將該計算作業請求送入作業等待列表排隊等待,直到可用節 點隊列中的作業節點釋放出空閒的作業資源;節點管理器將配置文件存儲的信息送至計算節點列表和可用節點列表,對各計算節 點定時發送監控請求,根據計算節點是否對監控請求發出回應判斷計算節點狀態正常或者 故障並對計算節點列表和可用節點列表進行實時更新。
全文摘要
基於ICE的分布式作業調度引擎,採用三層分布式對象的體系結構,分為服務接口層、調度管理層和計算資源層。引擎定義了計算節點隊列和可用節點隊列,並利用先進先出(FIFO)算法對可用節點隊列中的多個計算節點進行分布式的管理,並且能夠根據計算節點的負載情況,將計算作業分配給集群內的計算節點。引擎採用ICE中間件技術實現服務端與客戶端之間的通訊,可以根據實際應用時引擎的負載情況增刪計算節點而不會影響引擎的穩定性,具有容易擴展維護、佔用網絡帶寬和系統資源低、可靠性高等優點。
文檔編號G06F9/46GK102033777SQ20101028601
公開日2011年4月27日 申請日期2010年9月17日 優先權日2010年9月17日
發明者喻文勇, 王治中 申請人:中國資源衛星應用中心