本公開總體涉及數(shù)據(jù)處理
技術(shù)領(lǐng)域:
,尤其涉及一種處理數(shù)據(jù)的方法及裝置。
背景技術(shù):
:當前,電銷系統(tǒng)的數(shù)據(jù)庫部署方式為:1個總公司數(shù)據(jù)庫,下屬的多家分公司的數(shù)據(jù)按照一定的規(guī)則部署在N個數(shù)據(jù)庫上(分別為分公司1DB、分公司2DB……分公司NDB)。部署一個總公司應(yīng)用,對報文數(shù)據(jù)進行處理的流程如圖1所示:在步驟S11中,通過接口調(diào)用接收XML格式的報文數(shù)據(jù);在步驟S12中,總公司應(yīng)用對XML格式的報文數(shù)據(jù)進行解析可以得到多個參數(shù),其中的一個參數(shù)為機構(gòu)代碼,通過一定的規(guī)則可以根據(jù)解析的參數(shù)選擇該機構(gòu)對應(yīng)的是哪一個數(shù)據(jù)庫,得到該數(shù)據(jù)庫的數(shù)據(jù)源以后把解析得到的參數(shù)傳遞給對應(yīng)數(shù)據(jù)庫并存儲過程,執(zhí)行業(yè)務(wù)操作;在步驟S13中,總公司應(yīng)用將報文數(shù)據(jù)和執(zhí)行結(jié)果保存到總公司數(shù)據(jù)庫中的匯總表中。其中上述處理過程中通過接口調(diào)用接收的一條XML格式的報文就相當于一張訂單(如保單)的一次業(yè)務(wù)操作,業(yè)務(wù)操作是要求有先后順序的,也就是說,通過接口先后得到的同一個機構(gòu)的同一張保單的兩個報文,必須保證按照順序先處理第一條報文,再處理第二條報文。如果前一條報文沒有處理完,之后的報文就會一直等待,這樣就會影響報文數(shù)據(jù)處理的整體速度。另外,如果總公司應(yīng)用通過接口調(diào)用先后有不同機構(gòu)的報文數(shù)據(jù),如果采用單線程處理,則一個機構(gòu)的報文數(shù)據(jù)執(zhí)行效率慢,就會阻塞其他機構(gòu)報文數(shù)據(jù)的執(zhí)行,造成數(shù)據(jù)處理的效率低下;如果采用多線程處理,接收到一個報文數(shù)據(jù)就啟動一個線程進行處理,則無法保證同一機構(gòu)發(fā)送來的報文數(shù)據(jù)的執(zhí)行順序。因此,需要一種新的處理數(shù)據(jù)的方法及裝置。在所述
背景技術(shù):
部分公開的上述信息僅用于加強對本公開的背景的理解,因此它可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。技術(shù)實現(xiàn)要素:本公開提供一種處理數(shù)據(jù)的方法及裝置,以解決現(xiàn)有技術(shù)中單線程處理數(shù)據(jù)的效率慢、多線程處理數(shù)據(jù)無法保證報文數(shù)據(jù)順序的問題。本公開的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習(xí)得。根據(jù)本公開的一方面,本公開提供一種處理數(shù)據(jù)的方法,該方法包括:對接收的報文數(shù)據(jù)進行解析,從中得到與所述報文數(shù)據(jù)所屬機構(gòu)相對應(yīng)的機構(gòu)代碼;啟動至少一個任務(wù)隊列,并根據(jù)所述機構(gòu)代碼為所述報文數(shù)據(jù)分配相應(yīng)的任務(wù)隊列;監(jiān)控所述任務(wù)隊列的業(yè)務(wù)壓力,所述業(yè)務(wù)壓力為單位時間內(nèi)接收報文數(shù)據(jù)的數(shù)量;在預(yù)設(shè)周期內(nèi)根據(jù)所述任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整所述任務(wù)隊列所處理的機構(gòu),其中所述預(yù)設(shè)周期大于等于所述單位時間。在本公開的一種示例性實施例中,每一所述任務(wù)隊列用于處理至少一個機構(gòu)的報文數(shù)據(jù)。在本公開的一種示例性實施例中,所述監(jiān)控所述任務(wù)隊列的業(yè)務(wù)壓力包括:設(shè)定一預(yù)設(shè)閾值,所述預(yù)設(shè)閾值為單位時間內(nèi)所述任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值;判斷所述任務(wù)就隊列的業(yè)務(wù)壓力是否大于所述預(yù)設(shè)閾值,得到比較結(jié)果。在本公開的一種示例性實施例中,所述根據(jù)所述任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整所述任務(wù)隊列所處理的機構(gòu)包括:如果所述比較結(jié)果為所述任務(wù)隊列的業(yè)務(wù)壓力大于所述預(yù)設(shè)閾值,則對所述任務(wù)隊列所處理的報文數(shù)據(jù)按照機構(gòu)代碼的不同進行拆分。在本公開的一種示例性實施例中,所述根據(jù)所述任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整所述任務(wù)隊列所處理的機構(gòu)包括:如果所述比較結(jié)果為所述任務(wù)隊列的業(yè)務(wù)壓力小于所述預(yù)設(shè)閾值,則對所述任務(wù)隊列所處理的報文數(shù)據(jù)不做拆分或合并的處理,等待下一個預(yù)設(shè)周期。在本公開的一種示例性實施例中,所述根據(jù)所述任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整所述任務(wù)隊列所處理的機構(gòu)包括:如果所述比較結(jié)果為若干個任務(wù)隊列的業(yè)務(wù)壓力總和小于所述預(yù)設(shè)閾值,則對所述若干個任務(wù)隊列所處理的報文數(shù)據(jù)合并為一個任務(wù)隊列。根據(jù)本公開的一個方面,提供一種處理數(shù)據(jù)的裝置,包括:報文解析模塊,用于對接收的報文數(shù)據(jù)進行解析,從中得到與所述報文數(shù)據(jù)所屬機構(gòu)相對應(yīng)的機構(gòu)代碼;隊列分配模塊,用于啟動至少一個任務(wù)隊列,并根據(jù)所述機構(gòu)代碼為所述報文數(shù)據(jù)分配相應(yīng)的任務(wù)隊列;監(jiān)控模塊,用于監(jiān)控所述任務(wù)隊列的業(yè)務(wù)壓力,所述業(yè)務(wù)壓力為單位時間內(nèi)接收報文數(shù)據(jù)的數(shù)量;調(diào)整模塊,用于在預(yù)設(shè)周期內(nèi)根據(jù)所述任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整所述任務(wù)隊列所處理的機構(gòu),其中所述預(yù)設(shè)周期大于等于所述單位時間。在本公開的一種示例性實施例中,所述調(diào)整模塊包括:設(shè)定子模塊,用于設(shè)定一預(yù)設(shè)閾值,所述預(yù)設(shè)閾值為單位時間內(nèi)所述任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值;判斷子模塊,用于判斷所述任務(wù)就隊列的業(yè)務(wù)壓力是否大于所述預(yù)設(shè)閾值,得到比較結(jié)果。在本公開的一種示例性實施例中,所述調(diào)整模塊還包括:拆分子模塊,用于如果所述比較結(jié)果為所述任務(wù)隊列的業(yè)務(wù)壓力大于所述預(yù)設(shè)閾值,則對所述任務(wù)隊列所處理的報文數(shù)據(jù)按照機構(gòu)代碼的不同進行拆分。在本公開的一種示例性實施例中,所述調(diào)整模塊還包括:合并子模塊,用于如果所述比較結(jié)果為若干個任務(wù)隊列的業(yè)務(wù)壓力總和小于所述預(yù)設(shè)閾值,則對所述若干個任務(wù)隊列所處理的報文數(shù)據(jù)合并為一個任務(wù)隊列?;谏鲜黾夹g(shù)方案可知,本公開的實施例具有以下技術(shù)效果:該方法設(shè)置多個任務(wù)隊列以及多個守護線程,可以進行多線程處理,提高處理效率。由于接收的報文數(shù)據(jù)經(jīng)解析之后是由相應(yīng)的任務(wù)隊列對報文數(shù)據(jù)進行處理,可以保證同一機構(gòu)報文數(shù)據(jù)處理的有序性。分配任務(wù)隊列之后對其承載的業(yè)務(wù)壓力進行監(jiān)控,并根據(jù)業(yè)務(wù)壓力的情況定期調(diào)整任務(wù)隊列所處理的機構(gòu),即動態(tài)地進行任務(wù)隊列的拆分或合并,具有很大的靈活性,使得在業(yè)務(wù)壓力大的時候進行任務(wù)隊列的拆分,保證處理效率,在業(yè)務(wù)壓力小的時候進行任務(wù)隊列的合并,可以節(jié)省系統(tǒng)資源。應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性的,并不能限制本公開。附圖說明通過參照附圖詳細描述其示例實施例,本公開的上述和其它目標、特征及優(yōu)點將變得更加顯而易見。圖1示出相關(guān)實施例中對報文數(shù)據(jù)進行處理的流程圖。圖2示出相關(guān)實施例中總公司應(yīng)用處理同一機構(gòu)的先后兩條報文的流程圖。圖3示出相關(guān)實施例中總公司應(yīng)用處理不同機構(gòu)的先后多條報文的流程圖。圖4示出相關(guān)實施例中對于同一機構(gòu)先后發(fā)送來的報文數(shù)據(jù)分別交給不同的線程進行處理的流程圖。圖5示出本公開一實施例中提供的一種處理數(shù)據(jù)的方法的流程圖。圖6示出本公開一實施例中進行數(shù)據(jù)處理的一種實施方式的處理流程圖。圖7示出本公開一實施例中監(jiān)控步驟的流程示意圖。圖8示出本公開一實施例中對任務(wù)隊列進行拆分操作的示意圖。圖9示出本公開一實施例中對任務(wù)隊列進行合并操作的示意圖。圖10示出本公開另一實施例中提供的一種處理數(shù)據(jù)的裝置的示意圖。圖11示出本公開另一實施例中報文解析模塊以及監(jiān)控模塊工作的示意圖。圖12示出本公開另一實施例中本實施例中調(diào)整模塊的示意圖。具體實施方式現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復(fù)描述。此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。在下面的描述中,提供許多具體細節(jié)從而給出對本公開的實施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識到,可以實踐本公開的技術(shù)方案而省略所述特定細節(jié)中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知結(jié)構(gòu)、方法、裝置、實現(xiàn)、材料或者操作以避免喧賓奪主而使得本公開的各方面變得模糊。附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)??梢圆捎密浖问絹韺崿F(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。為了保證業(yè)務(wù)操作執(zhí)行的先后順序,總公司應(yīng)用處理同一機構(gòu)的先后兩條報文的流程如圖2所示:首先,通過接口調(diào)用先后接收兩條報文數(shù)據(jù),如圖2所示,這兩條報文數(shù)據(jù)為報文數(shù)據(jù)1(先)和報文數(shù)據(jù)2(后),它們所對應(yīng)的機構(gòu)代碼和保單號均相同,但是完成的業(yè)務(wù)操作是不同的,那么總公司應(yīng)用必須保證報文數(shù)據(jù)1先執(zhí)行成功后,再執(zhí)行報文數(shù)據(jù)2,即報文數(shù)據(jù)1執(zhí)行圖1中步驟S11~S13的處理后再接收報文數(shù)據(jù)2,并執(zhí)行步驟S11~S13的處理。如果報文數(shù)據(jù)1執(zhí)行效率慢,那么報文數(shù)據(jù)2會一直等待,直到報文數(shù)據(jù)1執(zhí)行完成??偣緫?yīng)用處理不同機構(gòu)的先后多條報文的流程如圖3所示,總公司應(yīng)用接收機構(gòu)代碼為1的機構(gòu)先后發(fā)送來的兩條報文數(shù)據(jù)1和數(shù)據(jù)報文2以及機構(gòu)代碼為1的機構(gòu)發(fā)送來的報文數(shù)據(jù)3、機構(gòu)代碼為C的機構(gòu)發(fā)送來的報文數(shù)據(jù)4,其實報文數(shù)據(jù)3和報文數(shù)據(jù)4并不需要等待報文數(shù)據(jù)1、2執(zhí)行完成后再做執(zhí)行。圖3中所示流程為采用單線程進行數(shù)據(jù)處理,如果報文數(shù)據(jù)1執(zhí)行效率慢,同樣也會影響到其他分公司數(shù)據(jù)(如報文數(shù)據(jù)3和報文數(shù)據(jù)4)的執(zhí)行效率。除此之外,總公司應(yīng)用處理不同機構(gòu)的先后多條報文還可以采用多線程進行處理,但是采用多線程處理時,對于同一機構(gòu)先后發(fā)送來的報文數(shù)據(jù)分別交給不同的線程進行處理的流程,如圖4所示,機構(gòu)代碼為1的機構(gòu)發(fā)送來的報文數(shù)據(jù)1由線程1進行處理,而機構(gòu)代碼為2的機構(gòu)發(fā)送來的報文數(shù)據(jù)2由線程2進行處理,這樣將無法保證總公司應(yīng)用在處理這兩條報文數(shù)據(jù)時并不是按照處理完報文數(shù)據(jù)1以后再處理報文數(shù)據(jù)2的先后順序?;谏鲜?,總公司應(yīng)用采用單線程處理來自多個機構(gòu)的報文數(shù)據(jù)會有處理效率低的問題,一旦一個機構(gòu)的報文數(shù)據(jù)處理以及執(zhí)行的效率過慢就會導(dǎo)致其他機構(gòu)的報文數(shù)據(jù)的處理以及執(zhí)行收到阻塞,不利于提高處理效率;而總公司應(yīng)用采用多線程處理來自多個機構(gòu)的報文數(shù)據(jù)又會有無法保證報文數(shù)據(jù)的處理以及執(zhí)行順序的問題。針對上述問題,圖5示出根據(jù)本公開一實施例提供的一種處理數(shù)據(jù)的方法的流程圖。如圖5所示,在步驟S10中,對接收的報文數(shù)據(jù)進行解析,從中得到與報文數(shù)據(jù)所屬機構(gòu)相對應(yīng)的機構(gòu)代碼。如圖5所示,在步驟S20中,啟動至少一個任務(wù)隊列,并根據(jù)機構(gòu)代碼為報文數(shù)據(jù)分配相應(yīng)的任務(wù)隊列。如圖5所示,在步驟S30中,監(jiān)控任務(wù)隊列的業(yè)務(wù)壓力,業(yè)務(wù)壓力為單位時間內(nèi)接收報文數(shù)據(jù)的數(shù)量。如圖5所示,在步驟S40中,在預(yù)設(shè)周期內(nèi)根據(jù)任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整任務(wù)隊列所處理的機構(gòu),其中預(yù)設(shè)周期大于等于單位時間。本實施例提供的方法通過啟動多個任務(wù)隊列,根據(jù)從報文數(shù)據(jù)中解析的機構(gòu)代碼分配相應(yīng)的任務(wù)隊列,分配任務(wù)隊列之后對其承載的業(yè)務(wù)壓力進行監(jiān)控,并根據(jù)業(yè)務(wù)壓力的情況定期調(diào)整任務(wù)隊列所處理的機構(gòu),靈活性增強,從而可以對報文數(shù)據(jù)進行多線程處理,同時還可以保證同一機構(gòu)的報文數(shù)據(jù)按照先后順序進行處理,既提高處理效率又保證有序性。其中本實施例中每一任務(wù)隊列用于處理至少一個機構(gòu)的報文數(shù)據(jù),實際情況中可以根據(jù)每一機構(gòu)所發(fā)送的報文數(shù)據(jù)的數(shù)量的不同來確定每一任務(wù)隊列來處理幾個機構(gòu)的報文數(shù)據(jù),例如如果報文數(shù)據(jù)的數(shù)量一直不是很多的機構(gòu),則可以是一個任務(wù)隊列處理幾個機構(gòu)的報文數(shù)據(jù),而如果報文數(shù)據(jù)的數(shù)量很多的話,則一個任務(wù)隊列可以處理一個機構(gòu)的報文數(shù)據(jù),如果處理多個機構(gòu)的報文數(shù)據(jù)則將會影響處理的效率。需要說明的是,一般是不會用多個任務(wù)隊列來處理同一個機構(gòu)的報文的數(shù)據(jù)的,因此一個任務(wù)隊列至少對應(yīng)一個機構(gòu)的報文數(shù)據(jù)。首先,在步驟S10中在總公司應(yīng)用通過接口調(diào)用接收來自不同機構(gòu)的報文數(shù)據(jù),并對報文數(shù)據(jù)進行解析,其中的報文數(shù)據(jù)可以是保單,一條保單的報文數(shù)據(jù)包括機構(gòu)代碼、保單號以及業(yè)務(wù)信息等。機構(gòu)代碼就是總公司對下屬的機構(gòu)作統(tǒng)一的編碼以便進行數(shù)據(jù)統(tǒng)計以及管理等,保單號是保險公司為客戶提供每一份保險的合同號,還可以是銷售公司的訂單號等等,此處僅為示例,不在此一一列舉。業(yè)務(wù)信息是對于同一保單號或訂單號提供針對不同階段的任務(wù),例如保單先進行質(zhì)檢,再進行電核等等不同的業(yè)務(wù)階段,或者是訂單的接收、確認、發(fā)貨、售后以及安裝或維修等業(yè)務(wù)。同一個機構(gòu)可以向總公司應(yīng)用發(fā)送相同或不同的保單號的報文數(shù)據(jù),還可以發(fā)送同一保單號不同業(yè)務(wù)類型的報文數(shù)據(jù),如先接收機構(gòu)A保單號為X的質(zhì)檢結(jié)果,再接收機構(gòu)A保單號為X的電核結(jié)果……在步驟S10中只需要解析出報文數(shù)據(jù)中包含的機構(gòu)代碼的信息即可,以便下一步驟根據(jù)機構(gòu)代碼來配置任務(wù)隊列以及處理線程。在本實施例中,在程序啟動時根據(jù)配置生成多個任務(wù)隊列,包括任務(wù)隊列1、任務(wù)隊列2……每一個任務(wù)隊列可以對應(yīng)一個或多個機構(gòu),通常每一個任務(wù)隊列對應(yīng)啟動一個處理線程,該處理線程掃描任務(wù)隊列中是否有新的任務(wù)(也就是需要處理的報文數(shù)據(jù))。例如,以保險公司為例,總公司往往有幾家設(shè)置在不同城市或地區(qū)的下屬分公司機構(gòu),參見表1所示,北京、天津和河北的分公司共用任務(wù)隊列1,但北京、天津和河北分別具有不同的機構(gòu)代碼,山東的分公司配置任務(wù)隊列2……分公司機構(gòu)任務(wù)隊列編號北京1天津1河北1山東2............表1本實施例在步驟S20中根據(jù)解析出來的機構(gòu)代碼分配相應(yīng)的任務(wù)隊列,參見表1所示,如果報文數(shù)據(jù)中解析出機構(gòu)代碼是北京、天津或河北,則為其分配任務(wù)隊列1,如果報文數(shù)據(jù)中解析出機構(gòu)代碼是山東,則為其分配任務(wù)隊列2,并且由分配的任務(wù)隊列進行后續(xù)的一系列處理。由于接收報文數(shù)據(jù)后是由任務(wù)隊列進行處理,由于隊列特有的先進先出屬性,因此本實施例中任務(wù)隊列對接收的報文數(shù)據(jù)也是按照先進先出的原則進行處理,這樣可以保證處理報文數(shù)據(jù)的順序為先接收的報文數(shù)據(jù)先處理,后接收的報文數(shù)據(jù)后處理,以此保證報文數(shù)據(jù)處理的有序性。以保單為例,對于同一機構(gòu)的保單號相同的報文數(shù)據(jù)而言,按照業(yè)務(wù)信息的類型的不同具有一定的有序性,也就是先收到質(zhì)檢結(jié)果再收到電核結(jié)果,利用任務(wù)隊列處理對報文數(shù)據(jù)進行一一有序的處理,可以解決現(xiàn)有技術(shù)中進行多線程處理時無法保證同一機構(gòu)同一張保單的執(zhí)行順序的問題。本實施例在步驟S30中監(jiān)控任務(wù)隊列的業(yè)務(wù)壓力包括:首先,設(shè)定一預(yù)設(shè)閾值,預(yù)設(shè)閾值為單位時間內(nèi)任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值。之后,判斷任務(wù)隊列的業(yè)務(wù)壓力是否大于預(yù)設(shè)閾值,得到比較結(jié)果,比較結(jié)果分為三種:大于預(yù)設(shè)閾值、等于預(yù)設(shè)閾值以及小于預(yù)設(shè)閾值。在本實施例中步驟S40主要是根據(jù)步驟S30的比較結(jié)果來對任務(wù)隊列所處理的報文數(shù)據(jù)來源進行動態(tài)調(diào)整,即如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力大于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)按照機構(gòu)代碼的不同進行拆分;如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力小于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)不做拆分或合并的處理,等待下一個預(yù)設(shè)周期;如果比較結(jié)果為若干個任務(wù)隊列的業(yè)務(wù)壓力總和小于預(yù)設(shè)閾值,則對若干個任務(wù)隊列所處理的報文數(shù)據(jù)合并為一個任務(wù)隊列。圖6示出本實施例一種實施方式下的處理流程圖,具體包括以下步驟:1)總公司應(yīng)用從接口中得到報文數(shù)據(jù)后進行解析,得到報文所屬的分公司代碼(也就是機構(gòu)代碼)。2)根據(jù)解析結(jié)果中的機構(gòu)代碼,將解析結(jié)果發(fā)送到對應(yīng)的任務(wù)隊列。如報文數(shù)據(jù)解析后,機構(gòu)為北京,那么按照表1的對應(yīng)關(guān)系就會將其發(fā)送到任務(wù)隊列1進行后續(xù)處理。3)每個任務(wù)隊列會有對應(yīng)的守護線程,如圖6所示,任務(wù)隊列1對應(yīng)守護線程1,相應(yīng)的處理程序?qū)Ψ止?以及總公司的報文數(shù)據(jù),如果掃描到有新的任務(wù),把報文數(shù)據(jù)從任務(wù)隊列中取出來,進行后續(xù)的操作:記錄日志、存總部庫、連接分公司數(shù)據(jù)源、調(diào)用分公司數(shù)據(jù)源上的存儲過程等。4)同時對每個消息隊列進行監(jiān)控,主要是監(jiān)控每個分公司的業(yè)務(wù)壓力,并且會根據(jù)業(yè)務(wù)壓力的大小,進行人隊伍隊列的調(diào)整,所謂調(diào)整包括:拆分或合并。監(jiān)控時需要設(shè)置一個預(yù)設(shè)閾值,例如可以設(shè)置單位時間內(nèi)任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值maxNum=500,這里的單位時間可以是一分鐘,因此監(jiān)控時需要對每一分鐘各個機構(gòu)報文數(shù)據(jù)的數(shù)量進行統(tǒng)計,用于決定是否進行拆分和合并。按照表1中的初始化設(shè)置,北京、天津、河北三家分公司公用一個任務(wù)隊列,山東分公司使用一個任務(wù)隊列。任務(wù)隊列啟動后,統(tǒng)計單位時間內(nèi)每一機構(gòu)報文數(shù)據(jù)的數(shù)量,最后判斷統(tǒng)計的數(shù)量是否大于預(yù)設(shè)閾值,并根據(jù)比較結(jié)果對當前任務(wù)隊列所承擔(dān)的機構(gòu)進行拆分、合并或者不變的處理,之后返回繼續(xù)統(tǒng)計下一個單位時間內(nèi)每一機構(gòu)報文數(shù)據(jù)的數(shù)量,圖7示出上述過程的流程示意圖。需要說明的是,對報文數(shù)據(jù)數(shù)量進行統(tǒng)計的預(yù)設(shè)周期可以大于或等于單位時間,如果預(yù)設(shè)周期等于單位時間,也就是可以在一個單位時間對任務(wù)隊列進行一次調(diào)整;如果預(yù)設(shè)周期大于單位時間,也可以是在W個單位時間內(nèi)對任務(wù)隊列進行一次調(diào)整,都可以進行動態(tài)調(diào)整。預(yù)設(shè)周期時一個單位時間還是W個單位時間將會影響調(diào)整的靈敏度,W的數(shù)值越大,則靈敏度越差。因此具體調(diào)整的預(yù)設(shè)周期選擇多大,可以根據(jù)需要進行選擇。例如,單位時間內(nèi)統(tǒng)計結(jié)果:北京的報文數(shù)據(jù)數(shù)量=100,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=200;計算結(jié)果三家分公司總計的報文數(shù)據(jù)數(shù)量為400<maxNum=500,可以看出任務(wù)隊列1還能承受這三家分公司的報文數(shù)據(jù)的業(yè)務(wù)壓力,因此對任務(wù)隊列1不做拆分。由于任務(wù)隊列1處理的是北京、天津、河北三家分公司的報文數(shù)據(jù),如果監(jiān)控模塊發(fā)現(xiàn)這段時間某一分公司的報文數(shù)據(jù)特別多,那么會自動拆分生成一個新的任務(wù)隊列,并由新的任務(wù)隊列去單獨處理來自北京的報文數(shù)據(jù),以提高處理效率。仍以單位時間內(nèi)的統(tǒng)計結(jié)果為例,如果北京的報文數(shù)據(jù)數(shù)量=200,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=300;計算結(jié)果三家分公司總計的報文數(shù)據(jù)數(shù)量為600>maxNum=500;那么需要把最大的報文數(shù)據(jù)數(shù)量的河北分公司拆分出去;拆分后,河北分公司單獨使用一個任務(wù)隊列(假如分配給新的任務(wù)隊列A),北京、天津分公司共用一個任務(wù)隊列。另外,進行一次拆分之后,還可以進一步進行拆分,即單位時間內(nèi)的統(tǒng)計結(jié)果為北京的報文數(shù)據(jù)數(shù)量=400,天津的報文數(shù)據(jù)數(shù)量=300,河北的報文數(shù)據(jù)數(shù)量=500;計算后,河北分公司被拆分出去,分配給新的任務(wù)隊列A。圖8示出對任務(wù)隊列進行拆分操作的示意圖。剩余的北京、天津分公司的報文數(shù)據(jù)數(shù)量再計算,依然大于預(yù)設(shè)閾值,那么會繼續(xù)拆分,也就是北京分公司和天津分公司分別分配一個任務(wù)隊列B和任務(wù)隊列C,最終的拆分結(jié)果為:北京、天津、河北三家分公司各使用一個任務(wù)隊列。但是需要說明的是,如果單個分公司的報文數(shù)據(jù)數(shù)量依然大于預(yù)設(shè)閾值,如河北一分鐘內(nèi)有1000條數(shù)據(jù),也不再繼續(xù)拆分,因此一般不會出現(xiàn)一家分公司使用多個任務(wù)隊列的情況。例如,單位時間內(nèi)的統(tǒng)計結(jié)果:北京的報文數(shù)據(jù)數(shù)量=100,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=200;通過計算得到三個分公司的報文數(shù)據(jù)數(shù)量之和400<maxNum=500,說明系統(tǒng)的處理壓力得到降低,那么如果這三家分公司之前分別由三個任務(wù)隊列單獨進行處理,則可以將這三個任務(wù)隊列會合并成一個。仍以表1為例,任務(wù)隊列1中處理的是北京、天津、河北的報文數(shù)據(jù),任務(wù)隊列2中處理的是山東的數(shù)據(jù),如果一段時間四家分公司報文數(shù)據(jù)都不是很多,那么會將其合并成一個任務(wù)隊列,以節(jié)約系統(tǒng)資源,圖9示出對任務(wù)隊列進行合并操作的示意圖。本實施例中是將上述方法應(yīng)用在保險類公司在處理保單數(shù)據(jù)過程中,還可以應(yīng)用在其他類別的數(shù)據(jù)處理過程中,這樣可以便于總公司對下屬的分公司的訂單數(shù)據(jù)等進行管理。綜上所述,本實施例提供的處理數(shù)據(jù)的方法設(shè)置多個任務(wù)隊列以及多個守護線程,可以進行多線程處理,提高處理效率。由于接收的報文數(shù)據(jù)經(jīng)解析之后是由相應(yīng)的任務(wù)隊列對報文數(shù)據(jù)進行處理,可以保證同一機構(gòu)報文數(shù)據(jù)處理的有序性。進一步的,分配任務(wù)隊列之后對其承載的業(yè)務(wù)壓力進行監(jiān)控,并根據(jù)業(yè)務(wù)壓力的情況定期調(diào)整任務(wù)隊列所處理的機構(gòu),即動態(tài)地進行任務(wù)隊列的拆分或合并,具有很大的靈活性,使得在業(yè)務(wù)壓力大的時候進行任務(wù)隊列的拆分,保證處理效率,在業(yè)務(wù)壓力小的時候進行任務(wù)隊列的合并,可以節(jié)省系統(tǒng)資源。圖10還示出本公開另一實施例中提供的一種處理數(shù)據(jù)的裝置的示意圖,如圖10所示,該裝置100包括:報文解析模塊110、隊列分配模塊120、監(jiān)控模塊130和調(diào)整模塊140。報文解析模塊110用于對接收的報文數(shù)據(jù)進行解析,從中得到與報文數(shù)據(jù)所屬機構(gòu)相對應(yīng)的機構(gòu)代碼。隊列分配模塊120用于啟動至少一個任務(wù)隊列,并根據(jù)機構(gòu)代碼為報文數(shù)據(jù)分配相應(yīng)的任務(wù)隊列。監(jiān)控模塊130用于監(jiān)控任務(wù)隊列的業(yè)務(wù)壓力,業(yè)務(wù)壓力為單位時間內(nèi)接收報文數(shù)據(jù)的數(shù)量。調(diào)整模塊140用于在預(yù)設(shè)周期內(nèi)根據(jù)任務(wù)隊列的業(yè)務(wù)壓力的情況調(diào)整任務(wù)隊列所處理的機構(gòu),其中預(yù)設(shè)周期大于等于單位時間。該實施例提供的裝置中總公司應(yīng)用通過報文解析模塊對接收的報文數(shù)據(jù)進行解析,隊列分配模塊根據(jù)解析出來的機構(gòu)代碼分配相應(yīng)的任務(wù)隊列進行后續(xù)處理,同時通過監(jiān)控模塊對所有任務(wù)隊列的業(yè)務(wù)壓力進行監(jiān)控,以便調(diào)整模塊能夠及時根據(jù)任務(wù)隊列所承受的業(yè)務(wù)壓力調(diào)整任務(wù)隊列對應(yīng)的機構(gòu)。其中報文解析模塊以及監(jiān)控模塊工作的示意圖如圖11所示,即報文解析模塊對通過接口調(diào)用接收到的報文數(shù)據(jù)進行解析,按照機構(gòu)代碼將報文數(shù)據(jù)分配給相應(yīng)的任務(wù)隊列,即分別分配給任務(wù)隊列1、任務(wù)隊列2、……任務(wù)隊列N,同時監(jiān)控模塊對這些任務(wù)隊列進行監(jiān)控,以得到每個任務(wù)隊列的業(yè)務(wù)壓力。在本實施例中,每一任務(wù)隊列用于處理至少一個機構(gòu)的報文數(shù)據(jù),同時每一任務(wù)隊列對應(yīng)一個守護線程,并由相應(yīng)的處理程序進行對分公司以及總公司的數(shù)據(jù)進行處理。實際情況中可以根據(jù)每一機構(gòu)所發(fā)送的報文數(shù)據(jù)的數(shù)量的不同來確定每一任務(wù)隊列來處理幾個機構(gòu)的報文數(shù)據(jù),例如如果是報文數(shù)據(jù)的數(shù)量一直不是很多的機構(gòu)可以是一個任務(wù)隊列處理幾個機構(gòu)的報文數(shù)據(jù),而如果報文數(shù)據(jù)的數(shù)量很多的話則一個任務(wù)隊列可以處理一個機構(gòu)的報文數(shù)據(jù),如果處理多個機構(gòu)的報文數(shù)據(jù)則將會影響處理的效率。在總公司應(yīng)用通過接口調(diào)用接收來自不同機構(gòu)的報文數(shù)據(jù),并對報文數(shù)據(jù)進行解析,其中的報文數(shù)據(jù)可以是保單,一條保單的報文數(shù)據(jù)包括機構(gòu)代碼、保單號以及業(yè)務(wù)信息等,同一個機構(gòu)可以向總公司應(yīng)用發(fā)送相同或不同的保單號的報文數(shù)據(jù),還可以發(fā)送同一保單號不同業(yè)務(wù)類型的報文數(shù)據(jù),如先接收機構(gòu)A保單號為X的質(zhì)檢結(jié)果,再接收機構(gòu)A保單號為X的電核結(jié)果……報文解析模塊只需要解析出報文數(shù)據(jù)中包含的機構(gòu)代碼的信息即可。隊列分配模塊120根據(jù)解析出來的機構(gòu)代碼分配相應(yīng)的任務(wù)隊列,參見表1所示,如果報文數(shù)據(jù)中解析出機構(gòu)代碼是北京、天津或河北,則為其分配任務(wù)隊列1,如果報文數(shù)據(jù)中解析出機構(gòu)代碼是山東,則為其分配任務(wù)隊列2,并且由分配的任務(wù)隊列進行后續(xù)的一系列處理。由于接收報文數(shù)據(jù)后是由任務(wù)隊列進行處理,由于隊列特有的先進先出屬性,因此本實施例中任務(wù)隊列對接收的報文數(shù)據(jù)也是按照先進先出的原則進行處理,這樣可以保證處理報文數(shù)據(jù)的順序為先接收的報文數(shù)據(jù)先處理,后接收的報文數(shù)據(jù)后處理,以此保證報文數(shù)據(jù)處理的有序性。以保單為例,對于同一機構(gòu)的保單號相同的報文數(shù)據(jù)而言,按照業(yè)務(wù)信息的類型的不同具有一定的有序性,也就是先收到質(zhì)檢結(jié)果再收到電核結(jié)果,利用任務(wù)隊列處理對報文數(shù)據(jù)進行一一有序的處理,可以解決現(xiàn)有技術(shù)中進行多線程處理時無法保證同一機構(gòu)同一張保單的執(zhí)行順序的問題。圖12示出本實施例中調(diào)整模塊140的示意圖,如圖12所示,調(diào)整模塊140還可以進一步包括:設(shè)定子模塊141和判斷子模塊142。其中設(shè)定子模塊141用于設(shè)定一預(yù)設(shè)閾值,預(yù)設(shè)閾值為單位時間內(nèi)任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值,例如設(shè)置單位時間內(nèi)任務(wù)隊列接收到報文數(shù)據(jù)數(shù)量的最大值maxNum=500?!皢挝粫r間”可以是一分鐘,因此監(jiān)控時需要對每一分鐘各個機構(gòu)報文數(shù)據(jù)的數(shù)量進行統(tǒng)計,用于決定是否對任務(wù)隊列進行拆分和合并。判斷子模塊142用于判斷任務(wù)隊列的業(yè)務(wù)壓力是否大于預(yù)設(shè)閾值,得到比較結(jié)果,比較結(jié)果分為三種:大于預(yù)設(shè)閾值、等于預(yù)設(shè)閾值以及小于預(yù)設(shè)閾值。接下來調(diào)整模塊140就會根據(jù)比較結(jié)果來對任務(wù)隊列所處理的報文數(shù)據(jù)來源進行動態(tài)調(diào)整,即如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力大于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)按照機構(gòu)代碼的不同進行拆分;如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力小于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)不做拆分或合并的處理,等待下一個預(yù)設(shè)周期;如果比較結(jié)果為若干個任務(wù)隊列的業(yè)務(wù)壓力總和小于預(yù)設(shè)閾值,則對若干個任務(wù)隊列所處理的報文數(shù)據(jù)合并為一個任務(wù)隊列。如圖11所示,調(diào)整模塊140中還包括:拆分子模塊143以及合并子模塊144,具體的是對任務(wù)隊列進行拆分還是合并需要根據(jù)比較結(jié)果來決定。拆分子模塊143用于如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力大于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)按照機構(gòu)代碼的不同進行拆分。按照表1中的初始化設(shè)置,北京、天津、河北三家分公司公用一個任務(wù)隊列,山東分公司使用一個任務(wù)隊列。任務(wù)隊列啟動后,統(tǒng)計單位時間內(nèi)每一機構(gòu)報文數(shù)據(jù)的數(shù)量,最后判斷統(tǒng)計的數(shù)量是否大于預(yù)設(shè)閾值,并根據(jù)比較結(jié)果對當前任務(wù)隊列所承擔(dān)的機構(gòu)進行拆分、合并或者不變的處理,之后返回繼續(xù)統(tǒng)計下一個單位時間內(nèi)每一機構(gòu)報文數(shù)據(jù)的數(shù)量,圖7示出上述過程的流程示意圖。需要說明的是,對報文數(shù)據(jù)數(shù)量進行統(tǒng)計的預(yù)設(shè)周期可以大于或等于單位時間,如果預(yù)設(shè)周期等于單位時間,也就是可以在一個單位時間對任務(wù)隊列進行一次調(diào)整;如果預(yù)設(shè)周期大于單位時間,也可以是在W個單位時間內(nèi)對任務(wù)隊列進行一次調(diào)整,都可以進行動態(tài)調(diào)整。預(yù)設(shè)周期時一個單位時間還是W個單位時間將會影響調(diào)整的靈敏度,W的數(shù)值越大,則靈敏度越差。因此具體調(diào)整的預(yù)設(shè)周期選擇多大,可以根據(jù)需要進行選擇。例如,單位時間內(nèi)統(tǒng)計結(jié)果:北京的報文數(shù)據(jù)數(shù)量=100,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=200;計算結(jié)果三家分公司總計的報文數(shù)據(jù)數(shù)量為400<maxNum=500,可以看出任務(wù)隊列1還能承受這三家分公司的報文數(shù)據(jù)的業(yè)務(wù)壓力,因此對任務(wù)隊列1不做拆分。由于任務(wù)隊列1處理的是北京、天津、河北三家分公司的報文數(shù)據(jù),如果監(jiān)控模塊發(fā)現(xiàn)這段時間某一分公司的報文數(shù)據(jù)特別多,那么會自動拆分生成一個新的任務(wù)隊列,并由新的任務(wù)隊列去單獨處理來自北京的報文數(shù)據(jù),以提高處理效率。仍以單位時間內(nèi)的統(tǒng)計結(jié)果為例,如果北京的報文數(shù)據(jù)數(shù)量=200,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=300;計算結(jié)果三家分公司總計的報文數(shù)據(jù)數(shù)量為600>maxNum=500;那么需要把最大的報文數(shù)據(jù)數(shù)量的河北分公司拆分出去;拆分后,河北分公司單獨使用一個任務(wù)隊列(假如分配給新的任務(wù)隊列A),北京、天津分公司共用一個任務(wù)隊列。另外,進行一次拆分之后,還可以進一步進行拆分,即單位時間內(nèi)的統(tǒng)計結(jié)果為北京的報文數(shù)據(jù)數(shù)量=400,天津的報文數(shù)據(jù)數(shù)量=300,河北的報文數(shù)據(jù)數(shù)量=500;計算后,河北分公司被拆分出去,分配給新的任務(wù)隊列A。剩余的北京、天津分公司的報文數(shù)據(jù)數(shù)量再計算,依然大于預(yù)設(shè)閾值,那么會繼續(xù)拆分,也就是北京分公司和天津分公司分別分配一個任務(wù)隊列B和任務(wù)隊列C,最終的拆分結(jié)果為:北京、天津、河北三家分公司各使用一個任務(wù)隊列。但是需要說明的是,如果單個分公司的報文數(shù)據(jù)數(shù)量依然大于預(yù)設(shè)閾值,如河北一分鐘內(nèi)有1000條數(shù)據(jù),也不再繼續(xù)拆分,因此一般不會出現(xiàn)一家分公司使用多個任務(wù)隊列的情況。如果比較結(jié)果為任務(wù)隊列的業(yè)務(wù)壓力小于預(yù)設(shè)閾值,則對任務(wù)隊列所處理的報文數(shù)據(jù)不做拆分或合并的處理,等待下一個預(yù)設(shè)周期。合并子模塊144用于如果比較結(jié)果為若干個任務(wù)隊列的業(yè)務(wù)壓力總和小于預(yù)設(shè)閾值,則對若干個任務(wù)隊列所處理的報文數(shù)據(jù)合并為一個任務(wù)隊列。例如,單位時間內(nèi)的統(tǒng)計結(jié)果:北京的報文數(shù)據(jù)數(shù)量=100,天津的報文數(shù)據(jù)數(shù)量=100,河北的報文數(shù)據(jù)數(shù)量=200;通過計算得到三個分公司的報文數(shù)據(jù)數(shù)量之和400<maxNum=500,說明系統(tǒng)的處理壓力得到降低,那么如果這三家分公司之前分別由三個任務(wù)隊列單獨進行處理,則可以將這三個任務(wù)隊列會合并成一個。仍以表1為例,任務(wù)隊列1中處理的是北京、天津、河北的報文數(shù)據(jù),任務(wù)隊列2中處理的是山東的數(shù)據(jù),如果一段時間四家分公司報文數(shù)據(jù)都不是很多,那么會將其合并成一個任務(wù)隊列,以節(jié)約系統(tǒng)資源。綜上所述,本實施例提供的裝置通過設(shè)置多個任務(wù)隊列以及多個守護線程,可以進行多線程處理,提高處理效率。由于接收的報文數(shù)據(jù)經(jīng)解析之后是由相應(yīng)的任務(wù)隊列對報文數(shù)據(jù)進行處理,可以保證同一機構(gòu)報文數(shù)據(jù)處理的有序性。進一步的,分配任務(wù)隊列之后對其承載的業(yè)務(wù)壓力進行監(jiān)控,并根據(jù)業(yè)務(wù)壓力的情況定期調(diào)整任務(wù)隊列所處理的機構(gòu),即動態(tài)地進行任務(wù)隊列的拆分或合并,具有很大的靈活性,使得在業(yè)務(wù)壓力大的時候進行任務(wù)隊列的拆分,保證處理效率,在業(yè)務(wù)壓力小的時候進行任務(wù)隊列的合并,可以節(jié)省系統(tǒng)資源。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM,U盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、移動終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。以上具體地示出和描述了本公開的示例性實施方式。應(yīng)可理解的是,本公開不限于這里描述的詳細結(jié)構(gòu)、設(shè)置方式或?qū)崿F(xiàn)方法;相反,本公開意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效設(shè)置。當前第1頁1 2 3