国产精品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>

      通知消息處理方法及裝置與流程

      文檔序號(hào):12278385閱讀:719來源:國(guó)知局
      通知消息處理方法及裝置與流程

      本發(fā)明涉及通信領(lǐng)域,具體一種通知消息處理方法及裝置。



      背景技術(shù):

      在分布式環(huán)境中,各個(gè)進(jìn)程需要通過網(wǎng)絡(luò)來交互各自的信息,協(xié)調(diào)相關(guān)的處理,為了提高消息的處理效率,在目前的多核主機(jī)上都會(huì)采用多線程的方式來處理消息通知,但在多線程處理通知消息的過程中,需要保證線程處理各通知消息的順序與接收到各通知消息的順序一致,否則就會(huì)造成業(yè)務(wù)邏輯出現(xiàn)問題;現(xiàn)有的多線程處理通知消息的方式在大型分布式系統(tǒng)中很難保證上述要求且進(jìn)行通知消息處理所占用的線程多,系統(tǒng)資源利用率低。

      因此在多線程處理通知消息過程中如何保證上述要求且盡可能占用較少線程以提升資源利用率就顯得尤為重要。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明要解決的主要技術(shù)問題是,提供一種通知消息處理方法及裝置,解決現(xiàn)有多線程處理通知消息難保證處理通知消息的順序與接收通知消息的順序一致,且資源利用率低的問題。

      為解決上述技術(shù)問題,本發(fā)明提供一種通知消息處理方法,包括:

      監(jiān)測(cè)各保序隊(duì)列中是否有存入新通知消息;所述各保序隊(duì)列用于根據(jù)預(yù)設(shè)規(guī)則按序存儲(chǔ)相應(yīng)的通知消息;

      監(jiān)測(cè)到某一保序隊(duì)列存入新通知消息時(shí),從線程池中選擇空閑狀態(tài)的工作線程模塊;

      所述工作線程模塊對(duì)所述保序隊(duì)列存入的所述新通知消息進(jìn)行處理。

      在本發(fā)明的一種實(shí)施例中,所述工作線程模塊處理完所述新通知消息后,還包括:

      判斷所述保序隊(duì)列是否還有未處理的新通知消息,如有,對(duì)未處理的新通知消息繼續(xù)處理。

      在本發(fā)明的一種實(shí)施例中,如判斷所述保序隊(duì)列中沒有未處理的新通知消息,開始計(jì)時(shí)監(jiān)測(cè)在等待時(shí)間閾值t內(nèi)所述保序隊(duì)列是否接收到新通知消息,如有,則對(duì)該新通知消息繼續(xù)處理。

      在本發(fā)明的一種實(shí)施例中,在所述等待時(shí)間閾值t內(nèi)所述保序隊(duì)列沒有接收到新通知消息時(shí),所述工作線程模塊回歸所述線程池。

      在本發(fā)明的一種實(shí)施例中,還包括:對(duì)所述線程池中的各工作線程模塊的生命周期和/或工作狀態(tài)進(jìn)行維護(hù)。

      為了解決上述問題,本發(fā)明還提供了一種通知消息處理裝置,包括:

      監(jiān)測(cè)線程模塊,用于監(jiān)測(cè)各保序隊(duì)列中是否有存入新通知消息;所述各保序隊(duì)列用于根據(jù)預(yù)設(shè)規(guī)則按序存儲(chǔ)相應(yīng)的通知消息;

      線程選擇模塊,用于在所述監(jiān)測(cè)線程模塊監(jiān)測(cè)到某一保序隊(duì)列存入新通知消息時(shí),從線程池中選擇空閑狀態(tài)的工作線程模塊;

      工作線程模塊,用于對(duì)所述保序隊(duì)列存入的所述新通知消息進(jìn)行處理。

      在本發(fā)明的一種實(shí)施例中,所述工作線程模塊包括消息處理子模塊和判斷子模塊;

      所述處理子模塊用于對(duì)所述新通知消息進(jìn)行處理;

      所述判斷子模塊用于在所述處理子模塊對(duì)所述新通知消息進(jìn)行處理后,判斷所述保序隊(duì)列是否還有未處理的新通知消息,如有,通知所述處理子模塊對(duì) 為處理的新通知消息繼續(xù)處理。

      在本發(fā)明的一種實(shí)施例中,所述工作線程模塊還包括監(jiān)測(cè)子模塊,用于在所述判斷子模塊判斷所述保序隊(duì)列中沒有未處理的新通知消息時(shí),開始計(jì)時(shí)監(jiān)測(cè)在等待時(shí)間閾值t內(nèi)所述保序隊(duì)列是否接收到新通知消息,如有,則通知所述處理子模塊對(duì)該新通知消息繼續(xù)處理。

      在本發(fā)明的一種實(shí)施例中,所述監(jiān)測(cè)子模塊還用于在所述等待時(shí)間閾值t內(nèi)所述保序隊(duì)列沒有接收到新通知消息時(shí),將所述工作線程模塊回歸所述線程池。

      在本發(fā)明的一種實(shí)施例中,還包括線程池維護(hù)模塊,用于對(duì)所述線程池中的各工作線程模塊的生命周期和/或工作狀態(tài)進(jìn)行維護(hù)。

      本發(fā)明的有益效果是:

      本發(fā)明提供的通知消息處理方法及裝置,首先利用保序隊(duì)列根據(jù)預(yù)設(shè)規(guī)則按序存儲(chǔ)相應(yīng)的通知消息,這樣可以保證對(duì)各保護(hù)序列中的通知消息進(jìn)行處理時(shí)的處理順序與接收到各通知消息的順序一致;然后監(jiān)測(cè)各保對(duì)序列中是否有存入新通知消息,當(dāng)監(jiān)測(cè)到某一保序隊(duì)列存入新通知消息時(shí),從線程池中選擇出當(dāng)前工作狀態(tài)為空閑狀態(tài)的工作線程模塊,利用該工作線程模塊對(duì)該保序隊(duì)列存入的新通知消息進(jìn)行處理。采用線程池可以實(shí)現(xiàn)對(duì)線程池中的工作線程的復(fù)用,保證能使用原少于保序隊(duì)列數(shù)據(jù)的線程就能有效的完成對(duì)全部通知消息的處理,提升系統(tǒng)資源利用率。

      附圖說明

      圖1為本發(fā)明實(shí)施例一提供的通知消息處理過程流程示意圖一;

      圖2為本發(fā)明實(shí)施例一提供的通知消息處理過程流程示意圖二;

      圖3為本發(fā)明實(shí)施例二提供的通知消息處理裝置結(jié)構(gòu)示意圖一;

      圖4為本發(fā)明實(shí)施例二提供的通知消息處理裝置結(jié)構(gòu)示意圖二。

      具體實(shí)施方式

      下面通過具體實(shí)施方式結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。

      實(shí)施例一:

      本實(shí)施例利用各通知消息的特點(diǎn),采用保序隊(duì)列對(duì)按照預(yù)設(shè)規(guī)則按序(也即按照接收到各通知消息的時(shí)間先后)存儲(chǔ)相應(yīng)的通知消息,以保證這后續(xù)對(duì)各保護(hù)序列中的通知消息進(jìn)行處理時(shí)的處理順序與接收到各通知消息的順序一致,保證業(yè)務(wù)邏輯的準(zhǔn)確無誤,進(jìn)而保證業(yè)務(wù)的正常進(jìn)行。應(yīng)當(dāng)理解的是,本實(shí)施例中的預(yù)設(shè)規(guī)則可以根據(jù)具體的消息類型和/或應(yīng)用場(chǎng)景進(jìn)行靈活設(shè)定;例如,對(duì)于SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)TRAP消息,當(dāng)發(fā)生告警風(fēng)暴時(shí),會(huì)上報(bào)來自多個(gè)設(shè)備的大量告警通知信息,此時(shí)就可將各告警通知消息會(huì)按照消息的源IP地址存入到不同的保序隊(duì)列中,各保序隊(duì)列之間的通知消息可以并發(fā)的進(jìn)行處理,且每個(gè)保序隊(duì)列中的通知消息都按照到達(dá)的先后次序進(jìn)行處理。

      另外,考慮到大型分布系統(tǒng)中需要較多的這種保序隊(duì)列對(duì)各通知消息按照預(yù)設(shè)規(guī)則進(jìn)行有序存儲(chǔ),因此如果為每個(gè)保序隊(duì)列指定用一個(gè)固定的工作線程處理通知消息的話,就會(huì)占用大量的工作線程,消耗很多的系統(tǒng)資源。由于在所有保序隊(duì)列中,同時(shí)處于有新通知消息到達(dá)狀態(tài)的保序隊(duì)列的數(shù)量是相當(dāng)有限的,因此本實(shí)施例提出采用線程池,且通過少量活動(dòng)的監(jiān)測(cè)線程來完成各個(gè)保序隊(duì)列消息狀態(tài)的監(jiān)控,在監(jiān)測(cè)到某一保序隊(duì)列有新的通知消息到達(dá)時(shí),則從線程池選擇出工作狀態(tài)為空閑狀態(tài)的工作線程模塊對(duì)該保護(hù)隊(duì)列中的新通知消息進(jìn)行處理,處理完后則可回歸線程池等待下一次或者其他保序列隊(duì)的調(diào)用,這樣采用線程池可以實(shí)現(xiàn)對(duì)線程池中的工作線程的復(fù)用,保證能使用原少于保序隊(duì)列數(shù)據(jù)的線程就能有效的完成對(duì)全部通知消息的處理,提升系統(tǒng)資源利用 率。上述過程請(qǐng)參見圖1所示,具體包括:

      步驟101:監(jiān)測(cè)各保序隊(duì)列中是否有存入新通知消息;如上所示,此處的各保序隊(duì)列用于根據(jù)預(yù)設(shè)規(guī)則按序存儲(chǔ)相應(yīng)的通知消息,此處的按序是指按接收到各通知消息的先后順序;

      步驟102:監(jiān)測(cè)到某一保序隊(duì)列有存入新通知消息時(shí),從線程池中選擇空閑狀態(tài)的工作線程模塊;

      步驟103:選擇出的工作線程模塊對(duì)該保序隊(duì)列存入的新通知消息進(jìn)行處理。

      請(qǐng)參見圖2所示,在本實(shí)施例中,在上述步驟103工作線程模塊處理完新通知消息后,還包括:

      步驟104:判斷該保序隊(duì)列是否還有未處理的新通知消息,如有,則該新通知消息則是工作線程模塊處理之前存入的新通知消息過程中新存入的,轉(zhuǎn)至步驟105;否則,轉(zhuǎn)至步驟106;

      步驟105,對(duì)未處理的新通知消息繼續(xù)處理后,轉(zhuǎn)回步驟104繼續(xù)判斷;

      步驟106:開始計(jì)時(shí)監(jiān)測(cè),在等待時(shí)間閾值t內(nèi)保序隊(duì)列是否接收到新通知消息,如有,轉(zhuǎn)至步驟107;否則,轉(zhuǎn)至步驟108;

      步驟107:對(duì)該新通知消息繼續(xù)處理后,轉(zhuǎn)至步驟104。

      步驟108:工作線程模塊回歸線程池。

      在上述步驟106的中,僅由工作線程模塊對(duì)該保序隊(duì)列進(jìn)行監(jiān)測(cè),監(jiān)測(cè)線程在此期間不再對(duì)該保序隊(duì)列進(jìn)行監(jiān)測(cè),但仍對(duì)其他保序隊(duì)列進(jìn)行監(jiān)測(cè);在上述步驟108之后,該保序隊(duì)列的監(jiān)測(cè)則繼續(xù)轉(zhuǎn)交由監(jiān)測(cè)線程執(zhí)行。

      通過上述步驟104-108,可以保證同一保序隊(duì)列中的通知消息盡量由同一工作線程模塊進(jìn)行處理,從而降低線程上下文的切換,提升處理效率,降低系統(tǒng)處理性能的損耗。

      本實(shí)施例中,在上述步驟過程中,還包括對(duì)線程池中的各工作線程模塊的生命周期和/或工作狀態(tài)進(jìn)行維護(hù)的步驟,具體維護(hù)的規(guī)則和方式都可根據(jù)具體的應(yīng)用場(chǎng)景等靈活選擇,此處不再贅述。

      實(shí)施例二:

      本實(shí)施例提供一種通知消息處理裝置,請(qǐng)參見圖3所示,包括:

      保護(hù)隊(duì)列模塊1,用于根據(jù)預(yù)設(shè)規(guī)則將各通知消息按序存(也即按照接收到各通知消息的時(shí)間先后)儲(chǔ)到各保序隊(duì)列中,以保證這后續(xù)對(duì)各保護(hù)序列中的通知消息進(jìn)行處理時(shí)的處理順序與接收到各通知消息的順序一致,保證業(yè)務(wù)邏輯的準(zhǔn)確無誤,進(jìn)而保證業(yè)務(wù)的正常進(jìn)行;應(yīng)當(dāng)理解的是,本實(shí)施例中的預(yù)設(shè)規(guī)則可以根據(jù)具體的消息類型和/或應(yīng)用場(chǎng)景進(jìn)行靈活設(shè)定;

      監(jiān)測(cè)線程模塊2,用于監(jiān)測(cè)各保序隊(duì)列中是否有存入新通知消息;

      線程選擇模塊3,用于在監(jiān)測(cè)線程模塊監(jiān)測(cè)到某一保序隊(duì)列存入新通知消息時(shí),從線程池中選擇空閑狀態(tài)的工作線程模塊4;

      工作線程模塊4,用于對(duì)該保序隊(duì)列存入的新通知消息進(jìn)行處理。

      其中,工作線程模塊4包括消息處理子模塊41、判斷子模塊42和監(jiān)測(cè)子模塊43;

      處理子模塊41用于對(duì)保序隊(duì)列中的新通知消息進(jìn)行處理;

      判斷子模塊42用于在處理子模塊41對(duì)新通知消息進(jìn)行處理后,判斷保序隊(duì)列是否還有未處理的新通知消息,如有,通知處理子模塊對(duì)為處理的新通知消息繼續(xù)處理;否則,通知監(jiān)測(cè)子模塊43;

      監(jiān)測(cè)子模塊43用于在判斷子模塊42判斷保序隊(duì)列中沒有未處理的新通知消息時(shí),開始計(jì)時(shí)監(jiān)測(cè)在等待時(shí)間閾值t內(nèi)保序隊(duì)列是否接收到新通知消息,如有,則通知處理子模塊41對(duì)該新通知消息繼續(xù)處理;否則,將該工作線程模塊回歸線程池。在監(jiān)測(cè)子模塊43對(duì)該保序隊(duì)列監(jiān)測(cè)過程中,監(jiān)測(cè)線程模塊2在此期間不再對(duì)該保序隊(duì)列進(jìn)行監(jiān)測(cè);在該工作線程模塊回歸線程池后,該保序隊(duì)列的監(jiān)測(cè)則繼續(xù)轉(zhuǎn)交由監(jiān)測(cè)線程模塊2執(zhí)行。

      可見,本實(shí)施例中的工作線程模塊4可以保證同一保序隊(duì)列中的通知消息盡量由同一工作線程模塊進(jìn)行處理,從而降低線程上下文的切換,提升處理效 率,降低系統(tǒng)處理性能的損耗。

      請(qǐng)參見圖4所示,本實(shí)施例中的通知消息處理裝置還包括線程池維護(hù)模塊5,用于對(duì)所線程池中的各工作線程模塊的生命周期和/或工作狀態(tài)進(jìn)行維護(hù),具體維護(hù)的規(guī)則和方式都可根據(jù)具體的應(yīng)用場(chǎng)景等靈活選擇,此處不再贅述。

      可見,本發(fā)明實(shí)施以事件驅(qū)動(dòng)模型為理論基礎(chǔ),采用了兩層事件驅(qū)動(dòng)機(jī)制(分別為監(jiān)測(cè)新通知消息到來事件和處理該新通知消息的工作線程選擇處理事件),在保證通知信息有序處理的前提下,同時(shí)利用了多線程在處理性能的優(yōu)勢(shì),并且在整個(gè)處理流程中,不涉及對(duì)鎖資源的競(jìng)爭(zhēng),并且減少了線程上下文的切換,同時(shí)采用了線程池,達(dá)到了線程復(fù)用的目的,保證了能使用遠(yuǎn)少于保序隊(duì)列數(shù)目的線程,就能完成對(duì)全部通知消息的處理。

      以上內(nèi)容是結(jié)合具體的實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁(yè)1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1