一種可配置插件式的數(shù)據(jù)服務(wù)方法
【專利摘要】本發(fā)明涉及一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于包括如下步驟:步驟S01:對(duì)采集服務(wù)的數(shù)據(jù)服務(wù)進(jìn)行配置,每個(gè)數(shù)據(jù)服務(wù)都以所述配置項(xiàng)進(jìn)行區(qū)分、初始化;步驟S02:實(shí)例化數(shù)據(jù)服務(wù),并以獨(dú)立線程運(yùn)行數(shù)據(jù)服務(wù);步驟S03:在服務(wù)的主進(jìn)程上,通過時(shí)間片輪值方式和事件的監(jiān)控方式,來跟蹤、監(jiān)控每個(gè)業(yè)務(wù)數(shù)據(jù)服務(wù)線程的運(yùn)行狀態(tài);包括如下步驟:步驟S031:在時(shí)間片輪值上,通過遍歷線程,并判斷每個(gè)線程上的線程狀態(tài),一旦有出現(xiàn)非正常的狀態(tài)就進(jìn)行登記日志,并嘗試重新啟動(dòng)該服務(wù)線程;步驟S032:綁定線程的運(yùn)行事件機(jī)制,當(dāng)線程觸發(fā)運(yùn)行事件也登記日志,并進(jìn)行對(duì)應(yīng)事件的操作;步驟S04:上報(bào)服務(wù)運(yùn)行日志,實(shí)現(xiàn)服務(wù)監(jiān)控告警。
【專利說明】一種可配置插件式的數(shù)據(jù)服務(wù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及水利、防汛、水文、氣象、海洋、國(guó)土等相關(guān)防災(zāi)減災(zāi)行業(yè)信息化【技術(shù)領(lǐng)域】,特別是一種可配置插件式的防災(zāi)數(shù)據(jù)服務(wù)方法。
【背景技術(shù)】
[0002]當(dāng)前,針對(duì)防災(zāi)減災(zāi)行業(yè)相關(guān)的數(shù)據(jù)匯集服務(wù),通常是在系統(tǒng)建設(shè)時(shí),業(yè)務(wù)需要哪種數(shù)據(jù),就建立一個(gè)對(duì)應(yīng)的數(shù)據(jù)采集程序或服務(wù),對(duì)數(shù)據(jù)進(jìn)行采集。伴隨著業(yè)務(wù)所要的數(shù)據(jù)在不斷增加,防汛常用的有水雨情數(shù)據(jù)、臺(tái)風(fēng)數(shù)據(jù)、衛(wèi)星云圖、雷達(dá)圖等數(shù)據(jù),海洋有上百類的數(shù)據(jù)需要采集的,采集程序也隨之不斷增加,往往一臺(tái)服務(wù)器上會(huì)有很多種不同種類的數(shù)據(jù)采集程序,給我們的管理人員在日常的管理工作上增加了不少工作量。
[0003]現(xiàn)有的一種業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)一個(gè)數(shù)據(jù)采集程序的方式,對(duì)服務(wù)器的資源占用很大,往往會(huì)因?yàn)椴杉?wù)運(yùn)行過多,而影響到系統(tǒng)的運(yùn)行穩(wěn)定性。日常管理起來也非常不方便,一旦人員發(fā)生變化或服務(wù)器硬件環(huán)境發(fā)生變化,都給整個(gè)數(shù)據(jù)采集的正常運(yùn)行帶來了很大的變數(shù)。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的是提供一種可配置插件式的數(shù)據(jù)服務(wù)方法,針對(duì)采集的程序及服務(wù)進(jìn)行可配置的集中管理,并監(jiān)控各個(gè)采集服務(wù),保障采集服務(wù)的正常穩(wěn)定運(yùn)行。
[0005]本發(fā)明采用以下方案實(shí)現(xiàn):一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于包括如下步驟:
步驟SOl:對(duì)采集服務(wù)的數(shù)據(jù)服務(wù)進(jìn)行配置,每個(gè)數(shù)據(jù)服務(wù)都以所述配置項(xiàng)進(jìn)行區(qū)分、初始化;
步驟S02:實(shí)例化數(shù)據(jù)服務(wù),并以獨(dú)立線程運(yùn)行數(shù)據(jù)服務(wù);
步驟S03:在服務(wù)的主進(jìn)程上,通過時(shí)間片輪值方式和事件的監(jiān)控方式,來跟蹤、監(jiān)控每個(gè)業(yè)務(wù)數(shù)據(jù)服務(wù)線程的運(yùn)行狀態(tài);包括如下步驟:
步驟S031:在時(shí)間片輪值上,通過遍歷線程,并判斷每個(gè)線程上的線程狀態(tài),一旦有出現(xiàn)非正常的狀態(tài)就進(jìn)行登記日志,并嘗試重新啟動(dòng)該服務(wù)線程;
步驟S032:綁定線程的運(yùn)行事件機(jī)制,當(dāng)線程觸發(fā)運(yùn)行事件也登記日志,并進(jìn)行對(duì)應(yīng)事件的操作;
步驟S04:上報(bào)服務(wù)運(yùn)行日志,實(shí)現(xiàn)服務(wù)監(jiān)控告警。
[0006]在本發(fā)明一實(shí)施例中,所述步驟SOl中所述配置的實(shí)現(xiàn)方式是通過對(duì)需要采集的服務(wù)進(jìn)行XML配置,實(shí)現(xiàn)在數(shù)據(jù)主進(jìn)程啟動(dòng)時(shí),能按照配置的內(nèi)容進(jìn)行初始化各個(gè)數(shù)據(jù)服務(wù);其中服務(wù)配置項(xiàng)如下:
ID=服務(wù)ID ;
NAME=服務(wù)名;
ServiceID=服務(wù)插件線程ID; AutoRun=是否自動(dòng)運(yùn)行;
ServiceAssembly=服務(wù)插件類庫(kù)DLL的文件名;
LogName=服務(wù)日志文件名;
RunBase=服務(wù)啟動(dòng)方法。
[0007]在本發(fā)明一實(shí)施例中,所述步驟S02的實(shí)現(xiàn)方式:當(dāng)主進(jìn)程啟動(dòng)時(shí),通過加載服務(wù)配置項(xiàng)的方式加載服務(wù);通過MainAssembly=System.Reflection.Assembly.LoadFile (ServiceAssembly)的方式,加載服務(wù)需要運(yùn)行的DLL庫(kù),并通過MainAssembly.CreateInstance的方式,創(chuàng)建獨(dú)立的線程運(yùn)行加載的數(shù)據(jù)服務(wù);每個(gè)數(shù)據(jù)服務(wù)有不同的啟動(dòng)方法,可通過RunBase里的配置內(nèi)容加載啟動(dòng)方法,使之可以正常運(yùn)行。
[0008]在本發(fā)明一實(shí)施例中,所述步驟S04的實(shí)現(xiàn)方式:當(dāng)服務(wù)線程出現(xiàn)故障時(shí),登記運(yùn)行日志,并將異常的信息定期通過遠(yuǎn)程訪問的方式,傳輸至中心的服務(wù)器上,通過中心的服務(wù)器了解到每臺(tái)服務(wù)器上運(yùn)行數(shù)據(jù)服務(wù)的情況,當(dāng)有故障發(fā)生時(shí),進(jìn)行在中心本地進(jìn)行聲音告警,提醒值班人員進(jìn)行注意。
[0009]本發(fā)明方法適用于防災(zāi)減災(zāi)行業(yè)信息服務(wù),可通過對(duì)不同服務(wù)器上所采集的不同業(yè)務(wù)數(shù)據(jù)進(jìn)行服務(wù)配置化。通過一個(gè)主服務(wù),多個(gè)子業(yè)務(wù)數(shù)據(jù)服務(wù)的模式,對(duì)數(shù)據(jù)服務(wù)進(jìn)行統(tǒng)一管理,并支持未來業(yè)務(wù)數(shù)據(jù)的可擴(kuò)展,通過該方法解決了多采集程序的管理困擾,數(shù)據(jù)服務(wù)不穩(wěn)定等諸多問題,把日常的數(shù)據(jù)服務(wù)管理工作更科學(xué)化、簡(jiǎn)便化。
【專利附圖】
【附圖說明】
[0010]圖1是本發(fā)明方法流程不意圖。
【具體實(shí)施方式】
[0011]下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明做進(jìn)一步說明。
[0012]如圖1所示,一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于包括如下步驟:
步驟SOl:對(duì)采集服務(wù)的數(shù)據(jù)服務(wù)進(jìn)行配置,每個(gè)數(shù)據(jù)服務(wù)都以所述配置項(xiàng)進(jìn)行區(qū)分、
初始化;
步驟S02:實(shí)例化數(shù)據(jù)服務(wù),并以獨(dú)立線程運(yùn)行數(shù)據(jù)服務(wù);
步驟S03:在服務(wù)的主進(jìn)程上,通過時(shí)間片輪值方式和事件的監(jiān)控方式,來跟蹤、監(jiān)控每個(gè)業(yè)務(wù)數(shù)據(jù)服務(wù)線程的運(yùn)行狀態(tài);包括如下步驟:
步驟S031:在時(shí)間片輪值上,通過遍歷線程,并判斷每個(gè)線程上的線程狀態(tài),一旦有出現(xiàn)非正常的狀態(tài)就進(jìn)行登記日志,并嘗試重新啟動(dòng)該服務(wù)線程;
步驟S032:綁定線程的運(yùn)行事件機(jī)制,當(dāng)線程觸發(fā)運(yùn)行事件也登記日志,并進(jìn)行對(duì)應(yīng)事件的操作;
步驟S04:上報(bào)服務(wù)運(yùn)行日志,實(shí)現(xiàn)服務(wù)監(jiān)控告警。
[0013]具體的,本實(shí)施例的實(shí)現(xiàn)步驟如下:
1、對(duì)采集服務(wù)的數(shù)據(jù)服務(wù)進(jìn)行配置
通過對(duì)需要采集的服務(wù)進(jìn)行XML配置,實(shí)現(xiàn)在數(shù)據(jù)主進(jìn)程啟動(dòng)時(shí),可以按照配置的內(nèi)容進(jìn)行初始化各個(gè)數(shù)據(jù)服務(wù)。服務(wù)配置項(xiàng)如下:
ID=服務(wù)ID ; NAME=服務(wù)名;
ServiceID=服務(wù)插件線程ID;
AutoRun=是否自動(dòng)運(yùn)行;
ServiceAssembly=服務(wù)插件類庫(kù)DLL的文件名;
LogName=服務(wù)日志文件名;
RunBase=服務(wù)啟動(dòng)方法;
每個(gè)數(shù)據(jù)服務(wù)都由以上的采集配置項(xiàng)進(jìn)行區(qū)分、初始化,后期有新增新的業(yè)務(wù)數(shù)據(jù)服務(wù)時(shí),可直接在配置項(xiàng)中新增該數(shù)據(jù)服務(wù)信息即可。
[0014]2、實(shí)例化數(shù)據(jù)服務(wù),并以獨(dú)立線程運(yùn)行數(shù)據(jù)服務(wù)
當(dāng)主進(jìn)程啟動(dòng)時(shí),通過加載服務(wù)配置項(xiàng)的方式加載服務(wù)。通過MainAssembly=System.Reflection.Assembly.LoadFile (ServiceAssembly)的方式(其中該 System.Reflection.Assembly.LoadFile為微軟.NET框架的進(jìn)程操作類庫(kù)),加載服務(wù)需要運(yùn)行的DLL庫(kù),并通過 MainAssembly.CreateInstance 的方式(其中,該 MainAssembly.CreateInstance 為微軟.NET框架的進(jìn)程操作類庫(kù)),創(chuàng)建獨(dú)立的線程運(yùn)行加載的數(shù)據(jù)服務(wù)。每個(gè)數(shù)據(jù)服務(wù)有不同的啟動(dòng)方法,可通過RunBase里的配置內(nèi)容加載啟動(dòng)方法,使之可以正常運(yùn)行。
[0015]3、通過服務(wù)主進(jìn)程跟蹤、監(jiān)控各服務(wù)線程運(yùn)行狀態(tài)
在服務(wù)的主進(jìn)程上,通過時(shí)間片輪值方式和事件的監(jiān)控方式,來跟蹤、監(jiān)控每個(gè)業(yè)務(wù)數(shù)據(jù)服務(wù)線程的運(yùn)行狀態(tài)。首先,在時(shí)間片輪值上,通過遍歷線程,并判斷每個(gè)線程上的線程狀態(tài),一旦有出現(xiàn)非正常的狀態(tài)就進(jìn)行登記日志,并嘗試重新啟動(dòng)該服務(wù)線程。其次,綁定線程的運(yùn)行事件機(jī)制,當(dāng)線程觸發(fā)運(yùn)行事件也登記日志,并進(jìn)行對(duì)應(yīng)事件的操作。
[0016]4、上報(bào)服務(wù)運(yùn)行日志,實(shí)現(xiàn)服務(wù)監(jiān)控告警
當(dāng)服務(wù)線程出現(xiàn)故障時(shí),登記運(yùn)行日志,并將異常的信息定期通過遠(yuǎn)程訪問的方式,傳輸至中心的服務(wù)器上,通過中心的服務(wù)器可以了解到每臺(tái)服務(wù)器上運(yùn)行數(shù)據(jù)服務(wù)的情況,當(dāng)有故障發(fā)生時(shí),可以進(jìn)行在中心本地進(jìn)行聲音告警,提醒值班人員進(jìn)行注意。
[0017]以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
【權(quán)利要求】
1.一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于包括如下步驟: 步驟SOl:對(duì)采集服務(wù)的數(shù)據(jù)服務(wù)進(jìn)行配置,每個(gè)數(shù)據(jù)服務(wù)都以所述配置項(xiàng)進(jìn)行區(qū)分、初始化; 步驟S02:實(shí)例化數(shù)據(jù)服務(wù),并以獨(dú)立線程運(yùn)行數(shù)據(jù)服務(wù); 步驟S03:在服務(wù)的主進(jìn)程上,通過時(shí)間片輪值方式和事件的監(jiān)控方式,來跟蹤、監(jiān)控每個(gè)業(yè)務(wù)數(shù)據(jù)服務(wù)線程的運(yùn)行狀態(tài);包括如下步驟: 步驟S031:在時(shí)間片輪值上,通過遍歷線程,并判斷每個(gè)線程上的線程狀態(tài),一旦有出現(xiàn)非正常的狀態(tài)就進(jìn)行登記日志,并嘗試重新啟動(dòng)該服務(wù)線程; 步驟S032:綁定線程的運(yùn)行事件機(jī)制,當(dāng)線程觸發(fā)運(yùn)行事件也登記日志,并進(jìn)行對(duì)應(yīng)事件的操作; 步驟S04:上報(bào)服務(wù)運(yùn)行日志,實(shí)現(xiàn)服務(wù)監(jiān)控告警。
2.根據(jù)權(quán)利要求1所述的一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于:所述步驟SOl中所述配置的實(shí)現(xiàn)方式是通過對(duì)需要采集的服務(wù)進(jìn)行XML配置,實(shí)現(xiàn)在數(shù)據(jù)主進(jìn)程啟動(dòng)時(shí),能按照配置的內(nèi)容進(jìn)行初始化各個(gè)數(shù)據(jù)服務(wù);其中服務(wù)配置項(xiàng)如下: ID=服務(wù)ID ; NAME=服務(wù)名; ServiceID=服務(wù)插件線程ID; AutoRun=是否自動(dòng)運(yùn)行; ServiceAssembly=服務(wù)插件類庫(kù)DLL的文件名; LogName=服務(wù)日志文件名; RunBase=服務(wù)啟動(dòng)方法。
3.根據(jù)權(quán)利要求1所述的一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于:所述步驟S02的實(shí)現(xiàn)方式:當(dāng)主進(jìn)程啟動(dòng)時(shí),通過加載服務(wù)配置項(xiàng)的方式加載服務(wù);通過MainAssembly=System.Reflection.Assembly.LoadFile (ServiceAssembly)的方式,力口載服務(wù)需要運(yùn)行的DLL庫(kù),并通過MainAssembly.CreateInstance的方式,倉(cāng)Il建獨(dú)立的線程運(yùn)行加載的數(shù)據(jù)服務(wù);每個(gè)數(shù)據(jù)服務(wù)有不同的啟動(dòng)方法,可通過RunBase里的配置內(nèi)容加載啟動(dòng)方法,使之可以正常運(yùn)行。
4.根據(jù)權(quán)利要求1所述的一種可配置插件式的數(shù)據(jù)服務(wù)方法,其特征在于:所述步驟S04的實(shí)現(xiàn)方式:當(dāng)服務(wù)線程出現(xiàn)故障時(shí),登記運(yùn)行日志,并將異常的信息定期通過遠(yuǎn)程訪問的方式,傳輸至中心的服務(wù)器上,通過中心的服務(wù)器了解到每臺(tái)服務(wù)器上運(yùn)行數(shù)據(jù)服務(wù)的情況,當(dāng)有故障發(fā)生時(shí),進(jìn)行在中心本地進(jìn)行聲音告警,提醒值班人員進(jìn)行注意。
【文檔編號(hào)】G06Q50/26GK103632331SQ201310606355
【公開日】2014年3月12日 申請(qǐng)日期:2013年11月26日 優(yōu)先權(quán)日:2013年11月26日
【發(fā)明者】洪水潔, 黃敏 申請(qǐng)人:福建四創(chuàng)軟件有限公司