分布式計算方法、裝置和系統的制作方法
【技術領域】
[0001]本發明涉及數據處理領域,具體而言,涉及一種分布式計算方法、裝置和系統。
【背景技術】
[0002]在對海量數據做一些聚合分析時,通常采用分布式計算先將數據分發到不同的計算機節點上去計算,然后各計算機節點將計算得到的計算結果匯總,得到最終的計算結果。其中,分布式計算是把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然后把這些部分分配給許多計算機節點進行平行處理,最終把這些計算結果綜合起來得到最終的結果。在進行分布式計算過程中,如何將海量的數據分發到各計算機節點,以及將各計算機節點的計算結果匯總都是在做分布式計算的一大難點。
[0003]現有技術中可使用Map/Reduce方法實現分布式計算。Map/Reduce是一個將大型分布式計算表達為一個對數據鍵/值對集合進行串行化分布式操作的編程模型。但是,Map/Reduce通常應用在hadoop系統中,其開源社區并沒有提供可用于數據實時分析的框架,需要自行開發一個類似Map/Reduce實時分析框架,開發量大。發明人發現,在計算過程中,各計算機節點之間還需要進行數據交互,計算過程復雜,增加計算機節點的開銷,導致分布式計算系統的性能降低。
[0004]針對現有技術中分布式計算系統的性能低的問題,目前尚未提出有效的解決方案。
【發明內容】
[0005]本發明的主要目的在于提供一種分布式計算方法和裝置,以解決現有技術中分布式計算系統的性能低的問題。
[0006]為了實現上述目的,根據本發明的一個方面,提供了一種分布式計算方法。根據本發明的分布式計算方法包括:獲取計算機節點接收到的聚合數據,其中,聚合數據為用于聚合操作的數據;將聚合數據存入至少一個key-value數據庫;在至少一個key-value數據庫中對聚合數據進行計算,得到計算結果;將計算結果返回給計算機節點。
[0007]為了實現上述目的,根據本發明的另一方面,提供了一種分布式計算裝置。根據本發明的分布式計算裝置包括:第一獲取單元,用于獲取計算機節點接收到的聚合數據,其中,聚合數據為用于聚合操作的數據;存入單元,用于將聚合數據存入至少一個key-value數據庫;第一計算單元,用于在至少一個key-value數據庫中對聚合數據進行計算,得到計算結果;返回單元,用于將計算結果返回給計算機節點。
[0008]為了實現上述目的,根據本發明的另一方面,提供了一種分布式計算系統。根據本發明的分布式計算系統包括:計算機節點,用于接收聚合數據,聚合數據為用于聚合操作的數據;路由器;至少一個key-value數據庫,經由路由器與計算機節點相連接,用于經由路由器獲取計算機節點接收到的聚合數據;存儲聚合數據;對聚合數據進行計算,得到計算結果;并將計算結果返回給計算機節點。
[0009]通過本發明實施例,將需要進行聚合操作的聚合數據存入至少一個key-value數據庫,在至少一個key-value數據庫中對聚合數據進行計算,并將計算結果共享,各計算機節點之間無需進行數據交互,從而避免了由于計算機節點之間需要進行數據交互導致分布式計算過程過于復雜的情況,解決了分布式計算系統的性能低的問題,達到了提高分布式計算系統的性能。
【附圖說明】
[0010]此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0011]圖1是根據本發明第一實施例的分布式計算方法的流程圖;
[0012]圖2是根據本發明第二實施例的分布式計算方法的流程圖;
[0013]圖3是根據本發明第一實施例的分布式計算裝置的示意圖;
[0014]圖4是根據本發明第二實施例的分布式計算裝置的示意圖;以及
[0015]圖5是根據本發明實施例的分布式計算系統的示意圖。
【具體實施方式】
[0016]為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬于本發明保護的范圍。
[0017]需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語“第一”、“第二”等是用于區別類似的對象,而不必用于描述特定的順序或先后次序。應該理解這樣使用的數據在適當情況下可以互換,以便這里描述的本發明的實施例能夠以除了在這里圖示或描述的那些以外的順序實施。此外,術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產品或設備固有的其它步驟或單元。
[0018]本發明實施例還提供了一種分布式計算方法。該方法運行在分布式計算系統上。圖1是根據本發明第一實施例的分布式計算方法的流程圖。如圖1所示,該分布式計算方法包括步驟如下:
[0019]步驟S102,獲取計算機節點接收到的聚合數據。
[0020]聚合數據為用于聚合操作的數據,可以是需要進行聚合分析的數據。計算機節點在接收到該聚合數據之后,需要對其進行相應的計算和處理。其中,計算機節點可以包括多個計算機節點,通過多個計算機節點對數據進行分布式計算。例如,在一個域名的網站下包括多個服務器,網絡用戶在訪問該網站時,會產生大量的數據,例如訪問者的IP地址等,將這些大量的數據分發到不同的服務器上進行處理。其中,每一個服務器相當于一個計算機節點。
[0021]步驟S104,將聚合數據存入至少一個key-value數據庫。
[0022]在獲取到聚合數據之后,可以將聚合數據存入至少一個key-value數據庫中,即,可以將聚合數據存入到一個key-value數據庫,也可以是存入到多個key-value數據庫。可以是計算機節點將需要進行聚合分析的數據存入key-value數據庫,將key-value數據庫作為共享內存,以便于通過key-value數據庫對該數據進行迭代計算。key-value數據庫可以用于對數據進行計算處理,key-value數據庫可以是例如redis數據庫等數據庫。不同的計算機節點還可以通過key-value數據庫進行數據交互。
[0023]本發明實施例中,計算機節點也可以將要交互的數據寫入至少一個key-value數據庫,其中,要交互的數據可以是不同計算機節點之間需要交互的數據,例如,計算機節點包括計算機節點A和計算機節點B,計算機節點A在進行數據計算的過程中,需要使用計算機節點B中的數據,則計算機節點A可以直接訪問至少一個key-value數據庫,獲取計算機節點B預先存儲在至少一個key-value數據庫中的數據,然后執行相應的計算。由于計算機節點只需要與key-value數據庫進行數據交互,方計算機節點將要交互的數據寫入key-value數據庫后,其他的計算機節點便可快速的訪問這些資源,且計算機節點訪問key-value數據庫的性能只受限于計算機節點與key-value數據庫之間的帶寬。
[0024]本發明實施例中,聚合數據可能具有不同的操作類型,S卩,需要進行聚合操作不相同,例如,對最近10分鐘訪問網站的用戶IP的數量進行計算的聚合操作類型與對最近10分鐘相同用戶IP訪問網站的次數進行計算的聚合操作類型不同。由于聚合數據的操作類型不同,計算機節點在將聚合數據寫入key-value數據庫之前,需要先確定聚合數據的操作類型,以便于從key-value數據庫中選擇相應的數據結構進行存儲。
[0025]步驟S106,在至少一個key-value數據庫中對聚合數據進行計算,得到計算結果。
[0026]對聚合數據進行計算可以是對聚合數據進行迭代計算,在將聚合數據存入key-value數據庫之后,可以在key-value數據庫中構造迭代器,利用key-value數據庫的數據結構以及內置操作對聚合數據進行迭代計算,得到計算結果。基本思想是通過迭代完成聚合計算:f (n)=g(f (n-1)), f (η)為第η次計算結果,g(f (η_1))為第n_l次計算結果與第η次計算結果的函數關系,例如,通過Sum求和:sum(10)=sum(9)+10,其中,sum(9)為第9次計算結果,10為在第9次計算結果上的增量,sum(lO)為第10次計算結果。
[0027]具體地,可以根據不同的聚合數據的操作類型,在key-value數據庫中構造迭代公式,該迭代公式可以用于表示在key-value數據庫中每一次計算的中間結果。當然,對于一些常見的聚合數據的操作類型,可以在key-value數據庫中預先創建相應的迭代公式,從而減少分布式計算的時間以及降低開銷。例如,計算最近10分鐘有哪些用戶IP訪問了網站,則可以預先創建該計算的迭代公式:distinct (n) =distinct {distinct (n-1), n}。
[0028]步驟S108,將計算結果返回給計算機節點。
[0029]在計算得到計算結果之后,可以將計算結果由key-value數據庫返回給計算機節點,可以是key-value數據庫將計算得到的計算結果返回給計算機節點,計算機節點根據該計算結果在進行相應的計算處理。例如,計算10分鐘哪些用戶IP 了訪問網站的數量時,計算機節點將訪問網站的用戶IP相關的數據傳輸給至少一個key-value數據庫,在key-value數據庫中對該數據進行統計計算,當訪問的用戶IP與10分鐘訪問網站的用戶IP均不相同,則統計結果加I,以此類推,key-value數據庫每隔10分鐘計算出訪問網站的用戶IP,并將計算結果返回給計算機節點。計算機節點可以根據key-value數據庫返回的統計結果,進行計算,得到一個小時內哪些用戶IP訪問了網站。當然,key-value數據庫對聚合數據進行計算得到計算結果之后,還可以存儲該計算結果,以便于其他的計算機節點獲取該計算結果,或者同一計算機節點再次獲取該計算結果。
[0030]根據本發明實施例,通過將需要進行聚合操作的聚合數據存入至少一個key-value數據庫,在至少一個key-value數據庫中對聚合數據進行計算,并將計算結果共享,各計算機節點之間無需進行數據交互,從而避免了由于計算機節點之間需要進行數據交互導致分布式計算過程過于復雜的情況,解決了分布式計算系統的性能低的問題,達到了提高分布式計算系統的性能。
[0031]圖2是根據本發明第二實施例的分布式計算方法的流程圖。該實施例的分布式計算方法可以是上述實施例的分布式計算方法的一種優選實施方式。如圖2所示,該分布式計算方法包括步驟如下:
[0032]步驟S202,獲取計算機節點接收到的聚合數據。
[0033]聚合數據為用于聚合操作的數據,可以是需要進行聚合分析的數據。計算機節點在接收到該聚合數據之后,