一種用于流計算的數據處理方法與設備的制造方法
【技術領域】
[0001]本申請涉及計算機領域,尤其涉及一種用于流計算的數據處理技術。
【背景技術】
[0002]在分布式流計算過程中,會產生很多中間數據結果,通常后續計算需要應用之前計算的中間數據結果。一般做法是在規定時間內,將所述中間數據結果保存在對應內存中,以便快速地滿足后續計算需要,但是當流處理信息量增大,有限的內存存儲過多的中間數據結果會導致內存溢出,甚至使得整個流計算無法進行。
[0003]此時,現有技術通過引入輔助存儲裝置,將中間結果保存到輔助存儲裝置中并不斷地釋放內存空間來解決內存溢出問題。但是在實際計算中,對于接收到的流消息,需要先進行一次內存查找,當判斷不存在時,需要再進行一次輔助存儲裝置查找,若流消息是新消息,則所述輔助存儲裝置查找的時間就是被浪費的時間,所以當全部消息中新消息的比重較大時,會帶來極大的時間開銷,對整個流計算系統的計算速度產生較大的不利影響。
【發明內容】
[0004]本申請的目的是提供一種用于流計算的數據處理方法與設備。
[0005]根據本申請的一個方面,提供了一種用于流計算的數據處理方法,包括:
[0006]獲取流計算信息中的目標消息;
[0007]通過布隆過濾器判斷對應內存是否包括所述目標消息所對應的中間數據結果;
[0008]當判斷所述對應內存包括所述中間數據結果時,檢驗所述中間數據結果是否已存在;
[0009]基于檢驗所得信息,對所述目標消息執行相應的數據計算。
[0010]根據本申請的另一方面,還提供了一種用于流計算的數據處理設備,包括:
[0011]第一裝置,用于獲取流計算信息中的目標消息;
[0012]第二裝置,用于通過布隆過濾器判斷對應存儲是否包括所述目標消息所對應的中間數據結果;
[0013]第三裝置,用于當判斷所述對應存儲包括所述中間數據結果時,檢驗所述中間數據結果是否已存在;
[0014]第四裝置,用于基于檢驗所得信息,對所述目標消息執行相應的數據計算。
[0015]與現有技術相比,本申請通過布隆過濾器檢測目標消息對應的中間結果信息是否已經存在,以及對被判斷為已存在的中間結果信息的進一步檢測,實現對目標消息的流計算;由于布隆過濾器具有非常好的空間和時間效率,本申請顯著減少了內存查詢所需的時間,從而有效提高了流計算的實時性,并減少了響應延遲、改善了用戶的使用體驗。同時,由于布隆過濾器極低的誤判率,它避免了現有技術中當接收到新的流消息時絕大多數需要到輔助存儲中進行的無用查找。此外,本申請克服了布隆過濾器因存在誤判而導致時延增加而不能應用于流計算的技術偏見,通過對由布隆過濾器判斷為已存在的中間結果信息進行進一步的檢驗,來排除布隆過濾器可能導致的誤判結果。在本申請中布隆過濾器的誤判所帶來的不利影響是產生極少量無用的輔助存儲查找,但是它所損耗的不必要時間非常少。總體而言,本申請與現有技術相比可以保障在不影響內存工作的前提下最大程度地提高流計算系統的計算速度。
【附圖說明】
[0016]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優點將會變得更明顯:
[0017]圖1示出根據本申請一個方面的一種用于流計算的數據處理設備示意圖;
[0018]圖2示出根據本申請另一個方面的一種用于流計算的數據處理方法流程圖。
[0019]附圖中相同或相似的附圖標記代表相同或相似的部件。
【具體實施方式】
[0020]下面結合附圖對本申請作進一步詳細描述。
[0021]在本申請一個典型的配置中,終端、服務網絡的設備和可信方均包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。
[0022]內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。
[0023]計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitory media),如調制的數據信號和載波。
[0024]圖1示出根據本申請一個方面的一種用于流計算的數據處理設備示意圖。所述用于流計算的數據處理設備I包括第一裝置101、第二裝置102、第三裝置103和第四裝置104。
[0025]其中,第一裝置101獲取流計算信息中的目標消息;第二裝置102通過布隆過濾器判斷對應存儲是否包括所述目標消息所對應的中間數據結果;第三裝置103當判斷所述對應存儲包括所述中間數據結果時,檢驗所述中間數據結果是否已存在;第四裝置104基于檢驗所得信息,對所述目標消息執行相應的數據計算。
[0026]具體地,所述用于流計算的數據處理設備I的第一裝置101獲取流計算信息中的目標消息。在此,所述流計算的應用場景包括實時計算,例如,所述流計算所要完成的任務一般可以抽象為基于一個或是多個業務維度的完成的實時計算。例如,在電子商務平臺中計算商品成交金額,可以設置一個維度,如賣家,設定基于賣家的交易信息計算成交金額,如某個確定賣家的實時交易金額的計算;也可以設置多個維度,如賣家、商品類目,設定基于賣家和商品類目兩個維度的信息計算商品的成交金額。所述流計算信息中的目標消息包括進行對應流計算所需要的具體的數據信息,如確定的賣家的交易信息,確定的商品類目對應的成交信息,同時,所述目標消息中也可能包括一些所述目標流計算并不需要的其他信息,例如其他業務維度的數據信息等等。對于目標流計算,優選地,可以先從目標消息中篩選出當前計算中實際需要的有用信息,并基于所述有用信息進行后續的操作。此外,所述流計算信息中的目標消息的獲取可以基于實際的需要設置一定的獲取周期,例如每隔T時間獲取一次目標消息等。
[0027]在此,本領域技術人員應能理解,上述流計算的應用場景包括實時計算僅為舉例,其他應用場景若是可適用本申請,也應包含在本申請的保護范圍以內,并在此以引用方式包含于此。
[0028]接著,所述用于流計算的數據處理設備I的第二裝置102通過布隆過濾器判斷對應存儲是否包括所述目標消息所對應的中間數據結果。
[0029]具體地,在此,所述對應存儲包括但不限于內存、或是各類磁盤、軟盤等輔助存儲。優選地,所述布隆過濾器一般保存在相應內存中,是一種空間效率很高的隨機數據結構,其利用位數組表示一個集合,并能夠判斷一個元素是否屬于所述集合。在此,本領域技術人員應該能夠理解,所述布隆過濾器利用位數組匹配對應的目標消息,可以認為所述布隆過濾器對于曾存在于所述內存的目標消息保存了與其對應的消息標識,進而對于當前目標消息,可以通過與所述布隆過濾器中保存的消息標識進行匹配,從而判斷所述目標消息是否曾經存在于所述內存。基于所述目標消息與所述中間數據結果的對應關系,所述內存本應該包含曾經存在于所述內存中的目標消息對應的中間結果數據,但是為了避免所述內存溢出,部分目標消息對應的中間結果數據被置換出所述內存,所以可能存在部分目標消息對應的中間結果數據在當前所述內存中查找不到,但同時,因為內存中的中間結果數據會全部保存在輔助存儲中,進而基于所述目標消息與所述中間數據結果的對應關系,可以判斷對應輔助存儲中是否包括所述目標消息所對應的中間數據結果。進一步,基于布隆過濾器的原理,所述布隆過濾器做出所述目標消息未曾存在于內存中的判定是準確的,而若是判斷所述目標消息曾經存在于所述內存中則可能出現一定的誤差,需要進一步檢驗。在此,雖然布隆過濾器存在誤判,但是其誤判率很低,同時,所述布隆過濾器還能夠在占用較少內存空間的同時提供高效的判斷操作,所以如果對布隆過濾器的存在誤判可能的判斷結果進一步進行合理檢驗,就可以很好地發揮布隆過濾器在實時計算中作為集合元素存在的判斷方法的優勢,從而在保障不影響內存工作的前提下最大程度地提高了流計算系統的計算速度。
[0030]此外,所述中間數據結果包括所述流計算對應的歷史計算結果,也是基于目標消息進行當前計算的數據基礎。例如,計算一定周期的某一商品交易額的增長幅度,則需要知道當前該商品的交易額以及同一商品在歷史周期中的交易額,而所述歷史周期中該商品的交易額即保存為所述流計算的目標消息對應的中間數據結果。更進一步,若是所述目標消息信息量較大,可以對其進行信息篩選,從所述目標消息中初步獲得有用信息,并對篩選出的有用信息進行保存,和所述歷史計算結果一樣作為中間數據結果,提供給后續計算取用。
[0031]在此,本領域技術人員應能理解,上述布隆過濾器僅為舉例,其他判斷方法若是可適用本申請,也應包含在本申請的保護范圍以內,并在此以引用方式包含于此。
[0032]接著,所述用于流計算的數據處理設備I的第三裝置103當判斷所述對應存儲包括所述中間數據結果時,檢驗所述中間數據結果是否已存在。在此,通過所述布隆過濾器對到達的目標消息進行初次判斷,會出現對應的不同結果,例如,其中之一的結果是目