專利名稱:一種實(shí)現(xiàn)etl調(diào)度的方法及系統(tǒng)的制作方法
一種實(shí)現(xiàn)ETL調(diào)度的方法及系統(tǒng)技術(shù)領(lǐng)域本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種實(shí)現(xiàn)ETL調(diào)度的方法及系統(tǒng)。
技術(shù)背景數(shù)據(jù)倉(cāng)庫(kù)(DataWarehouse, DW)是一個(gè)面向主題的、集成的、相對(duì)穩(wěn)定 的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)獨(dú)立的數(shù) 據(jù)環(huán)境,而數(shù)據(jù)抽取、轉(zhuǎn)4灸和加載(Extraction-Transformation-Loading, ETL) 是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要一環(huán)。ETL用于將分布的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)(例如,關(guān)系數(shù)據(jù)、平面數(shù)據(jù)文 件等)抽取到臨時(shí)中間層后進(jìn)行清洗、轉(zhuǎn)換和集成,最后按照預(yù)先定義好的數(shù) 據(jù)倉(cāng)庫(kù)模型,將數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)中,使構(gòu)建的數(shù)據(jù)倉(cāng)庫(kù)成為聯(lián)機(jī)分析處理 和數(shù)據(jù)挖掘的基礎(chǔ)。在技術(shù)上,ETL主要涉及到關(guān)聯(lián)、轉(zhuǎn)換、增量、調(diào)度和監(jiān) 控等幾個(gè)方面。通常,數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)不要求與聯(lián)機(jī)事務(wù)處理系統(tǒng)中的數(shù)據(jù) 實(shí)時(shí)同步,因此,ETL可以定時(shí)進(jìn)行,但多個(gè)ETL的操作時(shí)間、順序和成敗 對(duì)數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的有效性有著至關(guān)重要的影響,從而直接影響到聯(lián)機(jī)分析處 理結(jié)果和數(shù)據(jù)挖掘結(jié)果的質(zhì)量。參閱圖1所示,現(xiàn)有技術(shù)下,在數(shù)據(jù)倉(cāng)庫(kù)中執(zhí)行ETL調(diào)度時(shí),需要規(guī)劃 出多個(gè)任務(wù)流程,例如,如圖l所示,過程A、過程B、過程C……即是規(guī)劃 出的多個(gè)任務(wù)流程;每個(gè)任務(wù)流程是由一個(gè)或多個(gè)原子級(jí)任務(wù)(以下筒稱為任 務(wù))組成,例如,如圖l所示,過程A中的抽取任務(wù)、清洗任務(wù)和加載任務(wù)即 是原子級(jí)任務(wù)。其中,歸屬于同一任務(wù)流程的各任務(wù)之間,存在前后依賴關(guān)系 的各任務(wù)按照其依賴關(guān)系串行運(yùn)行,而不存在前后依賴關(guān)系的各任務(wù)則可以并 行運(yùn)行;同理,存在前后依賴關(guān)系的各任務(wù)流程按照其依賴關(guān)系串行運(yùn)行,而 不存在前后依賴關(guān)系的各任務(wù)流程則可以并行運(yùn)行。但是,現(xiàn)有技術(shù)下,程序代碼分散配置在各個(gè)應(yīng)用服務(wù)器上, 一臺(tái)應(yīng)用服 務(wù)器根據(jù)配置的程序代碼內(nèi)容僅能執(zhí)行固定的任務(wù)流程,因此,歸屬于同一任 務(wù)流程的所有任務(wù)必須分配至同一應(yīng)用服務(wù)器進(jìn)行處理,這樣,便使得系統(tǒng)中 的應(yīng)用服務(wù)器資源難以得到合理分配,容易出現(xiàn)部分應(yīng)用服務(wù)器空閑,而部分 應(yīng)用服務(wù)器負(fù)荷過重的現(xiàn)象,從而造成嚴(yán)重的系統(tǒng)負(fù)載不均衡,并且也不利于應(yīng)用服務(wù)器數(shù)量的進(jìn)一步擴(kuò)展;另一方面,將每臺(tái)應(yīng)用服務(wù)器設(shè)置為一個(gè)獨(dú)立 運(yùn)行單元會(huì)給后期維護(hù)帶來不便,因?yàn)楫?dāng)應(yīng)用服務(wù)器出現(xiàn)運(yùn)行錯(cuò)誤時(shí)需維護(hù)人 員登錄每一臺(tái)應(yīng)用服務(wù)器進(jìn)行維護(hù),從而會(huì)耗費(fèi)大量的人力物力,增加了維護(hù) 成本。發(fā)明內(nèi)容本申請(qǐng)實(shí)施例提供一種實(shí)現(xiàn)ETL調(diào)度的方法及系統(tǒng),用以提高ETL調(diào)度 的執(zhí)行效率,減少誤操作概率,以及實(shí)現(xiàn)應(yīng)用服務(wù)器資源的負(fù)載均衡。 本申請(qǐng)實(shí)施例提供的具體技術(shù)方案如下 一種ETL調(diào)度的實(shí)現(xiàn)方法,包括根據(jù)預(yù)設(shè)的任務(wù)配置文件確定當(dāng)前需要執(zhí)行的至少一個(gè)任務(wù),所述任務(wù)配 置文件包括完成ETL調(diào)度所需執(zhí)行的各任務(wù),以及各任務(wù)之間的依賴關(guān)系;獲取各應(yīng)用服務(wù)器的資源信息,并將所述資源信息與針對(duì)所述至少一個(gè)任 務(wù)預(yù)設(shè)的限定條件進(jìn)行比較,獲得比較結(jié)果;根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行所述至少一個(gè) 任務(wù)的應(yīng)用服務(wù)器;將所述至少 一個(gè)任務(wù)分配至選定的應(yīng)用^^務(wù)器,并指示該應(yīng)用^^務(wù)器根據(jù) 設(shè)定的程序代碼執(zhí)行所述至少一個(gè)任務(wù)。一種管理系統(tǒng),包括知識(shí)庫(kù)單元,用于保存任務(wù)配置文件、針對(duì)各任務(wù)預(yù)設(shè)的限定條件和執(zhí)行 各任務(wù)時(shí)所需的程序代碼,所述任務(wù)配置文件用以定義完成ETL調(diào)度所需執(zhí)行的各任務(wù)之間的依賴關(guān)系;控制單元,用于對(duì)各應(yīng)用服務(wù)器的運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),獲得各應(yīng)用服務(wù)器 的資源信息;調(diào)度單元,用于解析所述任務(wù)配置文件以確定當(dāng)前需要執(zhí)行的至少一個(gè)任 務(wù),并指示代理單元執(zhí)行所述至少一個(gè)任務(wù);代理單元,用于從所述控制單元獲取各應(yīng)用服務(wù)器的資源信息,從所述知 識(shí)庫(kù)單元獲取針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件,并將兩者進(jìn)行比較,獲 得比較結(jié)果,以及根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行 所述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器,并將所述至少一個(gè)任務(wù)分配至選定的應(yīng)用服 務(wù)器,指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少一個(gè)任務(wù)。本申請(qǐng)實(shí)施例中,用于實(shí)現(xiàn)ETL調(diào)度的管理系統(tǒng)在分配每個(gè)任務(wù)之前, 按照針對(duì)各任務(wù)預(yù)設(shè)的限定條件,選擇執(zhí)行能力最適合的應(yīng)用服務(wù)器來完成當(dāng) 前任務(wù)的執(zhí)行工作,這樣,便實(shí)現(xiàn)了應(yīng)用服務(wù)器資源的統(tǒng)一管理,使系統(tǒng)中的 應(yīng)用服務(wù)器資源可以得到合理分配,有效避免了部分應(yīng)用服務(wù)器空閑,而部分 應(yīng)用服務(wù)器負(fù)荷過重的現(xiàn)象,從而實(shí)現(xiàn)了系統(tǒng)的負(fù)載均衡;同時(shí),管理系統(tǒng)將 執(zhí)行各任務(wù)所需的程序代碼統(tǒng)一保存在知識(shí)庫(kù)單元中,這便于在執(zhí)行各任務(wù)時(shí)進(jìn)行統(tǒng)一調(diào)度,避免了因程序代碼分散保存而導(dǎo)致的代碼版本混亂現(xiàn)象,也降 低了后期維護(hù)工作的難度,從而在很大程度上避免了人力物力的浪費(fèi),節(jié)省了 維護(hù)成本。
圖1為現(xiàn)有技術(shù)下ETL調(diào)度流程示意圖; 、圖2A為本申請(qǐng)實(shí)施例中執(zhí)行ETL調(diào)度的管理系統(tǒng)功能結(jié)構(gòu)示意圖;圖2B為本申請(qǐng)實(shí)施例中代理單元功能結(jié)構(gòu)示意圖;圖3為本申請(qǐng)實(shí)施例中管理裝置執(zhí)行ETL調(diào)度流程圖。
具體實(shí)施方式
為了提高ETL調(diào)度的執(zhí)行效率,減少誤操作率,以及實(shí)現(xiàn)應(yīng)用服務(wù)器資 源的負(fù)載均衡,本申請(qǐng)實(shí)施例中,在執(zhí)行ETL調(diào)度時(shí),根據(jù)預(yù)設(shè)的任務(wù)配置 文件確定當(dāng)前需要執(zhí)行的至少一個(gè)任務(wù),所述任務(wù)配置文件包括完成ETL調(diào) 度所需執(zhí)行的各任務(wù),以及各任務(wù)之間的依賴關(guān)系;獲取各應(yīng)用服務(wù)器的資源 信息,并將所述資源信息與針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件進(jìn)行比較, 獲得比較結(jié)果;根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行所 述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器;將所述至少一個(gè)任務(wù)分配至選定的應(yīng)用服務(wù) 器,并指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少 一個(gè)任務(wù)。本實(shí)施例中,所謂任務(wù),是指原子級(jí)的任務(wù),即是指ETL調(diào)度針對(duì)的后 臺(tái)程序,如ETL程序,聯(lián)機(jī)分析處理(On-Line Analytical Processing, OLAP) 程序,而任務(wù)流程是ETL調(diào)度的基本單元,由一個(gè)或多個(gè)原子任務(wù)組成。簡(jiǎn)言之,本實(shí)施例中,管理系統(tǒng)對(duì)應(yīng)用服務(wù)器資源、任務(wù)流程、程序代碼 和曰志都做到了統(tǒng)一管理,可以自動(dòng)均衡應(yīng)用服務(wù)器資源,并提高了應(yīng)用服務(wù) 器擴(kuò)容的便利性,也降低了維護(hù)人員的工作難度。下面結(jié)合附圖對(duì)本申請(qǐng)優(yōu)選的實(shí)施方式進(jìn)行詳細(xì)說明。參閱圖2A所示,本申請(qǐng)實(shí)施例中,用于執(zhí)行ETL調(diào)度的管理系統(tǒng)包括知 識(shí)庫(kù)單元20、調(diào)度單元21、代理單元22和控制單元23,其中,知識(shí)庫(kù)單元20,用于保存任務(wù)配置文件、針對(duì)各任務(wù)預(yù)設(shè)的限定條件和執(zhí) 行各任務(wù)時(shí)所需的程序代碼;以及各應(yīng)用服務(wù)器的地址、可運(yùn)行的任務(wù)內(nèi)容以及執(zhí)行能力等信息,是任務(wù)信息、程序信息、應(yīng)用服務(wù)器信息、被訪問數(shù)據(jù)庫(kù) 信息(如數(shù)據(jù)庫(kù)的連接地址,用戶名,密碼)的存儲(chǔ)庫(kù);這樣,便實(shí)現(xiàn)了應(yīng)用 服務(wù)器資源的統(tǒng)一、透明化管理,便于應(yīng)用服務(wù)器資源在系統(tǒng)內(nèi)的共享。控制單元23,用于對(duì)各應(yīng)用服務(wù)器的運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),獲得各應(yīng)用服務(wù) 器的資源信息;以及用于提供用戶接口,向用戶呈現(xiàn)操作平臺(tái),使用戶得以對(duì) 整個(gè)ETL調(diào)度流程的運(yùn)行狀態(tài)和執(zhí)行結(jié)果進(jìn)行監(jiān)控。8調(diào)度單元21,用于解析所述任務(wù)配置文件以確定當(dāng)前需要執(zhí)行的至少一個(gè) 任務(wù),并指示代理單元執(zhí)行所述至少一個(gè)任務(wù);本實(shí)施例中,調(diào)度單元21,使 用工作流的形式,根據(jù)預(yù)設(shè)的任務(wù)配置文件確定各任務(wù)之間的依賴關(guān)系,并向 代理單元22發(fā)送任務(wù)執(zhí)行請(qǐng)求報(bào)文。代理單元22,用于對(duì)任務(wù)執(zhí)行請(qǐng)求報(bào)文進(jìn)行路由轉(zhuǎn)發(fā),從而實(shí)現(xiàn)應(yīng)用服務(wù) 器資源的均衡分配,此過程包括從所述控制單元獲取各應(yīng)用力良務(wù)器的資源信 息,從所述知識(shí)庫(kù)單元獲取針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件,并將兩者 進(jìn)行比較,獲得比較結(jié)果,以及根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選, 選定用于執(zhí)行所述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器,并將所述至少一個(gè)任務(wù)分配至 選定的應(yīng)用服務(wù)器,指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少一個(gè) 任務(wù)。如圖2A所示,整個(gè)系統(tǒng)中,除管理系統(tǒng)外,還包括應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服 務(wù)器,其中,應(yīng)用服務(wù)器,用于執(zhí)行分配到的各任務(wù),本實(shí)施例中,應(yīng)用服務(wù)器可以是 ORACLE服務(wù)器、JAVA虛擬機(jī)或LIUXJ31務(wù)器等等。數(shù)據(jù)庫(kù)服務(wù)器, 一般通過調(diào)用數(shù)據(jù)庫(kù)服務(wù)器中存儲(chǔ)過程(procduce)來執(zhí) 行具體應(yīng)用過程(相當(dāng)于一個(gè)應(yīng)用程序的執(zhí)行)。參閱圖2B所示,上述代理單元22進(jìn)一步包括緩沖池220,定時(shí)處理單元221 和獲取通知單元222,其中緩沖池220,用于緩存各任務(wù),當(dāng)代理單元對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選時(shí), 若確定不存在符合預(yù)設(shè)的限定條件的應(yīng)用服務(wù)器,則將所述至少一個(gè)任務(wù)保存 至緩沖池中;定時(shí)處理單元221,用于定時(shí)提取緩沖池220中的至少一個(gè)任務(wù),并判斷當(dāng) 前是否存在符合所述限定條件的應(yīng)用服務(wù)器,以及在確定存在符合所述限定條 件的應(yīng)用服務(wù)器時(shí),將所述至少一個(gè)任務(wù)分配至該應(yīng)用服務(wù)器;或者,在確定所述至少一個(gè)任務(wù)在緩沖池中保存的時(shí)間長(zhǎng)度超過設(shè)定閾值時(shí),將所述至少一 個(gè)任務(wù)終止或掛起。獲取通知單元222,用于在指示選定的應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí) 行分配到的至少一個(gè)任務(wù)時(shí),從所述知識(shí)庫(kù)單元的指定存儲(chǔ)位置獲取執(zhí)行所述 至少一個(gè)任務(wù)所需的程序代碼,并將該程序代碼發(fā)送至選定的應(yīng)用服務(wù)器,或 者,將所述程序代碼在知識(shí)庫(kù)單元中的指定存儲(chǔ)位置通知選定的應(yīng)用服務(wù)器, 由該選定的應(yīng)用服務(wù)器自行獲取。上述各功能單元既可以是單獨(dú)的功能實(shí)體,也可以是集成在至少一個(gè)功能 實(shí)體中的功能模塊;其中,各功能單元可以通過軟件或/和硬件方式實(shí)現(xiàn),本實(shí)施例中,用于執(zhí)行ETL調(diào)度的管理系統(tǒng)內(nèi),各功能單元是基于分布式 結(jié)構(gòu)建立的,因此,需要設(shè)置控制單元23對(duì)整個(gè)的ETL調(diào)度進(jìn)行管理??刂茊?元23不僅作為系統(tǒng)資源和任務(wù)流程的監(jiān)控平臺(tái),也是整個(gè)管理系統(tǒng)與用戶交互 的平臺(tái),控制單元23執(zhí)行的程序分為前臺(tái)程序和后臺(tái)程序,其中前臺(tái)程序包括1) 日志管理,用于提供任務(wù)執(zhí)行狀態(tài)的查詢。用戶可以通it^戶端查詢 當(dāng)前正在的執(zhí)行的任務(wù)、等待執(zhí)行的任務(wù)、執(zhí)行錯(cuò)誤的任務(wù)以及錯(cuò)誤信息、執(zhí) 行完成的任務(wù)等等。用戶還可以對(duì)出錯(cuò)的任務(wù)進(jìn)行重做、跳過、掛起(即暫停) 和恢復(fù)(即結(jié)束暫停)等操作。2) 將接受到的任務(wù)執(zhí)行結(jié)果,以不同方式通知綁定該任務(wù)的用戶。3) 提供基于瀏覽器的可視化任務(wù)流程定義和管理。4) 知識(shí)庫(kù)信息管理。 后臺(tái)程序包括1) 對(duì)所有應(yīng)用服務(wù)器資源進(jìn)行監(jiān)控。2) 對(duì)各應(yīng)用服務(wù)器執(zhí)行任務(wù)的狀況進(jìn)行監(jiān)控?;谏鲜鯡TL調(diào)度模式,本實(shí)施例中,假設(shè)任務(wù)流程l中包含的各任務(wù)為 任務(wù)l、任務(wù)2、任務(wù)3……,那么,參閱圖3所示,管理系統(tǒng)/裝置執(zhí)行ETL調(diào)度 模式,將任務(wù)l分配至相應(yīng)的應(yīng)用服務(wù)器進(jìn)行處理的詳細(xì)流程如下步驟300:調(diào)度單元21讀取預(yù)設(shè)的任務(wù)配置文件,并才艮據(jù)任務(wù)配置文件的 設(shè)置內(nèi)容啟動(dòng)任務(wù)流程l,并將任務(wù)流程l中的第一個(gè)任務(wù)(以下稱為任務(wù)l) 發(fā)送給代理單元22請(qǐng)求執(zhí)行。步驟301:代理單元22從知識(shí)庫(kù)單元20獲取當(dāng)前可用于執(zhí)行任務(wù)1的各應(yīng)用 服務(wù)器的相關(guān)信息,該相關(guān)信息至少包含各應(yīng)用服務(wù)器的地址。參閱圖2所示, 本實(shí)施例中,假設(shè)系統(tǒng)內(nèi)存在三個(gè)應(yīng)用服務(wù)器,分別為應(yīng)用服務(wù)器A、應(yīng)用服 務(wù)器B和應(yīng)用服務(wù)器C。步驟302:代理單元22從控制單元23獲取當(dāng)前可用于執(zhí)行任務(wù)l的各應(yīng)用服 務(wù)器的資源信息。本實(shí)施例中,控制單元23用于對(duì)各應(yīng)用服務(wù)器的運(yùn)行情況進(jìn)行監(jiān)控,因此, 各應(yīng)用服務(wù)器當(dāng)前的資源信息可從控制單元23獲得,而一個(gè)應(yīng)用服用器的資源 信息包含但不限于應(yīng)用服務(wù)器當(dāng)前執(zhí)行的進(jìn)程數(shù)、當(dāng)前數(shù)據(jù)庫(kù)表內(nèi)剩余的存 儲(chǔ)空間以及當(dāng)前的CPU使用率等等,可以是其中的一種或任意組合;代理單元 22可以根據(jù)上述資源信息確定出最適合執(zhí)行任務(wù)1的應(yīng)用服務(wù)器。步驟303:代理單元22根據(jù)獲得的資源信息以及預(yù)設(shè)的限定條件,選定由 應(yīng)用服務(wù)器B執(zhí)行任務(wù)1。本實(shí)施例中,代理單元22可以根據(jù)預(yù)設(shè)的限定條件對(duì)各應(yīng)用服務(wù)器進(jìn)行篩 選。例如,執(zhí)行任務(wù)l的應(yīng)用服務(wù)器需要符合的限定條件可以是以下限定條件 中的一種或任意組合1、 應(yīng)用服務(wù)器當(dāng)前執(zhí)行的進(jìn)程數(shù)據(jù)不能超過20;2、 應(yīng)用服務(wù)器的數(shù)據(jù)庫(kù)表的存儲(chǔ)空間占用率不能超過90%;3、 應(yīng)用服務(wù)器當(dāng)前的CPU使用率不能超過80。/c。上述限定條件僅為舉例,實(shí)際應(yīng)用中可以根據(jù)具體應(yīng)用環(huán)境自行設(shè)置相應(yīng) 的限定條件,并且針對(duì)不同任務(wù)所設(shè)置的限定條件可以相同,也可以不同,視 具體應(yīng)用環(huán)境而定,在此不再贅述。若當(dāng)前存在兩個(gè)或兩個(gè)以上符合預(yù)設(shè)的限定條件的應(yīng)用服務(wù)器,則從中隨機(jī)選定一個(gè)應(yīng)用服務(wù)器;或者,選擇當(dāng)前執(zhí)行進(jìn)程數(shù)最少/CPU使用率最^/數(shù) 據(jù)庫(kù)表的存儲(chǔ)空間占用率最低的應(yīng)用服務(wù)器。當(dāng)然,實(shí)際應(yīng)用中,選擇的方式 并不限于上述幾種舉例,在此不再贅述。若當(dāng)前所有可用的應(yīng)用服務(wù)器均不滿足預(yù)設(shè)的限定條件,則當(dāng)前待分配的 任務(wù)l會(huì)被保存至緩沖池中,代理單元22會(huì)定時(shí)從緩存池中提取任務(wù)1,并判斷 當(dāng)前是否存在符合上述預(yù)設(shè)的限定條件的應(yīng)用服務(wù)器,直到將任務(wù)l分配出去 為止。步驟304:代理單元22將任務(wù)1發(fā)送至應(yīng)用服務(wù)器B,指示其執(zhí)行任務(wù)l。在實(shí)際應(yīng)用中,代理單元22在指示應(yīng)用服務(wù)器B執(zhí)行任務(wù)1時(shí),可以從 知識(shí)庫(kù)單元20中獲取任務(wù)1的程序代碼并將其發(fā)送至應(yīng)用服務(wù)器B,或者, 將任務(wù)1的程序代碼在知識(shí)庫(kù)單元20中的存儲(chǔ)位置通知應(yīng)用服務(wù)器B,由選 定的應(yīng)用服務(wù)器B自行獲取。步驟305:應(yīng)用服務(wù)器B根據(jù)知識(shí)庫(kù)單元20中保存的針對(duì)任務(wù)l的程序代碼, 將任務(wù)l解析為可執(zhí)行程序,并執(zhí)行該可執(zhí)行程序以完成任務(wù)l 。步驟306、應(yīng)用服務(wù)器B將任務(wù)1的執(zhí)行結(jié)果返回給控制單元23,本實(shí)施例 中,應(yīng)用服務(wù)器B以日志形式向控制單元23返回任務(wù)1的執(zhí)行結(jié)果。在實(shí)際應(yīng)用中,應(yīng)用服務(wù)器B在執(zhí)行任務(wù)1的過程中會(huì)出現(xiàn)調(diào)用第三方服務(wù) 器的情況,例如,應(yīng)用服務(wù)器B為JAVA虛擬機(jī),它通過Java數(shù)據(jù)庫(kù) 連接(Java Database Connectivity, JDBC )訪問數(shù)據(jù)庫(kù)服務(wù)器,因此,為了避 免增加第三方服務(wù)器的運(yùn)行負(fù)荷,應(yīng)用服務(wù)器B在執(zhí)行需要調(diào)用第三方服務(wù)器 的任務(wù)之前,必須通過代理單元22獲得訪問第三方服務(wù)器的令牌(即訪問權(quán)限, 如用戶名、密碼等等認(rèn)證信息)后才能執(zhí)行調(diào)用程序。在上述步驟303中,被放入緩沖池中的任務(wù),允許用戶終止或掛起,例如, 任務(wù)1在緩沖池中保存的時(shí)間長(zhǎng)度超過設(shè)定閾值,則代理單元33將任務(wù)1終止或 桂起。任務(wù)l終止或掛起后,依賴任務(wù)l的其他任務(wù)應(yīng)暫停,由人工干預(yù)后續(xù)處 理,例如,指示忽略任務(wù)l的錯(cuò)誤繼續(xù)執(zhí)行后續(xù)任務(wù);又例如,指示重新扭^亍 任務(wù)l,若執(zhí)行成功則繼續(xù)執(zhí)行后續(xù)任務(wù),否則,停止任務(wù)l。另一方面,在上述實(shí)施例中,控制單元23接收到任務(wù)1的執(zhí)行結(jié)果后,會(huì) 判斷任務(wù)流程l的繼續(xù)執(zhí)行是否需要人工干預(yù),若是,則通過系統(tǒng)消息將當(dāng)前 情況告知用戶并暫停向調(diào)度單元21發(fā)送任務(wù)1的執(zhí)行結(jié)果;否則,控制單元23 記錄任務(wù)1的執(zhí)行結(jié)果并將其發(fā)送給調(diào)度單元21,調(diào)度單元21接收到任務(wù)1的執(zhí) 行結(jié)果后會(huì)將依賴于任務(wù)l的下一任務(wù)(如,任務(wù)2 )發(fā)送給代理服務(wù)器22進(jìn)行 相應(yīng)處理,相關(guān)的處理流程同步驟300-步驟306,在此不再贅述。當(dāng)然,若當(dāng)前系統(tǒng)中存在兩個(gè)或兩個(gè)以上的可以并行處理的任務(wù),則可以 同時(shí)觸發(fā)相應(yīng)數(shù)目的如步驟300 -步驟306記載的才喿作流程,來處理上述多個(gè)并 行的任務(wù),例如,任務(wù)2和任務(wù)3為并行關(guān)系,則在任務(wù)l完成后,同時(shí)觸發(fā)任 務(wù)2和任務(wù)3的處理流程,以及在任務(wù)2和任務(wù)3處理完畢后,再繼續(xù)觸發(fā)后續(xù)任 務(wù)的處理流程,直至任務(wù)流程l處理完畢,在此不再贅述。綜上所述,本申請(qǐng)實(shí)施例中,用于實(shí)現(xiàn)ETL調(diào)度的管理系統(tǒng)在分配每個(gè)任 務(wù)之前,按照針對(duì)各任務(wù)預(yù)設(shè)的限定條件,選擇執(zhí)行能力最適合的應(yīng)用服務(wù)器 來完成當(dāng)前任務(wù)的執(zhí)行工作,這樣,便實(shí)現(xiàn)了應(yīng)用服務(wù)器資源的統(tǒng)一管理,使 系統(tǒng)中的應(yīng)用服務(wù)器資源可以得到合理分配,有效避免了部分應(yīng)用服務(wù)器空 閑,而部分應(yīng)用服務(wù)器負(fù)荷過重的現(xiàn)象,從而實(shí)現(xiàn)了系統(tǒng)的負(fù)載均衡;同時(shí), 管理系統(tǒng)將執(zhí)行各任務(wù)所需的程序代碼統(tǒng)一保存在知識(shí)庫(kù)單元中,這便于在執(zhí) 行各任務(wù)時(shí)進(jìn)行統(tǒng)一調(diào)度,避免了因程序代碼分散保存而導(dǎo)致的代碼版本混亂 現(xiàn)象,便于應(yīng)用服務(wù)器日后的擴(kuò)容,也降低了后期維護(hù)工作的難度,從而在很 大程度上避免了人力物力的浪費(fèi),節(jié)省了維護(hù)成本。為了描述的方便,以上所述管理系統(tǒng)的各部分以功能分為各種單元分別描 述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件或硬件中 實(shí)現(xiàn)。不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)實(shí)施例中的這些修改和變型屬 于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)中的實(shí)施例也意圖包含 這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1、一種ETL調(diào)度的實(shí)現(xiàn)方法,其特征在于,包括根據(jù)預(yù)設(shè)的任務(wù)配置文件確定當(dāng)前需要執(zhí)行的至少一個(gè)任務(wù),所述任務(wù)配置文件包括完成ETL調(diào)度所需執(zhí)行的各任務(wù),以及各任務(wù)之間的依賴關(guān)系;獲取各應(yīng)用服務(wù)器的資源信息,并將所述資源信息與針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件進(jìn)行比較,獲得比較結(jié)果;根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行所述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器;將所述至少一個(gè)任務(wù)分配至選定的應(yīng)用服務(wù)器,并指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少一個(gè)任務(wù)。
2、 如權(quán)利要求l所述的方法,其特征在于,所述資源信息包括應(yīng)用服務(wù)器 當(dāng)前執(zhí)行的進(jìn)程數(shù)、應(yīng)用服務(wù)器當(dāng)前數(shù)據(jù)庫(kù)表內(nèi)剩余的存儲(chǔ)空間和應(yīng)用服務(wù)器 當(dāng)前的CPU使用率中的一種或任意組合。
3、 如權(quán)利要求l所述的方法,其特征在于,對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選時(shí), 若確定存在兩個(gè)或兩個(gè)以上符合所述限定條件的應(yīng)用服務(wù)器,則從中隨機(jī)選定 一個(gè)應(yīng)用服務(wù)器。
4、 如權(quán)利要求l所述的方法,其特征在于,對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選時(shí), 若確定不存在符合預(yù)設(shè)的限定條件的應(yīng)用服務(wù)器,則將所述至少 一個(gè)任務(wù)保存 至緩沖池中,定時(shí)提取所述至少一個(gè)任務(wù),并判斷當(dāng)前是否存在符合所述限定 條件的應(yīng)用服務(wù)器,并在確定存在符合所述限定條件的應(yīng)用服務(wù)器時(shí),將所述 至少 一個(gè)任務(wù)分配至該應(yīng)用服務(wù)器。
5、 如權(quán)利要求4所述的方法,其特征在于,所述至少一個(gè)任務(wù)在緩沖池中 保存的時(shí)間長(zhǎng)度超過設(shè)定閾值時(shí),將所述至少一個(gè)任務(wù)終止或掛起。
6、 如權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,指示選定的應(yīng)用服 務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行分配到的至少一個(gè)任務(wù)時(shí),從指定存儲(chǔ)位置獲取 執(zhí)行所述至少一個(gè)任務(wù)所需的程序代碼并將該程序代碼發(fā)送至選定的應(yīng)用服務(wù)器,或者,將所述程序代碼的指定存儲(chǔ)位置通知選定的應(yīng)用服務(wù)器,由該選 定的應(yīng)用服務(wù)器自行獲取。
7、 如權(quán)利要求6所述的方法,其特征在于,接收到所述選定的應(yīng)用服務(wù) 器返回的所述至少一個(gè)任務(wù)的執(zhí)行結(jié)果后,根據(jù)所述任務(wù)配置文件確定存在依 賴所述至少一個(gè)任務(wù)的另一任務(wù)時(shí),指示觸發(fā)所述另一任務(wù)的執(zhí)行流程。
8、 一種管理系統(tǒng),其特征在于,包括知識(shí)庫(kù)單元,用于保存任務(wù)配置文件、針對(duì)各任務(wù)預(yù)設(shè)的限定條件和執(zhí)行 各任務(wù)時(shí)所需的程序代碼,所述任務(wù)配置文件包括完成ETL調(diào)度所需執(zhí)行的 各任務(wù)之間的依賴關(guān)系;控制單元,用于對(duì)各應(yīng)用服務(wù)器的運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),獲得各應(yīng)用服務(wù)器 的資源信息;調(diào)度單元,用于解析所述任務(wù)配置文件以確定當(dāng)前需要執(zhí)行的至少一個(gè)任 務(wù),并指示代理單元執(zhí)行所述至少一個(gè)任務(wù);代理單元,用于從所述控制單元獲取各應(yīng)用服務(wù)器的資源信息,從所述知 識(shí)庫(kù)單元獲取針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件,并將兩者進(jìn)行比較,獲 得比較結(jié)果,以及根據(jù)所述比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行 所述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器,并將所述至少一個(gè)任務(wù)分配至選定的應(yīng)用服 務(wù)器,指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少一個(gè)任務(wù)。
9、 如權(quán)利要求8所述的管理系統(tǒng),其特征在于,所述代理單元包括一個(gè)緩 沖池,當(dāng)代理單元對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選時(shí),若確定不存在符合預(yù)設(shè)的限定 條件的應(yīng)用服務(wù)器,則將所述至少一個(gè)任務(wù)保存至緩沖池中。
10、 如權(quán)利要求9所述的管理系統(tǒng),其特征在于,所述代理單元還包括一個(gè) 定時(shí)處理單元,該定時(shí)處理單元定時(shí)提取上述緩沖池中的至少一個(gè)任務(wù),并判 斷當(dāng)前是否存在符合所述限定條件的應(yīng)用服務(wù)器,以及在確定存在符合所述限 定條件的應(yīng)用服務(wù)器時(shí),將所述至少 一個(gè)任務(wù)分配至該應(yīng)用服務(wù)器。
11、 如權(quán)利要求10所述的管理系統(tǒng),其特征在于,所述定時(shí)處理單元確定 所述至少 一個(gè)任務(wù)在緩沖池中保存的時(shí)間長(zhǎng)度超過設(shè)定閾值時(shí),將所述至少一 個(gè)任務(wù)終止或掛起。
12、 如權(quán)利要求8-ll任一項(xiàng)所述的管理系統(tǒng),其特征在于,所述代理單 元還包括一個(gè)獲取通知單元,用于在指示選定的應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代 碼執(zhí)行分配到的至少一個(gè)任務(wù)時(shí),從所述知識(shí)庫(kù)單元的指定存儲(chǔ)位置獲取執(zhí)行 所述至少一個(gè)任務(wù)所需的程序代碼,并將該程序代碼發(fā)送至選定的應(yīng)用服務(wù) 器,或者,將所述程序代碼在知識(shí)庫(kù)單元中的指定存儲(chǔ)位置通知選定的應(yīng)用服 務(wù)器,由該選定的應(yīng)用服務(wù)器自行獲取。
13、 如權(quán)利要求12所述的管理系統(tǒng),其特征在于,所述控制單元接收到 選定的應(yīng)用服務(wù)器返回的所述至少一個(gè)任務(wù)的執(zhí)行結(jié)果后,將該執(zhí)行結(jié)果通知 所述調(diào)度單元,所述調(diào)度單元根據(jù)所述任務(wù)配置文件確定存在依賴所述至少一 個(gè)任務(wù)的另一任務(wù)時(shí),指示觸發(fā)所述另一任務(wù)的執(zhí)行流程。
全文摘要
本申請(qǐng)公開了一種ETL調(diào)度的實(shí)現(xiàn)方法,該方法為根據(jù)預(yù)設(shè)的任務(wù)配置文件確定當(dāng)前需要執(zhí)行的至少一個(gè)任務(wù),所述任務(wù)配置文件包括完成ETL調(diào)度所需執(zhí)行的各任務(wù)以及各任務(wù)之間的依賴關(guān)系;獲取各應(yīng)用服務(wù)器的資源信息,并將其與針對(duì)所述至少一個(gè)任務(wù)預(yù)設(shè)的限定條件進(jìn)行比較,以及根據(jù)比較結(jié)果對(duì)各應(yīng)用服務(wù)器進(jìn)行篩選,選定用于執(zhí)行所述至少一個(gè)任務(wù)的應(yīng)用服務(wù)器;將所述至少一個(gè)任務(wù)分配至選定的應(yīng)用服務(wù)器,并指示該應(yīng)用服務(wù)器根據(jù)設(shè)定的程序代碼執(zhí)行所述至少一個(gè)任務(wù)。這樣,便實(shí)現(xiàn)了應(yīng)用服務(wù)器資源的統(tǒng)一管理,使系統(tǒng)中的應(yīng)用服務(wù)器資源可以得到合理分配,從而實(shí)現(xiàn)了系統(tǒng)的負(fù)載均衡。本申請(qǐng)同時(shí)公開了一種管理系統(tǒng)。
文檔編號(hào)G06F17/30GK101533417SQ20091013752
公開日2009年9月16日 申請(qǐng)日期2009年4月28日 優(yōu)先權(quán)日2009年4月28日
發(fā)明者杰 蔣, 蔣萃林, 陳榮松 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司