国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種任務(wù)監(jiān)控方法及系統(tǒng)的制作方法

      文檔序號(hào):7810716閱讀:247來(lái)源:國(guó)知局
      一種任務(wù)監(jiān)控方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開(kāi)了一種任務(wù)監(jiān)控方法,包括:利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java任務(wù)數(shù)據(jù)及與java任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則;利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到zookeeper下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù)據(jù)更新所述設(shè)備內(nèi)存中的java項(xiàng)目數(shù)據(jù);利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。本發(fā)明還公開(kāi)了一種任務(wù)監(jiān)控系統(tǒng)。
      【專利說(shuō)明】一種任務(wù)監(jiān)控方法及系統(tǒng)

      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種任務(wù)監(jiān)控方法及系統(tǒng)。

      【背景技術(shù)】
      [0002] 為了便于理解,首先對(duì)幾個(gè)技術(shù)術(shù)語(yǔ)進(jìn)行簡(jiǎn)單的介紹:
      [0003] spring :是為了解決企業(yè)應(yīng)用程序開(kāi)發(fā)復(fù)雜性的一種java開(kāi)源框架。
      [0004] quartz :是基于java編寫(xiě)的開(kāi)源作業(yè)調(diào)度框架。
      [0005] pro ject : java 項(xiàng)目。
      [0006] instance :將項(xiàng)目部署到線上,有可能會(huì)部署一個(gè)或者多個(gè)項(xiàng)目,每個(gè)單獨(dú)部署的 項(xiàng)目被定義為實(shí)例。
      [0007] task : java任務(wù),一般通過(guò)一定規(guī)則來(lái)觸發(fā)執(zhí)行。
      [0008] trigger : java任務(wù)對(duì)應(yīng)的觸發(fā)器,用于制定觸發(fā)規(guī)則,在滿足觸發(fā)規(guī)則后會(huì)執(zhí)行 對(duì)應(yīng)的java任務(wù)。
      [0009] 現(xiàn)有技術(shù)中,主要使用spring定義的quartz來(lái)靈活的管理java任務(wù),但是容易 造成如下問(wèn)題:
      [0010] 1.如果需要頻繁修改java任務(wù)和觸發(fā)規(guī)則,則每次修改后都需要重啟Project提 供的服務(wù)。
      [0011] 2.在管理定時(shí)任務(wù)數(shù)據(jù)時(shí),主要是通過(guò)配置xml (Extensible Markup Language, 可擴(kuò)展標(biāo)記語(yǔ)言)配置文件的方式來(lái)配置定時(shí)任務(wù)數(shù)據(jù),然而,當(dāng)同一個(gè)project的不同 instance想要不同的java任務(wù)和觸發(fā)規(guī)則的時(shí)候,每次發(fā)布project時(shí)都需要更改xml配 置文件中的配置。例如,一個(gè)相同的java任務(wù)可以在測(cè)試環(huán)節(jié)和線上環(huán)節(jié)運(yùn)行,但實(shí)際使 用過(guò)程中,開(kāi)發(fā)者若想要修改測(cè)試環(huán)節(jié)上的這個(gè)java任務(wù),開(kāi)發(fā)者只能手動(dòng)修改測(cè)試環(huán)節(jié) 中對(duì)java任務(wù)的配置,但如果需要經(jīng)常修改配置文件中的配置,這種手動(dòng)修改不但浪費(fèi)時(shí) 間和人力,還會(huì)造成修改錯(cuò)誤等缺陷。
      [0012] 3.在java任務(wù)執(zhí)行過(guò)程中,由于任務(wù)執(zhí)行過(guò)程細(xì)節(jié)不透明,如果java任務(wù)執(zhí)行失 敗將無(wú)法定位失敗所在的環(huán)節(jié),另外,由于每個(gè)業(yè)務(wù)線均使用自己的解決方案來(lái)實(shí)現(xiàn),所以 沒(méi)有一個(gè)統(tǒng)一的解決方案來(lái)統(tǒng)一進(jìn)行任務(wù)監(jiān)控和警報(bào),不利于所有任務(wù)線上任務(wù)的方便監(jiān) 管。


      【發(fā)明內(nèi)容】

      [0013] 有鑒于此,本發(fā)明實(shí)施例的主要目的在于提供一種任務(wù)監(jiān)控方法及系統(tǒng),以實(shí)現(xiàn) 自動(dòng)監(jiān)控java任務(wù)的目的。
      [0014] 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種任務(wù)監(jiān)控方法,包括:
      [0015] 利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所述java項(xiàng)目數(shù) 據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java任務(wù)數(shù)據(jù)及與java 任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則;
      [0016] 利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到zookeeper 下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù)據(jù)更新所述設(shè) 備內(nèi)存中的java項(xiàng)目數(shù)據(jù);
      [0017] 利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      [0018] 優(yōu)選地,所述利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù)前,還包 括:
      [0019] 為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目標(biāo)識(shí)保存到客 戶端的配置文件中;
      [0020] 將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper上面;
      [0021] 所述利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),包括:
      [0022] 利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從zooke印er上面拉取與所述項(xiàng) 目標(biāo)識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù)。
      [0023] 優(yōu)選地,所述將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper上面, 包括:
      [0024] 通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在所述任務(wù)創(chuàng)建窗口中 選擇的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下的實(shí)例IP中選取的 至少一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù);
      [0025] 獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任務(wù)創(chuàng)建的觸發(fā)規(guī)則;
      [0026] 將新創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到zookeeper上面。
      [0027] 優(yōu)選地,所述利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù),包 括:
      [0028] 通過(guò)客戶端定義的bean以利用java反射技術(shù),來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù) 據(jù)對(duì)應(yīng)的java任務(wù)。
      [0029] 優(yōu)選地,所述方法還包括:
      [0030] 利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔截的方法且已經(jīng)為 當(dāng)前方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的反映被執(zhí)行任務(wù)狀 態(tài)的相關(guān)數(shù)據(jù);
      [0031] 將所述獲取的相關(guān)數(shù)據(jù)上傳至日志管理系統(tǒng)。
      [0032] 優(yōu)選地,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度注解中的一個(gè)和/或任務(wù)監(jiān)控注 解中的一個(gè);
      [0033] 所述任務(wù)進(jìn)度注解包括以下一個(gè)或多個(gè):
      [0034] 任務(wù)開(kāi)始注解、任務(wù)收集數(shù)據(jù)注解、任務(wù)執(zhí)行注解、任務(wù)輸出數(shù)據(jù)注解、任務(wù)結(jié)束 注解;
      [0035] 所述任務(wù)監(jiān)控注解包括以下一個(gè)或多個(gè):
      [0036] 方法異常注解、方法參數(shù)和返回值注解、方法耗時(shí)注解、方法執(zhí)行前后系統(tǒng)資源使 用注解、方法執(zhí)行前后線程狀態(tài)注解。
      [0037] 優(yōu)選地,所述方法還包括:
      [0038] 利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo)識(shí),并按照預(yù)設(shè)格式 在任務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      [0039] 優(yōu)選地,所述方法還包括:
      [0040] 若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載java api的方式,為 所述多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí);
      [0041] 根據(jù)所述相同的任務(wù)標(biāo)識(shí)同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程的任務(wù)進(jìn)度。
      [0042] 本發(fā)明實(shí)施例還提供了一種任務(wù)監(jiān)控系統(tǒng),包括:
      [0043] 數(shù)據(jù)加載單元,用于利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并 將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java 任務(wù)數(shù)據(jù)及與java任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則;
      [0044] 數(shù)據(jù)更新單元,用于利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄 獲取到zookeeper下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng) 目數(shù)據(jù)更新所述設(shè)備內(nèi)存中的java項(xiàng)目數(shù)據(jù);
      [0045] 任務(wù)執(zhí)行單元,用于利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任 務(wù)。
      [0046] 優(yōu)選地,所述系統(tǒng)還包括:
      [0047] 標(biāo)識(shí)配置單元,用于在所述數(shù)據(jù)加載單元利用客戶端從zooke印er上面拉取存儲(chǔ) 的java項(xiàng)目數(shù)據(jù)前,為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目標(biāo)識(shí) 保存到客戶端的配置文件中;
      [0048] 數(shù)據(jù)同步單元,用于將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper 上面;
      [0049] 所述數(shù)據(jù)加載單元包括:
      [0050] 數(shù)據(jù)拉取子單元,用于利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從 zookeeper上面拉取與所述項(xiàng)目標(biāo)識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù);
      [0051] 數(shù)據(jù)加載子單元,用于將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存 中。
      [0052] 優(yōu)選地,所述數(shù)據(jù)同步單元包括:
      [0053] 任務(wù)獲取子單元,用于通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在 所述任務(wù)創(chuàng)建窗口中選擇的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下 的實(shí)例IP中選取的至少一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù);
      [0054] 規(guī)則獲取子單元,用于獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任務(wù)創(chuàng)建的觸發(fā)規(guī) 則;
      [0055] 數(shù)據(jù)同步子單元,用于將新創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到 zookeeper 上面。
      [0056] 優(yōu)選地,所述任務(wù)執(zhí)行單元,具體用于通過(guò)客戶端定義的bean以利用java反射技 術(shù),來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      [0057] 優(yōu)選地,所述系統(tǒng)還包括:
      [0058] 狀態(tài)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔 截的方法且已經(jīng)為當(dāng)前方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的 反映被執(zhí)行任務(wù)狀態(tài)的相關(guān)數(shù)據(jù);
      [0059] 數(shù)據(jù)上傳單元,用于將所述獲取的相關(guān)數(shù)據(jù)上傳至日志管理系統(tǒng);
      [0060] 其中,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度注解中的一個(gè)和/或任務(wù)監(jiān)控注解 中的一個(gè);
      [0061] 所述任務(wù)進(jìn)度注解包括以下一個(gè)或多個(gè):
      [0062] 任務(wù)開(kāi)始注解、任務(wù)收集數(shù)據(jù)注解、任務(wù)執(zhí)行注解、任務(wù)輸出數(shù)據(jù)注解、任務(wù)結(jié)束 注解;
      [0063] 所述任務(wù)監(jiān)控注解包括以下一個(gè)或多個(gè):
      [0064] 方法異常注解、方法參數(shù)和返回值注解、方法耗時(shí)注解、方法執(zhí)行前后系統(tǒng)資源使 用注解、方法執(zhí)行前后線程狀態(tài)注解。
      [0065] 優(yōu)選地,所述系統(tǒng)還包括:
      [0066] 標(biāo)識(shí)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo) 識(shí),并按照預(yù)設(shè)格式在任務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      [0067] 優(yōu)選地,所述系統(tǒng)還包括:
      [0068] 標(biāo)識(shí)重寫(xiě)單元,用于若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載 java api的方式,為所述多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí);
      [0069] 線程監(jiān)測(cè)單元,用于根據(jù)所述相同的任務(wù)標(biāo)識(shí)同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程 的任務(wù)進(jìn)度。
      [0070] 本發(fā)明實(shí)施例提供的任務(wù)監(jiān)控方法及系統(tǒng),利用客戶端從zooke印er上面拉取存 儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中;利用客 戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到zookeeper下發(fā)的關(guān)于所述 java項(xiàng)目數(shù)據(jù)被修改的通知,貝U利用被修改的java項(xiàng)目數(shù)據(jù)更新所述設(shè)備內(nèi)存中的java 項(xiàng)目數(shù)據(jù);利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。可見(jiàn),由于java 項(xiàng)目數(shù)據(jù)(任務(wù)和觸發(fā)規(guī)則)被修改后,系統(tǒng)會(huì)自動(dòng)將修改的數(shù)據(jù)同步到zooke印er上面, 且利用客戶端能夠自動(dòng)獲取zookeeper上面的修改數(shù)據(jù)并對(duì)客戶端中已經(jīng)存儲(chǔ)的java項(xiàng) 目數(shù)據(jù)進(jìn)行更新,這樣便不必像現(xiàn)有技術(shù)那樣每次都重啟服務(wù),從而實(shí)現(xiàn)了自動(dòng)監(jiān)控java 任務(wù)的目的。

      【專利附圖】

      【附圖說(shuō)明】
      [0071] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明 的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù) 這些附圖獲得其他的附圖。
      [0072] 圖1為本發(fā)明實(shí)施例任務(wù)監(jiān)控方法的流程示意圖;
      [0073] 圖2為本發(fā)明實(shí)施例項(xiàng)目申請(qǐng)界面示意圖;
      [0074] 圖3為本發(fā)明實(shí)施例任務(wù)創(chuàng)建窗口示意圖;
      [0075] 圖4為本發(fā)明實(shí)施例觸發(fā)器創(chuàng)建窗口示意圖;
      [0076] 圖5為本發(fā)明實(shí)施例項(xiàng)目實(shí)例管理頁(yè)面示意圖;
      [0077] 圖6為本發(fā)明實(shí)施例用戶權(quán)限分配示意圖;
      [0078] 圖7為本發(fā)明實(shí)施例任務(wù)進(jìn)度示意圖;
      [0079] 圖8為本發(fā)明實(shí)施例任務(wù)監(jiān)控示意圖;
      [0080] 圖9為本發(fā)明實(shí)施例任務(wù)監(jiān)控系統(tǒng)的組成示意圖。

      【具體實(shí)施方式】
      [0081] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0082] 在介紹本發(fā)明實(shí)施例前,首先對(duì)幾個(gè)技術(shù)術(shù)語(yǔ)進(jìn)行簡(jiǎn)單的介紹:
      [0083] zookeeper :屬于hadoop的子項(xiàng)目,它是一個(gè)針對(duì)大型分布式系統(tǒng)的可靠協(xié)調(diào)系 統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。
      [0084] memcached :-種高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù) 據(jù)庫(kù)負(fù)載。
      [0085] mysql :-個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前屬于Oracle 公司。
      [0086] aop :面向切面編程,可以理解為面向?qū)ο缶幊痰囊环N補(bǔ)充,本發(fā)明實(shí)現(xiàn)aop的是 通過(guò)spring來(lái)實(shí)現(xiàn)。
      [0087] htsf :本發(fā)明實(shí)施例的任務(wù)調(diào)度框架。
      [0088] 本發(fā)明實(shí)施例主要分為以下四個(gè)工程:
      [0089] 1. htsf - common :基礎(chǔ)jar包,存放常亮和公共類(lèi)。
      [0090] 2. htsf - client :提供給客戶端應(yīng)用使用的jar包,應(yīng)用開(kāi)發(fā)時(shí)候需要配置對(duì)應(yīng) 的xml文件,并且需要引入此jar包。
      [0091] 開(kāi)發(fā)客戶端應(yīng)用時(shí),要依賴spring和htsf - client,按照htsf提供的文檔進(jìn)行 開(kāi)發(fā)。
      [0092] 3. htsf - admin :管理后臺(tái),提供任務(wù)管理與任務(wù)可視化頁(yè)面監(jiān)控功能。
      [0093] 管理后臺(tái)htsf - admin通過(guò)html5+jquery做前端頁(yè)面展示,通過(guò)jquery封裝 ajxa技術(shù)來(lái)實(shí)現(xiàn)無(wú)刷新動(dòng)態(tài)獲取數(shù)據(jù),通過(guò)jstl+spring mvc做web數(shù)據(jù)控制,通過(guò)spring 來(lái)管理這個(gè)系統(tǒng),通過(guò)mybatis與數(shù)據(jù)庫(kù)通信,緩存使用memcached,通過(guò)自定義注解和 spring aop實(shí)現(xiàn)面向切面的緩存管理。
      [0094] 4. htsf - log - admin :日志管理后臺(tái),提供接收日志并且放入數(shù)據(jù)源功能。 [0095] 參見(jiàn)圖1,為本發(fā)明實(shí)施例提供的任務(wù)監(jiān)控方法的流程示意圖,該方法包括以下步 驟:
      [0096] 步驟101 :利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所述 java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java任務(wù)數(shù) 據(jù)及與java任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則。
      [0097] 在本步驟中,需要從zookeeper上面拉取java項(xiàng)目數(shù)據(jù),為了實(shí)現(xiàn)此功能,需要在 步驟101前將java項(xiàng)目數(shù)據(jù)存儲(chǔ)到zookeeper上面,即在步驟101前還可以包括以下步 驟:
      [0098] 為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目標(biāo)識(shí)保存到客 戶端的配置文件中;將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper上面。 更具體的,該步驟的實(shí)現(xiàn)過(guò)程如下:
      [0099] 用戶進(jìn)入后臺(tái)系統(tǒng)htsf - admin后,需要先創(chuàng)建java項(xiàng)目,參見(jiàn)圖2所示的項(xiàng)目 申請(qǐng)界面示意圖,創(chuàng)建java項(xiàng)目后,后臺(tái)系統(tǒng)會(huì)為剛創(chuàng)建的java項(xiàng)目分配唯一的項(xiàng)目標(biāo) 識(shí),即項(xiàng)目ID,并保存項(xiàng)目ID到客戶端應(yīng)用的配置文件中。創(chuàng)建了一個(gè)java項(xiàng)目后,后臺(tái) 系統(tǒng)會(huì)自動(dòng)將java項(xiàng)目同步到緩存memcached、數(shù)據(jù)庫(kù)mysql、以及zookeeper上面。
      [0100] 在創(chuàng)建了 java項(xiàng)目后,還要?jiǎng)?chuàng)建java項(xiàng)目下的java任務(wù)和觸發(fā)器,具體按照下 述方式創(chuàng)建java任務(wù)和觸發(fā)器:
      [0101] 參見(jiàn)圖3所不的任務(wù)創(chuàng)建窗口不意圖。在圖3中輸入任務(wù)名稱、任務(wù)入口、任務(wù) 描述后,并在任務(wù)所屬項(xiàng)目的下拉菜單中選取該任務(wù)所屬的java項(xiàng)目,選擇項(xiàng)目后,會(huì)自 動(dòng)加載出來(lái)項(xiàng)目下面的實(shí)例IP(Internet Protocol,網(wǎng)際協(xié)議),可以勾選希望生效的實(shí) 例IP,譬如,假設(shè)10. 16. 15. 102的實(shí)例IP對(duì)應(yīng)測(cè)試機(jī),10. 7. 40. 57的實(shí)例IP對(duì)應(yīng)線上 機(jī),若希望只在測(cè)試機(jī)上運(yùn)行任務(wù),則勾選10. 16. 15. 102。任務(wù)創(chuàng)建完后,可以在任務(wù)下 面創(chuàng)建觸發(fā)器,目前支持簡(jiǎn)單觸發(fā)器和復(fù)雜觸發(fā)器,一個(gè)任務(wù)只能配置一個(gè)觸發(fā)器,參見(jiàn)圖 4所示的觸發(fā)器創(chuàng)建窗口示意圖。待任務(wù)及觸發(fā)器創(chuàng)建完畢后,這些數(shù)據(jù)會(huì)直接被同步到 zookeeper上面,因此,當(dāng)同一個(gè)project的不同instance想要不同的java任務(wù)和觸發(fā)規(guī) 則的時(shí)候,由于任務(wù)數(shù)據(jù)及觸發(fā)規(guī)則會(huì)被直接同步到zooke印er上面,所以客戶端可以自 動(dòng)從zookeeper上面直接拉取數(shù)據(jù)并存入內(nèi)存,而不必像現(xiàn)有技術(shù)那樣每次發(fā)布project 時(shí)都更改xml配置文件中的配置。基于上述內(nèi)容,本發(fā)明實(shí)施例可以按照下述方式將所述 新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)(任務(wù)數(shù)據(jù)及觸發(fā)規(guī)則)同步到zookeeper上面:
      [0102] 通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在所述任務(wù)創(chuàng)建窗口中 選擇的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下的實(shí)例IP中選取的 至少一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù);獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任 務(wù)創(chuàng)建的觸發(fā)規(guī)則;將新創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到zookeeper上面。
      [0103] 當(dāng)客戶端啟動(dòng)后,會(huì)通過(guò)客戶端配置的項(xiàng)目ID從zooke印er上獲取與項(xiàng)目ID對(duì) 應(yīng)的java項(xiàng)目數(shù)據(jù),并將獲取的數(shù)據(jù)存儲(chǔ)在客戶端所在的設(shè)備內(nèi)存中,其中,客戶端所在 的設(shè)備可以通過(guò)設(shè)備本機(jī)IP來(lái)區(qū)分?;诖?,在步驟101中,客戶端可以按照以下方式從 zookeeper上面拉取java項(xiàng)目數(shù)據(jù),S卩:利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從 zookeeper上面拉取與所述項(xiàng)目標(biāo)識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù)。
      [0104] 此外,本發(fā)明實(shí)施例能夠更方便的對(duì)項(xiàng)目及其實(shí)例進(jìn)行管理,參見(jiàn)圖5所示的項(xiàng) 目實(shí)例管理頁(yè)面示意圖,用戶可以對(duì)項(xiàng)目進(jìn)行增加、刪除、修改、禁用等操作,也可以查看項(xiàng) 目下面的實(shí)例,在項(xiàng)目下面可以進(jìn)行創(chuàng)建實(shí)例、修改實(shí)例、禁用實(shí)例等操作,也可以查詢實(shí) 例下面對(duì)應(yīng)的任務(wù),比如遠(yuǎn)程zooke印er定時(shí)任務(wù)數(shù)據(jù)。另外,本發(fā)明實(shí)施例還可以對(duì)用戶 使用權(quán)限進(jìn)行分配,參見(jiàn)圖6所示的用戶權(quán)限分配示意圖,從該界面可以查看擁有項(xiàng)目使 用權(quán)限的用戶,并且可以對(duì)項(xiàng)目權(quán)限進(jìn)行增減。
      [0105] 步驟102 :利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到 zookeeper下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù)據(jù)更 新所述設(shè)備內(nèi)存中的java項(xiàng)目數(shù)據(jù)。
      [0106] 當(dāng)用戶修改 project (java 項(xiàng)目)、instance (實(shí)例)、task (java 任務(wù))、 trigger (觸發(fā)器)的相關(guān)數(shù)據(jù)后,程序會(huì)自動(dòng)將修改內(nèi)容更新同步到緩存memcached 和數(shù)據(jù)庫(kù)mysql中,同時(shí)也會(huì)更新到zookeeper對(duì)應(yīng)的目錄中,目錄的具體格式為 prefix+pro ject 一 id+instance 一 ip 一 +task 一 entrance+trigger,其中,prefix 為前綴。 客戶端在啟動(dòng)后會(huì)實(shí)時(shí)監(jiān)聽(tīng)zookeeper目錄,即加載上述的目錄數(shù)據(jù)(instance _ ip下的 task _ entrance和trigger)并監(jiān)聽(tīng)目錄是否變化,當(dāng)在后臺(tái)對(duì)java項(xiàng)目數(shù)據(jù)進(jìn)行修改 后,zookeeper會(huì)通知監(jiān)聽(tīng)zookeeper目錄的客戶端,客戶端得到變更的數(shù)據(jù),會(huì)重新初始 化內(nèi)存數(shù)據(jù)。
      [0107] 步驟103 :利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      [0108] 當(dāng)觸發(fā)器滿足觸發(fā)條件時(shí),客戶端就會(huì)執(zhí)行對(duì)應(yīng)的任務(wù),具體的,任務(wù)數(shù)據(jù)加載到 客戶端內(nèi)存后,框架htsf會(huì)通過(guò)客戶端應(yīng)用定義的bean通過(guò)java反射技術(shù)來(lái)執(zhí)行java任 務(wù),具體根據(jù)用戶定義區(qū)分有狀態(tài)的任務(wù)和無(wú)狀態(tài)任務(wù)(有狀態(tài)任務(wù)會(huì)等待上次任務(wù)執(zhí)行 完成再執(zhí)行,無(wú)狀態(tài)任務(wù)會(huì)發(fā)現(xiàn)上次任務(wù)未執(zhí)行完也會(huì)執(zhí)行)。因此,步驟103具體可通過(guò) 客戶端定義的bean以利用java反射技術(shù),來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java 任務(wù)。
      [0109] 本發(fā)明實(shí)施例提供的任務(wù)監(jiān)控方法,利用客戶端從zooke印er上面拉取存儲(chǔ)的 java項(xiàng)目數(shù)據(jù),并將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中;利用客戶端 監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到zookeeper下發(fā)的關(guān)于所述java 項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù)據(jù)更新所述設(shè)備內(nèi)存中的java項(xiàng)目 數(shù)據(jù);利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。可見(jiàn),由于java項(xiàng) 目數(shù)據(jù)(任務(wù)和觸發(fā)規(guī)則)被修改后,系統(tǒng)會(huì)自動(dòng)將修改的數(shù)據(jù)同步到zooke印er上面,且 利用客戶端能夠自動(dòng)獲取zookeeper上面的修改數(shù)據(jù)并對(duì)客戶端中已經(jīng)存儲(chǔ)的java項(xiàng)目 數(shù)據(jù)進(jìn)行更新,這樣便不必像現(xiàn)有技術(shù)那樣每次都重啟服務(wù),從而實(shí)現(xiàn)了自動(dòng)監(jiān)控java任 務(wù)的目的。
      [0110] 另外,本發(fā)明實(shí)施例還具有以下各功能:
      [0111] java任務(wù)執(zhí)行中,如果經(jīng)過(guò)被spring aop攔截的方法,客戶端會(huì)判斷當(dāng)前方法 是否有htsf - client提供的注解功能,如果有,會(huì)分析注解類(lèi)型并且獲取數(shù)據(jù),不同注 解可獲取不同類(lèi)型的數(shù)據(jù),然后,通過(guò)管理后臺(tái)http - client上報(bào)數(shù)據(jù)至日志管理系統(tǒng) htsf - log - admin,日志管理系統(tǒng)接收日志并同步到數(shù)據(jù)源中?;诖耍景l(fā)明實(shí)施例還 包括以下步驟:利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔截的方法且已 經(jīng)為當(dāng)前方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的反映被執(zhí)行任 務(wù)狀態(tài)的相關(guān)數(shù)據(jù);將所述獲取的相關(guān)數(shù)據(jù)上傳至日志管理系統(tǒng)。
      [0112] 因此,開(kāi)發(fā)客戶端時(shí),可以靈活使用htsf提供的注解,htsf通過(guò)攔截事件,來(lái)分析 被攔截事件的注解類(lèi)型,對(duì)事件進(jìn)行分析并將分析結(jié)果上報(bào)至日志管理系統(tǒng),日志管理系 統(tǒng)接收上報(bào)數(shù)據(jù)并同步到memcached和mysql中,這樣用戶可以通過(guò)管理后臺(tái)查詢上報(bào)數(shù) 據(jù),這些數(shù)據(jù)是從mysql和memcached中獲取并展現(xiàn)的。
      [0113] 其中,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度注解中的一個(gè)和/或任務(wù)監(jiān)控注解 中的一個(gè);
      [0114] 本發(fā)明實(shí)施例通過(guò)應(yīng)用客戶端注解的注釋不同來(lái)標(biāo)示任務(wù)進(jìn)度,任務(wù)進(jìn)度注解包 括以下一個(gè)或多個(gè):
      [0115] @ TaskBegin任務(wù)開(kāi)始注解,每個(gè)任務(wù)的入口方法必須有此注解;
      [0116] @ TasklnputData任務(wù)收集數(shù)據(jù)注解;
      [0117] @ TaskExecute 任務(wù)執(zhí)行注解;
      [0118] @ TaskOutData 任務(wù)輸出數(shù)據(jù)注解;
      [0119] @ TaskEnd 任務(wù)結(jié)束注解。
      [0120] 為便于理解,參見(jiàn)圖7所示的任務(wù)進(jìn)度示意圖,其中,圖中粗線條代表任務(wù)進(jìn)度 條。
      [0121] 本發(fā)明實(shí)施例還通過(guò)應(yīng)用客戶端注解的注釋不同來(lái)監(jiān)控任務(wù),任務(wù)監(jiān)控注解包括 以下一個(gè)或多個(gè):
      [0122] @ MonitorAlarm 方法異常注解;
      [0123] @ MonitorParamAndResuit 方法參數(shù)和返回值注解;
      [0124] @ MonitorPerformance 方法耗時(shí)注解;
      [0125] @ MonitorTaskUseResource方法執(zhí)行前后系統(tǒng)資源使用注解;
      [0126] @ MonitorThreadStatus 方法執(zhí)行前后線程狀態(tài)注解。
      [0127] 為便于理解,參見(jiàn)圖8所示的任務(wù)監(jiān)控示意圖,其中,圖中粗線條代表任務(wù)進(jìn)度 條。
      [0128] 此外,任務(wù)執(zhí)行時(shí),會(huì)生成唯一的任務(wù)標(biāo)識(shí)task ID (不同任務(wù)的task ID不同、且 同一任務(wù)在每次執(zhí)行時(shí)生成的task ID也不同),通過(guò)此task ID來(lái)標(biāo)識(shí)本次任務(wù)被執(zhí)行, 可將任務(wù)的相關(guān)數(shù)據(jù)(包括task ID)通過(guò)一定格式顯示到任務(wù)管理后臺(tái)。基于此,本發(fā)明 實(shí)施例還包括以下步驟:利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo)識(shí), 并按照預(yù)設(shè)格式在任務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      [0129] 如果任務(wù)中使用了多線程,那么需要采用重載java api的方法,該重載方法讓該 任務(wù)中的各個(gè)子線程擁有的task ID與該任務(wù)父線程的task ID相同,通過(guò)標(biāo)識(shí)相同的 task ID,能夠保證對(duì)任務(wù)中的各個(gè)子線程進(jìn)行同時(shí)監(jiān)測(cè)?;诖?,本發(fā)明實(shí)施例還包括以 下步驟:若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載java api的方式,為 所述多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí);根據(jù)所述相同的任務(wù)標(biāo)識(shí) 同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程的任務(wù)進(jìn)度。
      [0130] 參見(jiàn)圖9,為本發(fā)明實(shí)施例提供的任務(wù)監(jiān)控系統(tǒng)的組成示意圖,該系統(tǒng)包括:
      [0131] 數(shù)據(jù)加載單元901,用于利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù) 據(jù),并將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括 java任務(wù)數(shù)據(jù)及與java任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則;
      [0132] 數(shù)據(jù)更新單元902,用于利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper 目錄獲取到zookeeper下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java 項(xiàng)目數(shù)據(jù)更新所述設(shè)備內(nèi)存中的java項(xiàng)目數(shù)據(jù);
      [0133] 任務(wù)執(zhí)行單元903,用于利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java 任務(wù)。
      [0134] 所述系統(tǒng)還包括:
      [0135] 標(biāo)識(shí)配置單元,用于在所述數(shù)據(jù)加載單元901利用客戶端從zooke印er上面拉取 存儲(chǔ)的java項(xiàng)目數(shù)據(jù)前,為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目 標(biāo)識(shí)保存到客戶端的配置文件中;數(shù)據(jù)同步單元,用于將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng) 目數(shù)據(jù)同步到zookeeper上面;
      [0136] 所述數(shù)據(jù)加載單元901包括:
      [0137] 數(shù)據(jù)拉取子單元,用于利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從 zookeeper上面拉取與所述項(xiàng)目標(biāo)識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù);數(shù)據(jù)加載子單元,用于將所述 java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中。
      [0138] 其中,所述數(shù)據(jù)同步單元包括:
      [0139] 任務(wù)獲取子單元,用于通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在 所述任務(wù)創(chuàng)建窗口中選擇的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下 的實(shí)例IP中選取的至少一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù);規(guī)則獲取子單元,用 于獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任務(wù)創(chuàng)建的觸發(fā)規(guī)則;數(shù)據(jù)同步子單元,用于將新 創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到zookeeper上面。
      [0140] 所述任務(wù)執(zhí)行單元903,具體用于通過(guò)客戶端定義的bean以利用java反射技術(shù), 來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      [0141] 所述系統(tǒng)還包括:
      [0142] 狀態(tài)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔 截的方法且已經(jīng)為當(dāng)前方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的 反映被執(zhí)行任務(wù)狀態(tài)的相關(guān)數(shù)據(jù);數(shù)據(jù)上傳單元,用于將所述獲取的相關(guān)數(shù)據(jù)上傳至日志 管理系統(tǒng);
      [0143] 其中,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度注解中的一個(gè)和/或任務(wù)監(jiān)控注解 中的一個(gè);
      [0144] 所述任務(wù)進(jìn)度注解包括以下一個(gè)或多個(gè):
      [0145] 任務(wù)開(kāi)始注解、任務(wù)收集數(shù)據(jù)注解、任務(wù)執(zhí)行注解、任務(wù)輸出數(shù)據(jù)注解、任務(wù)結(jié)束 注解;
      [0146] 所述任務(wù)監(jiān)控注解包括以下一個(gè)或多個(gè):
      [0147] 方法異常注解、方法參數(shù)和返回值注解、方法耗時(shí)注解、方法執(zhí)行前后系統(tǒng)資源使 用注解、方法執(zhí)行前后線程狀態(tài)注解。
      [0148] 所述系統(tǒng)還包括:
      [0149] 標(biāo)識(shí)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo) 識(shí),并按照預(yù)設(shè)格式在任務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      [0150] 所述系統(tǒng)還包括:
      [0151] 標(biāo)識(shí)重寫(xiě)單元,用于若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載 java api的方式,為所述多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí);線程 監(jiān)測(cè)單元,用于根據(jù)所述相同的任務(wù)標(biāo)識(shí)同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程的任務(wù)進(jìn)度。
      [0152] 本發(fā)明實(shí)施例提供的任務(wù)監(jiān)控系統(tǒng),由于java項(xiàng)目數(shù)據(jù)(任務(wù)和觸發(fā)規(guī)則)被 修改后,系統(tǒng)會(huì)自動(dòng)將修改的數(shù)據(jù)同步到zookeeper上面,且利用客戶端能夠自動(dòng)獲取 zookeeper上面的修改數(shù)據(jù)并對(duì)客戶端中已經(jīng)存儲(chǔ)的java項(xiàng)目數(shù)據(jù)進(jìn)行更新,這樣便不必 像現(xiàn)有技術(shù)那樣每次都重啟服務(wù),從而實(shí)現(xiàn)了自動(dòng)監(jiān)控java任務(wù)的目的。
      [0153] 通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施 例方法中的全部或部分步驟可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的 理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式 體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干 指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者諸如媒體網(wǎng)關(guān)等網(wǎng)絡(luò)通 信設(shè)備,等等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
      [0154] 需要說(shuō)明的是,對(duì)于實(shí)施例公開(kāi)的系統(tǒng)而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng), 所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
      [0155] 還需要說(shuō)明的是,術(shù)語(yǔ)"包括"、"包含"或者其任何其他變體意在涵蓋非排他性的 包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包 括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要 素。在沒(méi)有更多限制的情況下,由語(yǔ)句"包括一個(gè)……"限定的要素,并不排除在包括所述 要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
      [0156] 對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的 一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明 將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一 致的最寬的范圍。
      【權(quán)利要求】
      1. 一種任務(wù)監(jiān)控方法,其特征在于,包括: 利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所述java項(xiàng)目數(shù)據(jù)加 載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java任務(wù)數(shù)據(jù)及與java任務(wù) 對(duì)應(yīng)的觸發(fā)規(guī)則; 利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取到zookeeper下發(fā) 的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù)據(jù)更新所述設(shè)備內(nèi) 存中的java項(xiàng)目數(shù)據(jù); 利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用客戶端從zooke印er上面拉取存 儲(chǔ)的java項(xiàng)目數(shù)據(jù)前,還包括: 為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目標(biāo)識(shí)保存到客戶端 的配置文件中; 將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper上面; 所述利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),包括: 利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從zooke印er上面拉取與所述項(xiàng)目標(biāo) 識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù)。
      3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng) 目數(shù)據(jù)同步到zookeeper上面,包括: 通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在所述任務(wù)創(chuàng)建窗口中選擇 的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下的實(shí)例IP中選取的至少 一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù); 獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任務(wù)創(chuàng)建的觸發(fā)規(guī)則; 將新創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到zookeeper上面。
      4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用客戶端執(zhí)行所述更新后的java 項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù),包括: 通過(guò)客戶端定義的bean以利用java反射技術(shù),來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì) 應(yīng)的java任務(wù)。
      5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔截的方法且已經(jīng)為當(dāng)前 方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的反映被執(zhí)行任務(wù)狀態(tài)的 相關(guān)數(shù)據(jù); 將所述獲取的相關(guān)數(shù)據(jù)上傳至日志管理系統(tǒng)。
      6. 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度 注解中的一個(gè)和/或任務(wù)監(jiān)控注解中的一個(gè); 所述任務(wù)進(jìn)度注解包括以下一個(gè)或多個(gè): 任務(wù)開(kāi)始注解、任務(wù)收集數(shù)據(jù)注解、任務(wù)執(zhí)行注解、任務(wù)輸出數(shù)據(jù)注解、任務(wù)結(jié)束注 解; 所述任務(wù)監(jiān)控注解包括以下一個(gè)或多個(gè): 方法異常注解、方法參數(shù)和返回值注解、方法耗時(shí)注解、方法執(zhí)行前后系統(tǒng)資源使用注 解、方法執(zhí)行前后線程狀態(tài)注解。
      7. 根據(jù)權(quán)利要求1至6任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo)識(shí),并按照預(yù)設(shè)格式在任 務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載java api的方式,為所述 多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí); 根據(jù)所述相同的任務(wù)標(biāo)識(shí)同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程的任務(wù)進(jìn)度。
      9. 一種任務(wù)監(jiān)控系統(tǒng),其特征在于,包括: 數(shù)據(jù)加載單元,用于利用客戶端從zookeeper上面拉取存儲(chǔ)的java項(xiàng)目數(shù)據(jù),并將所 述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中,所述java項(xiàng)目數(shù)據(jù)包括java任務(wù) 數(shù)據(jù)及與java任務(wù)對(duì)應(yīng)的觸發(fā)規(guī)則; 數(shù)據(jù)更新單元,用于利用客戶端監(jiān)聽(tīng)zookeeper目錄,若通過(guò)監(jiān)聽(tīng)zookeeper目錄獲取 到zookeeper下發(fā)的關(guān)于所述java項(xiàng)目數(shù)據(jù)被修改的通知,則利用被修改的java項(xiàng)目數(shù) 據(jù)更新所述設(shè)備內(nèi)存中的java項(xiàng)目數(shù)據(jù); 任務(wù)執(zhí)行單元,用于利用客戶端執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任務(wù)。
      10. 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 標(biāo)識(shí)配置單元,用于在所述數(shù)據(jù)加載單元利用客戶端從zooke印er上面拉取存儲(chǔ)的 java項(xiàng)目數(shù)據(jù)前,為每個(gè)用戶新創(chuàng)建的java項(xiàng)目分配一個(gè)項(xiàng)目標(biāo)識(shí),并將所述項(xiàng)目標(biāo)識(shí)保 存到客戶端的配置文件中; 數(shù)據(jù)同步單元,用于將所述新創(chuàng)建的java項(xiàng)目的java項(xiàng)目數(shù)據(jù)同步到zookeeper上 面; 所述數(shù)據(jù)加載單元包括: 數(shù)據(jù)拉取子單元,用于利用客戶端獲取所述配置文件中的項(xiàng)目標(biāo)識(shí),并從zookeeper 上面拉取與所述項(xiàng)目標(biāo)識(shí)對(duì)應(yīng)的java項(xiàng)目數(shù)據(jù); 數(shù)據(jù)加載子單元,用于將所述java項(xiàng)目數(shù)據(jù)加載到所述客戶端所在的設(shè)備內(nèi)存中。
      11. 根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述數(shù)據(jù)同步單元包括: 任務(wù)獲取子單元,用于通過(guò)獲取用戶在任務(wù)創(chuàng)建窗口中創(chuàng)建的java任務(wù)、用戶在所述 任務(wù)創(chuàng)建窗口中選擇的所述java任務(wù)所屬的java項(xiàng)目、用戶從所述所屬java項(xiàng)目下的實(shí) 例IP中選取的至少一個(gè)實(shí)例IP,來(lái)作為新創(chuàng)建的java任務(wù)數(shù)據(jù); 規(guī)則獲取子單元,用于獲取用戶在觸發(fā)器創(chuàng)建窗口為新創(chuàng)建任務(wù)創(chuàng)建的觸發(fā)規(guī)則; 數(shù)據(jù)同步子單元,用于將新創(chuàng)建的java任務(wù)數(shù)據(jù)、及對(duì)應(yīng)的觸發(fā)規(guī)則同步到 zookeeper 上面。
      12. 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述任務(wù)執(zhí)行單元,具體用于通過(guò)客戶 端定義的bean以利用java反射技術(shù),來(lái)執(zhí)行所述更新后的java項(xiàng)目數(shù)據(jù)對(duì)應(yīng)的java任 務(wù)。
      13. 根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 狀態(tài)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,若存在被spring aop攔截的 方法且已經(jīng)為當(dāng)前方法提供了標(biāo)示被執(zhí)行任務(wù)狀態(tài)的注解,則獲取與注解類(lèi)型對(duì)應(yīng)的反映 被執(zhí)行任務(wù)狀態(tài)的相關(guān)數(shù)據(jù); 數(shù)據(jù)上傳單元,用于將所述獲取的相關(guān)數(shù)據(jù)上傳至日志管理系統(tǒng); 其中,所述被執(zhí)行任務(wù)狀態(tài)的注解為任務(wù)進(jìn)度注解中的一個(gè)和/或任務(wù)監(jiān)控注解中的 一個(gè); 所述任務(wù)進(jìn)度注解包括以下一個(gè)或多個(gè): 任務(wù)開(kāi)始注解、任務(wù)收集數(shù)據(jù)注解、任務(wù)執(zhí)行注解、任務(wù)輸出數(shù)據(jù)注解、任務(wù)結(jié)束注 解; 所述任務(wù)監(jiān)控注解包括以下一個(gè)或多個(gè): 方法異常注解、方法參數(shù)和返回值注解、方法耗時(shí)注解、方法執(zhí)行前后系統(tǒng)資源使用注 解、方法執(zhí)行前后線程狀態(tài)注解。
      14. 根據(jù)權(quán)利要求9至13任一項(xiàng)所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 標(biāo)識(shí)獲取單元,用于利用客戶端執(zhí)行java任務(wù)的過(guò)程中,生成本次任務(wù)的任務(wù)標(biāo)識(shí), 并按照預(yù)設(shè)格式在任務(wù)管理后臺(tái)顯示所述任務(wù)標(biāo)識(shí)。
      15. 根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 標(biāo)識(shí)重寫(xiě)單元,用于若被執(zhí)行的java任務(wù)采用了多線程的運(yùn)行方式,則采用重載java api的方式,為所述多線程中的每個(gè)子線程配置與任務(wù)父線程相同的任務(wù)標(biāo)識(shí); 線程監(jiān)測(cè)單元,用于根據(jù)所述相同的任務(wù)標(biāo)識(shí)同時(shí)監(jiān)測(cè)所述多線程中每個(gè)子線程的任 務(wù)進(jìn)度。
      【文檔編號(hào)】H04L12/26GK104092591SQ201410380550
      【公開(kāi)日】2014年10月8日 申請(qǐng)日期:2014年8月4日 優(yōu)先權(quán)日:2014年8月4日
      【發(fā)明者】王震, 夏鵬 申請(qǐng)人:飛狐信息技術(shù)(天津)有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1