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

      一種心跳包的處理方法和裝置制造方法

      文檔序號:6502986閱讀:202來源:國知局
      一種心跳包的處理方法和裝置制造方法
      【專利摘要】本發(fā)明涉及一種心跳包處理的方法和裝置,包括:一個或多個執(zhí)行線程、以及獨立線程;所述獨立線程依次獲取多個設備上報的一個或多個心跳包并發(fā)送至對應的所述執(zhí)行線程;一個或多個所述執(zhí)行線程,根據(jù)各自對應的散列表和心跳包隊列,并行地對對應的心跳包執(zhí)行處理。本發(fā)明利用獨立線程獲取并分發(fā)心跳包,并使用多個執(zhí)行線程并行的處理來自多個設備的心跳包,提高了心跳包的處理效率;并且在變更當前設備狀態(tài)時,運用散列表和心跳隊列,避免了對集群中每一個設備的遍歷,大幅度減少了系統(tǒng)的運算量。
      【專利說明】一種心跳包的處理方法和裝置

      【技術(shù)領(lǐng)域】
      [0001]本申請涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種心跳包的處理方法和裝置。

      【背景技術(shù)】
      [0002]心跳包是指客戶端定時上報簡單的信息給服務器端,以此告訴服務器,該客戶端處于在線狀態(tài)。例如,客戶端每隔幾分鐘上報一個信息(可稱為心跳包)給心跳服務器,如果該心跳服務器在預定時間內(nèi)(如,I分鐘內(nèi))沒有收到客戶端信息,則表示該客戶端已經(jīng)離線。
      [0003]現(xiàn)有的心跳服務器采用以下處理方式來管理心跳:在進程中使用“樹”來存儲每個設備最近一次上報來的心跳包所包含的信息,該“樹”可以是二叉查找樹,其中,樹中的每個結(jié)點將會記錄3個信息,分別為設備名稱、最近一次上報的時間、當前狀態(tài)。
      [0004]并且,現(xiàn)有的處理方式為多個線程共同操作該樹,其中一些線程負責處理設備上報來心跳包,并在接收到一個心跳包后更新樹中的與該心跳包對應的結(jié)點,例如,發(fā)現(xiàn)該心跳包對應的設備在樹中不存在、或者該心跳包對應的設備的狀態(tài)為線下時,則在樹中添加該設備的結(jié)點或是將該設備的當前設備狀態(tài)置為線上;另有一些線程負責遍歷樹中的每一個節(jié)點,將各個設備的上次心跳時間與當前系統(tǒng)時間做比較,若發(fā)現(xiàn)某個設備在一定時間內(nèi)沒有上報心跳包,則將該設備的狀態(tài)設置為下線。
      [0005]但是,這種處理方式效率并不高,這種低效體現(xiàn)在兩點:1、多線程操作同一棵樹,必須使用“鎖”來保護線程對該共享資源(樹)的訪問,所述多個線程只有獲得“鎖”才能對該樹進行操作,這限制了多個線程之間的并發(fā)性,尤其是多個線程的執(zhí)行所帶來的無謂的進程間切換(如Linux操作系統(tǒng)中,進程切換等價于線程切換)開銷將會很可觀。2、線程對樹的遍歷操作運算量過大,尤其是集群內(nèi)含有大量的設備時,換言之,所述的樹中包含大量的節(jié)點時,線程要對樹中的每一個節(jié)點進行遍歷,運算量過大。這樣,以上的心跳包處理方式導致心跳服務器性能較低,不能處理大量的心跳包。
      [0006]在云計算環(huán)境下,一個大集群(例如阿里云彈性計算集群)內(nèi),可以包含2萬臺物理機和80萬臺虛擬機,而且這個數(shù)據(jù)還會隨著物理機和虛擬機數(shù)量的增加而不斷擴大,這樣,處理各個設備的心跳包所需要的運算量也越來越大,這導致了集群的心跳服務器性能的局限性。若利用上述心跳包處理方式,可以使用多個心跳服務器組成一個心跳服務器集群才能完成處理,但是,在現(xiàn)有技術(shù)中,對于心跳服務器集群的構(gòu)建還存在很多技術(shù)問題,如,對多個心跳服務器進行集群構(gòu)建設計、數(shù)據(jù)同步設計等,而且,在系統(tǒng)中添加多個心跳服務器提高了系統(tǒng)成本。


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

      [0007]本申請的主要目的在于提供一種心跳包的處理方法和裝置,以解決現(xiàn)有技術(shù)存在的多個線程不能并發(fā)對多個心跳包進行處理,而且遍歷大量設備的狀態(tài)運算量過大的問題。
      [0008]為了解決上述技術(shù)問題,本申請的目的是通過以下技術(shù)方案實現(xiàn)的:
      [0009]本申請?zhí)峁┝艘环N心跳包處理的方法,包括以下步驟:一個或多個執(zhí)行線程、以及獨立線程;所述獨立線程依次獲取多個設備上報的一個或多個心跳包并發(fā)送至對應的所述執(zhí)行線程;一個或多個所述執(zhí)行線程,根據(jù)各自對應的散列表和心跳包隊列,并行地對對應的心跳包執(zhí)行處理。
      [0010]優(yōu)選地,在根據(jù)本申請所述的方法中,所述心跳包至少包括所述心跳包的上報時間、所述心跳包對應的設備的IP地址;所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包對應的設備的設備信息;其中,所述設備信息包括:所述心跳包的最近一次上報時間、所述心跳包對應的設備的當前設備狀態(tài);所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息;其中,所述心跳包隊列的心跳包信息包括:所述心跳包的上報時間。
      [0011]優(yōu)選地,根據(jù)本申請所述的方法,所述獨立線程依次獲取多個設備上報的多個心跳包的步驟,包括:所述獨立線程根據(jù)每一個所述心跳包中的IP地址,將所述各個心跳包發(fā)送至與其對應的執(zhí)行線程中。
      [0012]優(yōu)選地,在根據(jù)本申請所述的方法中,將所述心跳包中的IP地址轉(zhuǎn)化為長整型數(shù)字,并將所述長整型數(shù)字與執(zhí)行線程的數(shù)量取模,并得到取模結(jié)果;以及基于所述取模結(jié)果,所述獨立線程將所述心跳包發(fā)送至與該取模結(jié)果存在關(guān)聯(lián)關(guān)系的執(zhí)行線程中。
      [0013]優(yōu)選地,根據(jù)本申請所述的方法,所述一個或多個所述執(zhí)行線程根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理的步驟,包括:查詢所述散列表中與所述心跳包對應的設備的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      [0014]優(yōu)選地,根據(jù)本申請所述的方法,所述根據(jù)所述心跳包更新所述散列表的步驟,包括:若與所述心跳包對應的設備的當前設備狀態(tài)是線下,則將所述設備的當前設備狀態(tài)置為線上并根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間;若與所述心跳包對應的設備的當前設備狀態(tài)是線上,則根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間;以及若在散列表中不包含所述心跳包對應的設備的設備信息,則根據(jù)所述心跳包,在散列表中新建與所述心跳包對應的設備的設備信息,并將所述設備的當前設備狀態(tài)置于線上。
      [0015]優(yōu)選地,根據(jù)本申請所述的方法,所述一個或多個所述執(zhí)行線程根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理的步驟,包括:對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      [0016]優(yōu)選地,根據(jù)本申請所述的方法,所述對所述心跳包隊列進行分析的步驟,包括:在所述心跳包隊列中,順次查詢所述心跳包的上報時間;根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)。
      [0017]優(yōu)選地,根據(jù)本申請所述的方法,所述根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)的步驟,包括:若當前時間與該心跳包的上報時間的差小于彈性時間,則所述心跳包對應的設備的當前設備狀態(tài)為線上;若當前時間與該心跳包的上報時間的差大于彈性時間,則查詢所述心跳包對應的設備在散列表中的設備信息;若心跳包的上報時間小于所述最近一次上報時間,則保持與所述心跳包對應的設備的當前設備狀態(tài)為線上;若心跳包的上報時間等于所述最近一次上報時間,則將與所述心跳包對應的設備的當前設備狀態(tài)置于線下。
      [0018]本申請還提供了一種心跳包處理的裝置,包括:一個或多個執(zhí)行模塊,以及獨立模塊;所述獨立模塊,用于依次獲取多個設備上報的多個心跳包;并將每一個所述心跳包發(fā)送至對應的所述執(zhí)行模塊;一個或多個所述執(zhí)行模塊根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理。
      [0019]優(yōu)選地,在根據(jù)本申請所述的裝置中,所述心跳包至少包括所述心跳包的上報時間、所述心跳包對應的設備的IP地址;所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包對應的設備的設備信息,其中,所述設備信息包括:所述心跳包的最近一次上報時間、所述心跳包對應的設備的當前設備狀態(tài);所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息,其中,所述心跳包隊列的心跳包信息包括:所述心跳包的上報時間。
      [0020]優(yōu)選地,在根據(jù)本申請所述的裝置中,所述獨立模塊還被配置成:所述獨立模塊根據(jù)每一個所述心跳包中的IP地址,將所述各個心跳包發(fā)送至與其對應的執(zhí)行模塊中。
      [0021]優(yōu)選地,在根據(jù)本申請所述的裝置中,所述執(zhí)行模塊還被配置成:查詢所述散列表中與所述心跳包對應的設備的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      [0022]優(yōu)選地,在根據(jù)本申請所述的裝置中,所述執(zhí)行模塊還被配置成:對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      [0023]與現(xiàn)有技術(shù)相比,根據(jù)本申請的技術(shù)方案存在以下有益效果:
      [0024]本申請利用獨立線程獲取并分發(fā)心跳包,并使用多個執(zhí)行線程并行的處理來自多個設備的心跳包,提高了心跳包的處理效率;
      [0025]本申請在變更當前設備狀態(tài)時,運用散列表和心跳隊列,避免了對集群中每一個設備的遍歷,大幅度減少了系統(tǒng)的運算量。

      【專利附圖】

      【附圖說明】
      [0026]此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
      [0027]圖1是本申請實施例的心跳包處理的方法的流程圖;
      [0028]圖2是本申請實施例的心跳包處理的散列表的示意圖;
      [0029]圖3是本申請實施例的心跳包處理的心跳包隊列的示意圖;
      [0030]圖4是本申請實施例的更新散列表的步驟的流程圖;
      [0031]圖5是本申請實施例的分析心跳包隊列的步驟的流程圖;以及
      [0032]圖6是本申請實施例的心跳包處理的裝置的示意圖。

      【具體實施方式】
      [0033]本申請的主要思想在于,提供多個線程,設置其中一個線程為獨立線程,其余多個線程為執(zhí)行線程,其中,獨立線程獲取心跳包,并發(fā)送給對應的執(zhí)行線程,每一個執(zhí)行線程包含對應的散列表和心跳包隊列,根據(jù)所述散列表和心跳包隊列,多個執(zhí)行線程并行的處理心跳包,從而達到及時監(jiān)控集群中大量設備的線上和線下狀態(tài)的變化。
      [0034]在本申請一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。
      [0035]內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計算機可讀介質(zhì)的示例。
      [0036]計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPR0M)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
      [0037]為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖及具體實施例,對本申請作進一步地詳細說明。
      [0038]根據(jù)本申請的實施例,提供了一種心跳包處理的方法。
      [0039]參考圖1,圖1是本申請實施例的心跳包處理的方法的流程圖。
      [0040]在大集群環(huán)境中,包括大量設備,如:物理機和虛擬機,為了及時監(jiān)控設備的當前設備狀態(tài),可以利用心跳服務器接收集群中設備定時發(fā)送的心跳包,當心跳服務器可以收到設備定時發(fā)送的心跳包時,可以確定該設備的當前設備狀態(tài)為線上,若在一段時間內(nèi),未收到來自設備發(fā)送的心跳包時,則確定該設備的當前設備狀態(tài)為線下。例如,聊天工具(QQ、阿里旺旺、MSN等),若客戶端定時向心跳服務器發(fā)送心跳包,則表示用戶在線,若在一定時間內(nèi),客戶端未向心跳服務器發(fā)送心跳包,則表示用戶已經(jīng)下線;又例如,阿里云彈性計算環(huán)境中擁有許多臺虛擬機,若虛擬機定時向心跳服務器發(fā)送心跳包,則表示虛擬機在線,用戶可以正常使用他擁有的虛擬機,若在一定時間內(nèi),一臺虛擬機未向心跳服務器發(fā)送心跳包,則表示虛擬機已經(jīng)下線,彈性計算系統(tǒng)將會對虛擬機自動執(zhí)行各種故障恢復方案。
      [0041]由于在集群中設備數(shù)量巨大,系統(tǒng)可以并發(fā)多個線程,由該多個線程并行對接收的大量心跳包執(zhí)行操作。本申請可以設置其中某一個線程為獨立線程,負責獲取并分發(fā)心跳包,其余的一個或多個線程為執(zhí)行線程,負責處理心跳包。進一步地,所述獨立線程可以在分發(fā)心跳包時,對一個或多個執(zhí)行線程進行負載(心跳包)均衡;而每個執(zhí)行線程可以單獨處理接收到的所述心跳包,并及時更新設備的當前設備狀態(tài)。
      [0042]下面對該心跳包處理的方式進行詳細描述。
      [0043]步驟S102,通過獨立線程依次獲取多個設備上報的多個心跳包。
      [0044]心跳服務器接收多個設備上報的多個心跳包,并將每一個心跳包置于數(shù)據(jù)緩沖區(qū)中。當心跳包服務器處理系統(tǒng)(以下簡稱系統(tǒng))處理心跳包時,可以并發(fā)開啟多個線程,為該多個線程中每一個線程設置任務,并且并行處理對應的心跳包。比如,可以將所述并發(fā)開啟的多個線程設置為一個或多個執(zhí)行線程、以及獨立線程,利用該獨立線程來依次獲取多個設備上報的多個心跳包。每一個設備上報的心跳包還至少可以包括:該心跳包的上報時間、該心跳包對應的設備(如:上報該心跳包的設備)的設備名稱、該心跳包對應的設備的IP地址等各種參數(shù)(數(shù)據(jù)/信息)。進一步地,可以在多個線程中,預設一個線程作為獨立線程,而剩余的一個或多個線程作為執(zhí)行線程。獨立線程可以從已經(jīng)存儲了心跳包的數(shù)據(jù)緩沖區(qū)中獲得各個心跳包,并將各個心跳包發(fā)送給相應的執(zhí)行線程,以便執(zhí)行線程能夠處理各個心跳包。而這些執(zhí)行線程對所述心跳包進行心跳包處理,則比如:接收獨立線程發(fā)送來的心跳包,新建或者變更上報該心跳包的設備的狀態(tài)、對接收到的多個心跳包組成的心跳包隊列進行分析等等。
      [0045]與現(xiàn)有技術(shù)不同的是,本申請所述的多個線程(獨立線程、執(zhí)行線程)可以并行的進行數(shù)據(jù)操作,避免了多個線程由于未搶到“鎖”進入休眠期(即,同一時刻只有一個線程進行數(shù)據(jù)操作),造成的心跳包處理效率低的問題;并且采用單獨一個獨立線程負責從數(shù)據(jù)緩沖區(qū)獲取心跳包,避免了數(shù)據(jù)緩沖區(qū)中的心跳包由于獲取不及時造成的丟包現(xiàn)象。
      [0046]獨立線程獲取所述數(shù)據(jù)緩沖區(qū)中的心跳包,進一步地,獨立線程可以復制所述數(shù)據(jù)緩沖區(qū)中的心跳包,并且系統(tǒng)釋放該心跳包處于所述數(shù)據(jù)緩沖區(qū)中的存儲空間,以此保證數(shù)據(jù)緩沖區(qū)有足夠的空間可以存放來自設備上報的心跳包。
      [0047]需要說明的是,一個或多個執(zhí)行線程的數(shù)量可以根據(jù)系統(tǒng)具有的CPU核數(shù)決定,執(zhí)行線程的數(shù)量優(yōu)選地小于或等于系統(tǒng)CPU核數(shù)。這樣,當一個執(zhí)行線程在滿負荷運行而全程占用CPU時,不影響其他執(zhí)行線程的運行,以此提高系統(tǒng)性能。
      [0048]步驟S104,獨立線程將每一個心跳包發(fā)送至對應的執(zhí)行線程。
      [0049]這里,獨立線程可以根據(jù)每一個心跳包中的參數(shù)信息,例如IP地址等,將各個心跳包,發(fā)送至與其對應的執(zhí)行線程中,接收到心跳包的執(zhí)行線程執(zhí)行該心跳包的處理。
      [0050]發(fā)送心跳包給對應的執(zhí)行線程,比如,可以將心跳包中的IP地址轉(zhuǎn)化為長整型數(shù)字,并將所述長整型數(shù)字與執(zhí)行線程的數(shù)量取模,并得到取模結(jié)果。這里,可以預先對各種取模結(jié)果進行分析,并預先將每一種取模結(jié)果與所述多個執(zhí)行線程之一進行關(guān)聯(lián),從而獨立線程可以基于如所述心跳包對應的設備的IP地址等參數(shù)信息轉(zhuǎn)化取模得到的取模結(jié)果,將該心跳包發(fā)送至與該取模結(jié)果存在關(guān)聯(lián)關(guān)系的執(zhí)行線程中去。優(yōu)選地,還可以預先為各個執(zhí)行線程中的每一個,添加標簽。由該標簽能確定/確認/識別標簽所對應的執(zhí)行線程。這樣,預先把各種取模結(jié)果與各個標簽進行關(guān)聯(lián),就可以找到對應的執(zhí)行線程。
      [0051]例如,將心跳包中的IP地址“192.168.0.1”轉(zhuǎn)化為長整型數(shù)字“3232235521”,若系統(tǒng)中存在6個執(zhí)行線程,并且執(zhí)行線程I一執(zhí)行線程6的標簽順次為1-6,預先將這6個標簽與可能出現(xiàn)的取模結(jié)果一一對應,如,若取模結(jié)果為1,則關(guān)聯(lián)執(zhí)行線程1,若取模結(jié)果為2,則關(guān)聯(lián)執(zhí)行線程2,將“3232235521”對執(zhí)行線程的數(shù)量6取模,取模結(jié)果為1,則獨立線程將該心跳包發(fā)送給執(zhí)行線程1,以執(zhí)行心跳包處理。
      [0052]這樣,通過取模的方式把每一個心跳包發(fā)送到其對應的執(zhí)行線程中,可以達到自動負載均衡的效果,而當大量設備向心跳服務器發(fā)送大量的心跳包時,還可以使每一個執(zhí)行線程接收的心跳包數(shù)據(jù)大致均衡,避免了單獨一個執(zhí)行線程處理的心跳包數(shù)量遠大于其他執(zhí)行線程的心跳包處理數(shù)量,造成的系統(tǒng)壓力。
      [0053]在另一個實施例中,可以根據(jù)每一個心跳包中的設備名稱,將心跳包發(fā)送至對應的執(zhí)行線程中。這里,可以預先對多個設備進行預分配,將每一個設備對應一個執(zhí)行線程。例如,集群中存在100個設備,并且系統(tǒng)具有2個執(zhí)行線程,則可以將設備I一設備50對應執(zhí)行線程I,將設備51—設備100對應執(zhí)行線程2,對于設備上報的心跳包,由獨立線程發(fā)送到與上報該心跳包的設備對應的執(zhí)行線程中處理,如,設備2上報一個心跳包,則獨立線程將該心跳包發(fā)送給執(zhí)行線程I處理。
      [0054]從而,利用獨立線程將心跳包發(fā)送至相應的執(zhí)行線程中,這樣,可以保證該多個執(zhí)行線程可以并發(fā)執(zhí)行心跳包的處理,進而可以達到負載(心跳包)均衡效果。
      [0055]步驟S106,一個或多個執(zhí)行線程根據(jù)各自對應的散列表和心跳包隊列并行的對對應心跳包執(zhí)行心跳包處理。
      [0056]一個實施方式,一個或多個執(zhí)行線程中的每一個執(zhí)行線程擁有對應的散列表和心跳包隊列,例如,執(zhí)行線程I對應散列表I和心跳包隊列1,執(zhí)行線程2對應散列表2和心跳包隊列2 ;執(zhí)行線程可以通過查詢散列表和心跳包隊列更新上報該心跳包的設備的當前設備狀態(tài)。
      [0057]所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包的相關(guān)信息,該相關(guān)信息是該心跳包對應的設備的設備信息,例如,以設備名稱作為關(guān)鍵詞,所述設備信息可以包括心跳包的最近一次上報時間,上報該心跳包的設備的設備名稱和當前設備狀態(tài),如圖2所示的心跳包處理的散列表的示意圖,在所述散列表中保存有多個設備的設備名稱,每一個設備最近一次上報心跳包的上報時間,每一個設備的當前設備狀態(tài)(線上或線下)。
      [0058]所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息,如圖3所述的心跳包處理的心跳包隊列的示意圖,按照從心跳包隊列的首部到心跳包隊列的尾部的存儲位置順序,存儲收到的心跳包,例如,收到的第一個心跳包存儲到該心跳包隊列的首部,收到的第二個心跳包存儲到第一個心跳包之后,其中,所述心跳包信息可以包括:上報該心跳包的設備名稱(心跳包對應的設備的設備名稱)和該心跳包的上報時間。
      [0059]在本申請實施例中,每個執(zhí)行線程有自己的散列表和心跳包隊列。具體而言,一種情況,每一個執(zhí)行線程可以單獨具有對應的散列表和心跳包隊列,其中,所述執(zhí)行線程可以單獨存儲對應的散列表和心跳包隊列,以及將該每一個唯一的標簽對應多個執(zhí)行線程中的一個執(zhí)行線程,以此來界定每一個執(zhí)行線程各自對應的散列表和心跳包隊列。
      [0060]由于在現(xiàn)有技術(shù)中,多個線程不能同時對同一棵樹操作,所以多個線程之間不能并行的處理心跳包,而且,每一個執(zhí)行線程不能獨立的完成一個心跳包的處理全過程,造成心跳包處理效率較低。然而,本申請所述的方法,系統(tǒng)采用多核CPU,并且每一個執(zhí)行線程各自存儲與心跳包有關(guān)的彳目息(散列表和心跳包隊列),從而,基于各自存儲的與心跳包有關(guān)的信息,并且每一個執(zhí)行線程可以獨立的完成一個心跳包的處理全過程,所以,多個執(zhí)行線程可以并行的處理各自接收到的心跳包。
      [0061]該心跳包的處理可以包括:根據(jù)心跳包對應的設備的心跳包上報情況,將上報該心跳包的設備的狀態(tài)變更為上線或?qū)⑸蠄笤撔奶脑O備的狀態(tài)變更為線下等。
      [0062]每一個執(zhí)行線程可以各自存儲的與心跳包有關(guān)的信息,如,散列表和心跳包隊列,并且多個執(zhí)行線程之間的散列表和心跳包隊列互不影響,多個執(zhí)行線程并行的對對應的散列表和心跳包隊列執(zhí)行操作,從而減小了每一個執(zhí)行線程的運算量。
      [0063]然而,在現(xiàn)有技術(shù)中,系統(tǒng)將接收到的所有心跳包是全部存放在一個樹結(jié)構(gòu)中,如:二叉查找樹,在進行心跳包處理時,可以對所述二叉查找樹進行遍歷,但是隨著集群的不斷擴大,該二叉查找樹中的節(jié)點也不斷增加,若實現(xiàn)對該二叉查找樹的各個節(jié)點的遍歷,所付出的運算量巨大。而本申請中所述散列表不需要進行遍歷,只需查詢散列表中的設備信息即可,而且,在系統(tǒng)性能允許的前提下,可以無限擴展存儲空間。從而提高了心跳包的處理效率。
      [0064]具體而言,所述執(zhí)行線程對對應心跳包執(zhí)行心跳包處理,目的在于監(jiān)控到與該心跳包對應的設備的當前設備狀態(tài),即,及時的對散列表中的設備信息進行更新,如圖4所示,圖4是本申請實施例的更新散列表的步驟的流程圖。
      [0065]在步驟S402處,當所述執(zhí)行線程接收到心跳包時,查詢所述散列表中與該心跳包對應的設備名稱的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      [0066]具體而言,當執(zhí)行線程接收到心跳包時,若與所述心跳包對應的設備的當前設備狀態(tài)是線下,則將該設備的當前設備狀態(tài)置為線上并根據(jù)所述心跳包的上報時間更新該設備的最近一次上報時間;若與所述心跳包對應的該設備的當前設備狀態(tài)是線上,則根據(jù)該心跳包的上報時間更新該設備的最近一次上報時間;若在散列表中不包含與該心跳包對應的設備的設備信息,則根據(jù)該心跳包中包含的設備名稱、上報時間等,在散列表中新建與該心跳包對應的設備的設備信息,并將所述設備的當前設備狀態(tài)置于線上。
      [0067]在一個實施例中,在查詢所述散列表之前,可以將所述心跳包中包含的上報時間與系統(tǒng)啟動時間和彈性時間的和做比較,所述彈性時間=心跳包上報的頻率X允許丟包的個數(shù)+心跳包最大延遲時間(IntervalTime XDrop+DelayTime),表示允許丟包的時間間隔和允許心跳包發(fā)生通信延遲的最大延遲時間的和,該彈性時間可以用來衡量系統(tǒng)啟動后的預熱時間,也可以衡量接收心跳包能夠容許的最大延后時間,即在該彈性時間內(nèi)接收到的心跳包是處在一個彈性時間內(nèi),允許將該心跳包對應的設備狀態(tài)置為線上或保持線上狀態(tài)。若在彈性時間內(nèi)未收到設備上報心跳包,則可以認為該設備已經(jīng)下線(線下設備)。
      [0068]在根據(jù)所述心跳包更新散列表時,執(zhí)行線程還可以將該心跳包對應的設備的當前設備狀態(tài)的變化情況通知對該設備感興趣的設備和/或服務器,例如,災難備份服務器、業(yè)務控制服務器等,例如,當用戶在線網(wǎng)游時,入口服務器需要了解所管理控制的所有內(nèi)容服務器設備的當前運行情況,如,線上或線下,所以,當一個內(nèi)容服務器設備的狀態(tài)發(fā)生變化時,心跳包服務器可以通知該入口服務器所述內(nèi)容服務器設備所發(fā)生的變化。
      [0069]當執(zhí)行線程接收到心跳包時,查詢該執(zhí)行線程對應的散列表,若所述心跳包的上報時間小于所述系統(tǒng)啟動時間和彈性時間的和(上報時間〈系統(tǒng)啟動時間+彈性時間),則改變散列表中對應的設備信息的最近一次上報時間,但不向?qū)υ撛O備感興趣的設備和/或服務器發(fā)送通知,具體而言,在進行心跳包處理時,可以發(fā)生第一心跳服務器由于某種原因而停止工作進而將心跳服務切換到第二心跳服務器上執(zhí)行,由于集群中的大量設備還處于線上狀態(tài),所以為了不誤導對所述設備感興趣的設備和/或服務器,在第二心跳服務器系統(tǒng)啟動初期的預熱時間(彈性時間)內(nèi),可以不向所述對設備感興趣的設備和/或服務器發(fā)送通知,即,原來設備當前狀態(tài)為線上,由于發(fā)生了心跳服務器的切換,在第二心跳服務器第一次接收到來自設備的心跳包時,可能再次向?qū)υ撛O備感興趣的設備和/或服務器發(fā)送通知(表示該設備已經(jīng)上線),為了避免再次發(fā)送設備狀態(tài)變化的通知,第二心跳服務器啟動初期可以只處理心跳包而不發(fā)送通知。
      [0070]當所述心跳包的上報時間大于所述系統(tǒng)啟動時間和彈性時間的和(上報時間 > 系統(tǒng)啟動時間+彈性時間),并且所述心跳包對應的設備狀態(tài)為線下時,則將該心跳包對應的設備狀態(tài)置為線上,以及將該設備的狀態(tài)變化的通知發(fā)送給對該設備感興趣的設備和/或服務器。
      [0071]由于在集群中存在大量的設備,若其中一設備在一段時間內(nèi)未向心跳服務器發(fā)送心跳包,則表示該設備已經(jīng)下線(線下設備),但是在散列表中的設備狀態(tài)依舊保持在線上狀態(tài),在這種情況下,需要對心跳包隊列中保存的心跳包(設備的心跳包時間)進行分析,以確定哪些設備已經(jīng)下線,并及時改變該設備在散列表中的當前設備狀態(tài),將當前設備狀態(tài)由線上置為線下,以及將該設備的狀態(tài)變化的通知發(fā)送給對該設備感興趣的設備和/或服務器,以增加系統(tǒng)對設備狀態(tài)的靈敏度。
      [0072]進一步地,所述執(zhí)行線程既負責將上報心跳包的設備的設備狀態(tài)置為線上,也負責將一定時間未上報心跳包的設備的設備狀態(tài)置為線下,即,本申請所述的執(zhí)行線程可以執(zhí)行心跳包的完整的處理過程。
      [0073]在步驟S404處,對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      [0074]為了達到系統(tǒng)運行的最大效率,所述執(zhí)行線程可以對對應的心跳包隊列進行分析,以確定設備的當前設備狀態(tài)(上線或下線)??梢灶A設一個執(zhí)行線程接收心跳包的接收閾值,當執(zhí)行線程接收的心跳包數(shù)量達到該接收閾值時,則對心跳包隊列中的心跳包進行分析,確定與上報該心跳包的設備的當前設備狀態(tài)是否發(fā)生了變化,并根據(jù)分析結(jié)果更新散列表中的設備當前設備狀態(tài)。
      [0075]在另一個實施例中,可以預設一個執(zhí)行線程接收心跳包的時間閾值,當執(zhí)行線程接收心跳包的時間達到該時間閾值時,則所述執(zhí)行線程暫停對接收的心跳包的處理,例如,更新散列表,在心跳包隊列中添加心跳包相關(guān)信息,進而執(zhí)行心跳包隊列的分析。
      [0076]在另一個實施例中,所述執(zhí)行線程處于空閑狀態(tài)時,S卩,在數(shù)據(jù)緩沖區(qū)中的需要處理的心跳包數(shù)量小于一定值時,所述執(zhí)行線程執(zhí)行心跳包隊列的分析;或者在系統(tǒng)的心跳包處理服務終止后,執(zhí)行隊列無需在接收心跳包,則可以執(zhí)行心跳包隊列的分析。
      [0077]進一步地,為了減輕系統(tǒng)負擔,預設一個間歇時間,在執(zhí)行線程分析一定數(shù)量或一定時間的心跳包隊列中的心跳包后,所述執(zhí)行線程暫停對心跳包隊列的分析,并且在間歇時間內(nèi)不可以再對心跳包隊列中的心跳包進行分析。
      [0078]所述執(zhí)行線程對所述心跳包隊列進行分析,以確定在一定時間內(nèi)未發(fā)送心跳包的設備,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài),換言之,確定所述心跳包隊列中的心跳包對應的設備是否下線,若設備已經(jīng)下線,則將散列表中的該設備的當前設備狀態(tài)變更為線下,若設備依舊為線上,則不變更散列表中的該設備的當前設備狀態(tài)。
      [0079]具體而言,所述執(zhí)行線程在分析所述心跳包隊列,即判斷心跳包對應的設備是否需要下線,如圖5所示為本申請實施例的對心跳包隊列的分析的步驟的流程圖。
      [0080]在步驟S502處,可以在所述心跳包隊列中,順次查詢所述心跳包的上報時間。
      [0081]具體而言,首先從所述心跳包隊列中查詢一個上報時間最早的心跳包(所述心跳包隊列中最早存儲的心跳包,如,隊首),執(zhí)行對該心跳包的分析,分析結(jié)束再從該心跳包隊列中順次查詢下一個心跳包的上報時間。
      [0082]根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)。
      [0083]具體而言,可以在步驟S504處,根據(jù)所述心跳包的上報時間,確定當前時間與該心跳包的上報時間的差和彈性時間的關(guān)系。
      [0084]若當前時間與該心跳包的上報時間的差小于彈性時間(Cur r en t T i me -He ar t T i me〈IntervalTimeXDrop+DelayTime),則表示所述執(zhí)行線程接收該心跳包的時間處于彈性時間內(nèi),可以允許該心跳包對應的設備的當前設備狀態(tài)保持在線上狀態(tài),則所述心跳包對應的設備為線上,那么暫時忽略對該心跳包進行處理,不變更散列表中的該設備的當前設備狀態(tài),接下來,所述執(zhí)行線程順次查詢下一個心跳包隊列中的心跳包的上報時間,繼續(xù)比較當前時間與上報時間的差值與彈性時間的關(guān)系。
      [0085]若當前時間與該心跳包的上報時間的差大于彈性時間(CurrentTime - HeartTime>IntervalTime XDrop+DelayTime),則表示所述執(zhí)行線程接收到該心跳包的時間超出彈性時間,該心跳包對應的設備可能已經(jīng)下線,需要對該心跳包進一步分析,確定該心跳包對應的設備是否已經(jīng)下線。
      [0086]在步驟S506處,查詢該心跳包對應的設備在散列表中的設備信息,以根據(jù)所述心跳包的上報時間,確定所述心跳包的上報時間與散列表中該設備的最近一次上報時間的關(guān)系O
      [0087]若心跳包的上報時間小于所述最近一次上報時間,則說明該設備還在向心跳服務器發(fā)送心跳包,繼續(xù)判斷該設備是否還在向服務器發(fā)送心跳包,忽略對該心跳包的處理,不更新該散列表,保持與所述心跳包對應的設備的當前設備狀態(tài)為線上。
      [0088]若心跳包的上報時間等于所述最近一次上報時間,則說明在一段時間內(nèi)所述設備沒有向心跳服務器發(fā)送過心跳包,該設備已經(jīng)下線,將散列表中的該設備的當前設備狀態(tài)置于線下。
      [0089]利用步驟S502-S506所述的方法,無需對散列表中記錄的每一個設備相關(guān)的信息進行查詢、更新的操作,只對可能已經(jīng)下線的設備進行判斷,可以有效的減少對大量心跳包的處理,提聞了系統(tǒng)運行的速度,提聞了心跳包處理的效率。
      [0090]本申請通過多個執(zhí)行線程并行的處理系統(tǒng)接收的大量的心跳包,避免了多個線程之間切換帶來的系統(tǒng)消耗,提高了系統(tǒng)對心跳包處理的效率;并且利用散列表和心跳包隊列避免了線程對樹的遍歷過程,利用對心跳包的上報時間和系統(tǒng)的當前時間進行比較的過程,減少了對每一個設備的當前設備狀態(tài)的判斷過程,降低了系統(tǒng)的運算量,提高了系統(tǒng)對心跳包處理的效率。
      [0091 ] 本申請還提供了一種心跳包處理的裝置。
      [0092]如圖6所示為本申請實施例的心跳包處理的裝置的示意圖。
      [0093]在本申請所述的裝置中,包括一個或多個執(zhí)行模塊603-60N,以及獨立模塊601。
      [0094]所述獨立線程601,用于依次獲取多個設備上報的多個心跳包;并將每一個所述心跳包發(fā)送至對應的所述執(zhí)行模塊。
      [0095]其中,所述心跳包至少包括以下信息:所述心跳包的上報時間、所述心跳包對應的設備的IP地址。
      [0096]所述獨立模塊601可以根據(jù)每一個所述心跳包中的IP地址,將所述各個心跳包發(fā)送至所述一個或多個執(zhí)行模塊中與其對應的執(zhí)行模塊中。
      [0097]進一步地,所述獨立模塊601可以將所述心跳包中的IP地址轉(zhuǎn)化為長整型數(shù)字,并將所述長整型數(shù)字與執(zhí)行線程的數(shù)量取模,并得到取模結(jié)果;預先對各種取模結(jié)果進行分析,并預先將每一種取模結(jié)果與所述多個執(zhí)行線程之一進行關(guān)聯(lián);以及基于所述取模結(jié)果,所述獨立線程將所述心跳包發(fā)送至與該取模結(jié)果存在關(guān)聯(lián)關(guān)系的執(zhí)行線程中。
      [0098]所述一個或多個所述執(zhí)行模塊603—執(zhí)行模塊60N根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理。其中,每一個執(zhí)行模塊都包含散列表和心跳包隊列。
      [0099]所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包對應的設備的設備信息,其中,所述設備信息包括:所述心跳包的最近一次上報時間、所述心跳包對應的設備的當前設備狀態(tài);所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息,其中,所述心跳包隊列的心跳包信息包括:所述心跳包的上報時間。
      [0100]在進行心跳包處理的時,所述執(zhí)行模塊603—執(zhí)行模塊60N可以查詢所述散列表中與所述心跳包對應的設備的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      [0101]具體而言,若與所述心跳包對應的設備的當前設備狀態(tài)是線下,則將所述設備的當前設備狀態(tài)置為線上并根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間;若與所述心跳包對應的設備的當前設備狀態(tài)是線上,則根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間;以及若在散列表中不包含所述心跳包對應的設備的設備信息,則根據(jù)所述心跳包,在散列表中新建與所述心跳包對應的設備的設備信息,并將所述設備的當前設備狀態(tài)置于線上。
      [0102]所述執(zhí)行模塊603—執(zhí)行模塊60N還被配置成對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      [0103]進一步地,所述執(zhí)行模塊603—執(zhí)行模塊60N可以在所述心跳包隊列中,順次查詢所述心跳包的上報時間;根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)。
      [0104]具體而言,若當前時間與該心跳包的上報時間的差小于彈性時間,則所述心跳包對應的設備的當前設備狀態(tài)為線上;若當前時間與該心跳包的上報時間的差大于彈性時間,則查詢所述心跳包對應的設備在散列表中的設備信息。若心跳包的上報時間小于所述最近一次上報時間,則保持與所述心跳包對應的設備的當前設備狀態(tài)為線上;若心跳包的上報時間等于所述最近一次上報時間,則將與所述心跳包對應的設備的當前設備狀態(tài)置于線下。
      [0105]本申請利用獨立模塊獲取并分發(fā)心跳包,并使用多個執(zhí)行模塊并行的處理來自多個設備的心跳包,提高了心跳包的處理效率;
      [0106]本申請在變更當前設備狀態(tài)時,運用散列表和心跳隊列,避免了對集群中每一個設備的遍歷,減少了系統(tǒng)的運算量。
      [0107]由于圖6所描述的本申請的裝置所包括的各個模塊的【具體實施方式】與圖1-圖5所示的【具體實施方式】是對應的,由于已經(jīng)對圖1-圖5進行了詳細描述,所以為了不模糊本申請,在此不再對各個模塊的具體細節(jié)進行描述。
      [0108]本說明書中的各個實施例一般采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
      [0109]本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊或單元。一般地,程序模塊或單元可以包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。一般來說,程序模塊或單元可以由軟件、硬件或兩者的結(jié)合來實現(xiàn)。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊或單元可以位于包括存儲設備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
      [0110]最后,還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
      [0111]本領(lǐng)域內(nèi)的技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
      [0112]本文中應用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其主要思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應理解為對本申請的限制。
      【權(quán)利要求】
      1.一種心跳包處理的方法,其特征在于,包括: 一個或多個執(zhí)行線程、以及獨立線程; 所述獨立線程依次獲取多個設備上報的一個或多個心跳包并發(fā)送至對應的所述執(zhí)行線程; 一個或多個所述執(zhí)行線程,根據(jù)各自對應的散列表和心跳包隊列,并行地對對應的心跳包執(zhí)行處理。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述心跳包至少包括所述心跳包的上報時間、所述心跳包對應的設備的IP地址; 所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包對應的設備的設備信息;其中,所述設備信息包括:所述心跳包的最近一次上報時間、所述心跳包對應的設備的當前設備狀態(tài); 所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息;其中, 所述心跳包隊列的心跳包信息包括:所述心跳包的上報時間。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獨立線程依次獲取多個設備上報的多個心跳包的步驟,包括: 所述獨立線程根據(jù)每一個所述心跳包中的IP地址,將所述各個心跳包發(fā)送至與其對應的執(zhí)行線程中。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于: 將所述心跳包中的IP地址轉(zhuǎn)化為長整型數(shù)字,并將所述長整型數(shù)字與執(zhí)行線程的數(shù)量取模,并得到取模結(jié)果;以及 基于所述取模結(jié)果,所述獨立線程將所述心跳包發(fā)送至與該取模結(jié)果存在關(guān)聯(lián)關(guān)系的執(zhí)行線程中。
      5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述一個或多個所述執(zhí)行線程根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理的步驟,包括: 查詢所述散列表中與所述心跳包對應的設備的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述心跳包更新所述散列表的步驟,包括: 若與所述心跳包對應的設備的當前設備狀態(tài)是線下,則將所述設備的當前設備狀態(tài)置為線上并根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間; 若與所述心跳包對應的設備的當前設備狀態(tài)是線上,則根據(jù)所述心跳包的上報時間更新所述設備的最近一次上報時間;以及 若在散列表中不包含所述心跳包對應的設備的設備信息,則根據(jù)所述心跳包,在散列表中新建與所述心跳包對應的設備的設備信息,并將所述設備的當前設備狀態(tài)置于線上。
      7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述一個或多個所述執(zhí)行線程根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理的步驟,包括: 對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述對所述心跳包隊列進行分析的步驟,包括: 在所述心跳包隊列中,順次查詢所述心跳包的上報時間; 根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)。
      9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述根據(jù)所述心跳包的上報時間,確定與所述心跳包對應的設備的當前設備狀態(tài)的步驟,包括: 若當前時間與該心跳包的上報時間的差小于彈性時間,則所述心跳包對應的設備的當前設備狀態(tài)為線上; 若當前時間與該心跳包的上報時間的差大于彈性時間,則查詢所述心跳包對應的設備在散列表中的設備信息; 若心跳包的上報時間小于所述最近一次上報時間,則保持與所述心跳包對應的設備的當前設備狀態(tài)為線上; 若心跳包的上報時間等于所述最近一次上報時間,則將與所述心跳包對應的設備的當前設備狀態(tài)置于線下。
      10.一種心跳包處理的裝置,其特征在于,包括: 一個或多個執(zhí)行模塊,以及獨立模塊; 所述獨立模塊,用于依次獲取多個設備上報的多個心跳包;并將每一個所述心跳包發(fā)送至對應的所述執(zhí)行模塊; 一個或多個所述執(zhí)行模塊根據(jù)各自對應的散列表和心跳包隊列并行地對對應的心跳包執(zhí)行處理。
      11.根據(jù)權(quán)利要求10所述的裝置,其特征在于: 所述心跳包至少包括所述心跳包的上報時間、所述心跳包對應的設備的IP地址;所述散列表記錄對應的執(zhí)行線程接收的每一個心跳包對應的設備的設備信息,其中,所述設備信息包括:所述心跳包的最近一次上報時間、所述心跳包對應的設備的當前設備狀態(tài); 所述心跳包隊列順序存儲對應的執(zhí)行線程接收的每一個心跳包的心跳包信息,其中,所述心跳包隊列的心跳包信息包括:所述心跳包的上報時間。
      12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述獨立模塊還被配置成: 所述獨立模塊根據(jù)每一個所述心跳包中的IP地址,將所述各個心跳包發(fā)送至與其對應的執(zhí)行模塊中。
      13.根據(jù)權(quán)利要求10或11所述的裝置,其特征在于,所述執(zhí)行模塊還被配置成: 查詢所述散列表中與所述心跳包對應的設備的當前設備狀態(tài),并根據(jù)所述心跳包更新所述散列表。
      14.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述執(zhí)行模塊還被配置成: 對所述心跳包隊列進行分析,并根據(jù)分析結(jié)果更新所述散列表中所述設備的設備當前狀態(tài)。
      【文檔編號】G06F9/48GK104166589SQ201310185186
      【公開日】2014年11月26日 申請日期:2013年5月17日 優(yōu)先權(quán)日:2013年5月17日
      【發(fā)明者】陶輝 申請人:阿里巴巴集團控股有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1