本申請涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別涉及一種地震道數(shù)據(jù)的獲取方法、主節(jié)點服務(wù)器及工作節(jié)點服務(wù)器。
背景技術(shù):
在油氣工業(yè),地震勘探被廣泛用于確定潛在油藏區(qū)的位置,其基本流程可分為三個階段:1)采集階段,通過人工地震方法從野外工區(qū)采集地震數(shù)據(jù);2)處理階段,通過各種地震數(shù)據(jù)分析、處理以及成像算法得到野外工區(qū)的地底地質(zhì)結(jié)構(gòu)成像圖;3)解釋階段,由地質(zhì)專家和地球物理專家根據(jù)成像結(jié)果判斷該工區(qū)是否可能為油藏區(qū)。如果確定該工區(qū)為油藏區(qū),則進(jìn)行下一步鉆井工作。
地震數(shù)據(jù)是由一系列長度固定的地震道數(shù)據(jù)構(gòu)成的。地震道數(shù)據(jù)包括道頭和道體兩部分,其中道體為采樣的地震波振幅信息,道頭為地震道的各項屬性信息。地震道數(shù)據(jù)集指的是具有共同屬性的地震道數(shù)據(jù)的集合。道頭中的屬性信息又稱為排序關(guān)鍵字,這是由于按不同數(shù)量和不同種類的屬性組合,地震道數(shù)據(jù)具有不同的排序方式。
在地震數(shù)據(jù)的處理階段,由于地震數(shù)據(jù)規(guī)模較大(TB級)以及處理流程和處理算法的高復(fù)雜度,用于地震數(shù)據(jù)處理的各類應(yīng)用通常都部署在高性能集群上,而地震數(shù)據(jù)存儲在集群的集中存儲系統(tǒng)上。當(dāng)前,在進(jìn)行地震道數(shù)據(jù)讀取時,通常會預(yù)先設(shè)置多個具備固定排序方式的關(guān)鍵字組合,這些關(guān)鍵字組合與地震道數(shù)據(jù)之間可以存在關(guān)聯(lián)關(guān)系。那么通過這些關(guān)鍵字組合,可以從集中存儲系統(tǒng)中讀取相關(guān)聯(lián)的地震道數(shù)據(jù)。然而,如果交互式應(yīng)用所用的關(guān)鍵字組合與預(yù)先設(shè)置的關(guān)鍵字組合不同,那么集中存儲系統(tǒng)便無法根據(jù)輸入的關(guān)鍵字組合查詢到適配的地震道數(shù)據(jù)。在這種情況下,只能依次讀取集中存儲系統(tǒng)中的每一個地震道數(shù)據(jù),從而判斷讀取的地震道數(shù)據(jù)是否是與輸入的關(guān)鍵字組合相適配的數(shù)據(jù)。由上可見,現(xiàn)有技術(shù)中地震道的獲取方式具有較大的限制,無法高效地讀取地震處理過程中所需的地震道數(shù)據(jù)。
應(yīng)該注意,上面對技術(shù)背景的介紹只是為了方便對本申請的技術(shù)方案進(jìn)行清楚、完整的說明,并方便本領(lǐng)域技術(shù)人員的理解而闡述的。不能僅僅因為這些方案在本申請的背景技術(shù)部分進(jìn)行了闡述而認(rèn)為上述技術(shù)方案為本領(lǐng)域技術(shù)人員所公知。
技術(shù)實現(xiàn)要素:
本申請實施方式的目的在于提供一種地震道數(shù)據(jù)的獲取方法、主節(jié)點服務(wù)器及工作節(jié)點服務(wù)器,能夠提高地震道數(shù)據(jù)讀取的效率。
為實現(xiàn)上述目的,本申請一方面提供一種分布式系統(tǒng)中地震道數(shù)據(jù)的獲取方法,所述分布式系統(tǒng)中包括主節(jié)點服務(wù)器和至少一個工作節(jié)點服務(wù)器,各個所述工作節(jié)點服務(wù)器中分別存儲至少一個數(shù)據(jù)塊,各個所述數(shù)據(jù)塊中包含至少一個地震道的數(shù)據(jù),所述主節(jié)點服務(wù)器中包括與各個所述工作節(jié)點服務(wù)器一一對應(yīng)的本地隊列,所述方法包括:所述主節(jié)點服務(wù)器接收地震道數(shù)據(jù)獲取請求,所述地震道數(shù)據(jù)獲取請求中包括目標(biāo)地震道的地震道編號;所述主節(jié)點服務(wù)器根據(jù)所述地震道編號,確定所述目標(biāo)地震道對應(yīng)的目標(biāo)數(shù)據(jù)塊;所述主節(jié)點服務(wù)器確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器,并將所述地震道編號存放于與所述目標(biāo)工作節(jié)點服務(wù)器相對應(yīng)的目標(biāo)本地隊列中;響應(yīng)于所述目標(biāo)工作節(jié)點服務(wù)器發(fā)來的任務(wù)獲取請求,所述主節(jié)點服務(wù)器向所述目標(biāo)工作節(jié)點服務(wù)器提供包含所述地震道編號的任務(wù);所述主節(jié)點服務(wù)器接收所述目標(biāo)工作節(jié)點服務(wù)器反饋的包含所述目標(biāo)地震道數(shù)據(jù)的地震數(shù)據(jù)包。
為實現(xiàn)上述目的,本申請實施方式另一方面還提供一種主節(jié)點服務(wù)器,所述主節(jié)點服務(wù)器包括:地震道數(shù)據(jù)獲取請求接收單元,用于接收地震道數(shù)據(jù)獲取請求,所述地震道數(shù)據(jù)獲取請求中包括目標(biāo)地震道的地震道編號;目標(biāo)數(shù)據(jù)塊確定單元,用于根據(jù)所述地震道編號,確定所述目標(biāo)地震道對應(yīng)的目標(biāo)數(shù)據(jù)塊;地震道編號存放單元,用于確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器,并將所述地震道編號存放于與所述目標(biāo)工作節(jié)點服務(wù)器相對應(yīng)的目標(biāo)本地隊列中;任務(wù)提供單元,用于響應(yīng)于所述目標(biāo)工作節(jié)點服務(wù)器發(fā)來的任務(wù)獲取請求,向所述目標(biāo)工作節(jié)點服務(wù)器提供包含所述地震道編號的任務(wù);地震數(shù)據(jù)包接收單元,用于接收所述目標(biāo)工作節(jié)點服務(wù)器反饋的包含所述目標(biāo)地震道數(shù)據(jù)的地震數(shù)據(jù)包。
為實現(xiàn)上述目的,本申請實施方式另一方面還提供一種分布式系統(tǒng)中地震道數(shù)據(jù)的獲取方法,所述分布式系統(tǒng)中包括主節(jié)點服務(wù)器和至少一個工作節(jié)點服務(wù)器,所述方法包括:所述工作節(jié)點服務(wù)器向所述主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求;所述工作節(jié)點服務(wù)器接收所述主節(jié)點服務(wù)器提供的地震數(shù)據(jù)讀取任務(wù),并將所述地震數(shù)據(jù)讀取任務(wù)存放至自身的任務(wù)池中,所述地震數(shù)據(jù)讀取任務(wù)中包括至少一個地震道編號;所述工作節(jié)點服務(wù)器從自身的任務(wù)池中提取當(dāng)前地震數(shù)據(jù)讀取任務(wù),并從本地存儲器中讀取所述當(dāng)前地震數(shù)據(jù)讀取任務(wù)中各個地震道編號對應(yīng)的地震道數(shù)據(jù);所述工作節(jié)點服務(wù)器將讀取的地震道數(shù)據(jù)反饋至所述主節(jié)點服務(wù)器處。
為實現(xiàn)上述目的,本申請實施方式另一方面還提供一種工作節(jié)點服務(wù)器,所述工作節(jié)點服務(wù)器包括:讀取請求發(fā)送單元,用于向主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求;任務(wù)接收單元,用于接收所述主節(jié)點服務(wù)器提供的地震數(shù)據(jù)讀取任務(wù),并將所述地震數(shù)據(jù)讀取任務(wù)存放至自身的任務(wù)池中,所述地震數(shù)據(jù)讀取任務(wù)中包括至少一個地震道編號;地震道數(shù)據(jù)讀取單元,用于從自身的任務(wù)池中提取當(dāng)前地震數(shù)據(jù)讀取任務(wù),并從本地存儲器中讀取所述當(dāng)前地震數(shù)據(jù)讀取任務(wù)中各個地震道編號對應(yīng)的地震道數(shù)據(jù);數(shù)據(jù)反饋單元,用于將讀取的地震道數(shù)據(jù)反饋至所述主節(jié)點服務(wù)器處。
由以上本申請實施方式提供的技術(shù)方案可見,本申請通過主節(jié)點服務(wù)器可以確定地震道數(shù)據(jù)獲取請求中攜帶的地震道編號對應(yīng)的目標(biāo)數(shù)據(jù)塊,然后可以確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器。主節(jié)點服務(wù)器可以將該地震道編號存放于目標(biāo)工作節(jié)點服務(wù)器對應(yīng)的本地隊列中。這樣,目標(biāo)工作節(jié)點服務(wù)器后續(xù)可以從本地隊列中獲取包含該地震道編號的任務(wù),從而可以從本地存儲器中直接讀取對應(yīng)的地震道數(shù)據(jù),而無需從別的工作節(jié)點服務(wù)器中讀取,加快了數(shù)據(jù)讀取的速度。再者,每個工作節(jié)點服務(wù)器可以同時進(jìn)行數(shù)據(jù)讀取,這種并行的數(shù)據(jù)讀取方式也進(jìn)一步提高了數(shù)據(jù)讀取的效率。
參照后文的說明和附圖,詳細(xì)公開了本申請的特定實施方式,指明了本申請的原理可以被采用的方式。應(yīng)該理解,本申請的實施方式在范圍上并不因而受到限制。在所附權(quán)利要求的精神和條款的范圍內(nèi),本申請的實施方式包括許多改變、修改和等同。
針對一種實施方式描述和/或示出的特征可以以相同或類似的方式在一個或更多個其它實施方式中使用,與其它實施方式中的特征相組合,或替代其它實施方式中的特征。
應(yīng)該強調(diào),術(shù)語“包括/包含”在本文使用時指特征、整件、步驟或組件的存在,但并不排除一個或更多個其它特征、整件、步驟或組件的存在或附加。
附圖說明
所包括的附圖用來提供對本申請實施方式的進(jìn)一步的理解,其構(gòu)成了說明書的一部分,用于例示本申請的實施方式,并與文字描述一起來闡釋本申請的原理。顯而易見地,下面描述中的附圖僅僅是本申請的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中:
圖1為本申請實施方式中地震道數(shù)據(jù)的獲取方法的流程示意圖;
圖2為本申請實施方式中地震道數(shù)據(jù)的獲取方法的整體示意圖;
圖3為本申請實施方式中主節(jié)點服務(wù)器的功能模塊圖;
圖4為本申請實施方式中工作節(jié)點服務(wù)器的功能模塊圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實施方式中的附圖,對本申請實施方式中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施方式僅僅是本申請一部分實施方式,而不是全部的實施方式?;诒旧暾堉械膶嵤┓绞剑绢I(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施方式,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。
本申請實施方式提供一種分布式系統(tǒng)中地震道數(shù)據(jù)的獲取方法。所述分布式系統(tǒng)中可以包括主節(jié)點服務(wù)器和至少一個工作節(jié)點服務(wù)器,所述主節(jié)點服務(wù)器可以與各個工作節(jié)點服務(wù)器進(jìn)行數(shù)據(jù)互通。在本實施方式中,地震道數(shù)據(jù)存儲于各個工作節(jié)點服務(wù)器的本地存儲器中。在本實施方式中,所有的地震道數(shù)據(jù)可以作為一個整體的數(shù)據(jù)文件,該數(shù)據(jù)文件可以被劃分為多個數(shù)據(jù)塊,每個工作節(jié)點服務(wù)器均可以存儲一部分?jǐn)?shù)據(jù)塊。在每個數(shù)據(jù)塊中,均可以包含至少一個地震道的數(shù)據(jù)。請參閱圖1和圖2,雖然下文描述流程包括以特定順序出現(xiàn)的多個操作,但是應(yīng)該清楚了解,這些過程可以包括更多或更少的操作,這些操作可以順序執(zhí)行或并行執(zhí)行(例如使用并行處理器或多線程環(huán)境)。所述方法包括以下步驟。
步驟S11:所述主節(jié)點服務(wù)器接收地震道數(shù)據(jù)獲取請求,所述地震道數(shù)據(jù)獲取請求中包括目標(biāo)地震道的地震道編號。
在本實施方式中,所述主節(jié)點服務(wù)器可以與負(fù)責(zé)地震數(shù)據(jù)處理的應(yīng)用相連接,從而可以接收應(yīng)用發(fā)來的地震道數(shù)據(jù)獲取請求,所述地震道數(shù)據(jù)獲取請求中可以包括目標(biāo)地震道的地震道編號。在本實施方式中,地震道編號可以為數(shù)字編號,地震道編號可以從1開始依次編排。在實際應(yīng)用場景中,所述主節(jié)點服務(wù)器也可以接收應(yīng)用發(fā)來的地震道集數(shù)據(jù)獲取請求,所述地震道集數(shù)據(jù)獲取請求中可以包括多個地震道的編號,針對每個地震道的編號,可以采用同樣的處理方式。
步驟S12:所述主節(jié)點服務(wù)器根據(jù)所述地震道編號,確定所述目標(biāo)地震道對應(yīng)的目標(biāo)數(shù)據(jù)塊。
在本實施方式中,在工作節(jié)點服務(wù)器中都是以數(shù)據(jù)塊的形式來存儲地震道數(shù)據(jù)。多個地震道的數(shù)據(jù)可以包含于同一個數(shù)據(jù)塊中。在數(shù)據(jù)塊進(jìn)行存儲時,分布式系統(tǒng)可以記錄數(shù)據(jù)塊與工作節(jié)點服務(wù)器的關(guān)聯(lián)關(guān)系。該關(guān)聯(lián)關(guān)系可以作為一個數(shù)據(jù)表存儲于分布式系統(tǒng)的存儲中心內(nèi)。這樣,通過訪問該數(shù)據(jù)表,便可以獲知數(shù)據(jù)塊與工作節(jié)點服務(wù)器的對應(yīng)關(guān)系。
在本實施方式中,根據(jù)所述地震道編號,所述主節(jié)點服務(wù)器可以確定待讀取的地震道數(shù)據(jù)包含于哪個數(shù)據(jù)塊中。具體地,所述主節(jié)點服務(wù)器可以按照下述公式,確定所述地震道編號對應(yīng)的偏移量:
σ=N×L
其中,σ表示所述偏移量,N表示所述地震道編號,N為大于或者等于1的整數(shù),L表示地震道的數(shù)據(jù)長度。
在本實施方式中,所述主節(jié)點服務(wù)器可以基于所述偏移量,按照下述公式確定所述目標(biāo)地震道對應(yīng)的目標(biāo)數(shù)據(jù)塊的編號:
其中,k表示所述目標(biāo)數(shù)據(jù)塊的編號,M表示各個數(shù)據(jù)塊的長度,表示向上取整運算符。
例如,所述地震道編號為10,每個地震道的數(shù)據(jù)長度為20,那么所述偏移量便可以為200。也就是說,編號為10的地震道的數(shù)據(jù)可以為偏移量從181到200的數(shù)據(jù)。假設(shè)各個數(shù)據(jù)塊的長度為50,那么計算得到的目標(biāo)數(shù)據(jù)塊的編號便可以為4。也就是說,待獲取的地震道數(shù)據(jù)位于編號為4的數(shù)據(jù)塊中。
步驟S13:所述主節(jié)點服務(wù)器確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器,并將所述地震道編號存放于與所述目標(biāo)工作節(jié)點服務(wù)器相對應(yīng)的目標(biāo)本地隊列中。
在本實施方式中,可以通過分布式系統(tǒng)中的運行時系統(tǒng)來定義分布式系統(tǒng)中的主節(jié)點master服務(wù)器以及各個工作節(jié)點worker服務(wù)器。具體地,可以通過在分布式系統(tǒng)中的一個節(jié)點上啟動守護(hù)進(jìn)程,從而將該節(jié)點設(shè)置為master服務(wù)器。同樣的,可以在分布式系統(tǒng)中的多個節(jié)點上分別啟動守護(hù)進(jìn)程,從而將該多個節(jié)點設(shè)置為worker服務(wù)器。
在設(shè)置了maser服務(wù)器和worker服務(wù)器之后,可以在master服務(wù)器中創(chuàng)建與worker服務(wù)器一一對應(yīng)的本地隊列,這些本地隊列中可以存放地震道的編號。在worker服務(wù)器中可以創(chuàng)建數(shù)據(jù)讀取線程池、任務(wù)池以及任務(wù)請求線程。所述任務(wù)請求線程可以用于向master服務(wù)器發(fā)送任務(wù)獲取請求,所述任務(wù)池可以存放從master服務(wù)器獲取的任務(wù),所述數(shù)據(jù)讀取線程池中的各個線程可以用于讀取不同編號的地震道數(shù)據(jù)。
在本實施方式中,數(shù)據(jù)塊與工作節(jié)點服務(wù)器之間的關(guān)聯(lián)關(guān)系可以通過各自的編號來關(guān)聯(lián)。例如,編號為4的數(shù)據(jù)塊與編號為5的工作節(jié)點服務(wù)器相關(guān)聯(lián)。這樣,根據(jù)預(yù)先確定的數(shù)據(jù)塊的編號與工作節(jié)點服務(wù)器之間的關(guān)聯(lián)關(guān)系,所述主節(jié)點服務(wù)器便可以確定所述目標(biāo)數(shù)據(jù)塊的編號關(guān)聯(lián)的目標(biāo)工作節(jié)點服務(wù)器。
在本實施方式中,為了提高讀取數(shù)據(jù)的效率,可以為各個worker服務(wù)器分配本地數(shù)據(jù)的讀取任務(wù)。例如,某個worker服務(wù)器中存儲了編號為5的數(shù)據(jù)塊,該數(shù)據(jù)塊中包含了編號從1至3的地震道的數(shù)據(jù)。那么針對編號從1至3的地震道的數(shù)據(jù)讀取任務(wù)便可以存放于該worker服務(wù)器對應(yīng)的本地隊列中。
步驟S14:響應(yīng)于所述目標(biāo)工作節(jié)點服務(wù)器發(fā)來的任務(wù)獲取請求,所述主節(jié)點服務(wù)器向所述目標(biāo)工作節(jié)點服務(wù)器提供包含所述地震道編號的任務(wù)。
在本實施方式中,主節(jié)點服務(wù)器可以將各個地震道編號按照上述步驟的處理方式存放至對應(yīng)的本地隊列中,然后各個工作節(jié)點服務(wù)器便可以向主節(jié)點服務(wù)器發(fā)起任務(wù)獲取請求。所述主節(jié)點服務(wù)器可以將多個地震道的編號封裝于同一個任務(wù)中。這樣,工作節(jié)點服務(wù)器便可以針對任務(wù)中的各個地震道編號,獲取相應(yīng)的地震道數(shù)據(jù)。
步驟S15:所述主節(jié)點服務(wù)器接收所述目標(biāo)工作節(jié)點服務(wù)器反饋的包含所述目標(biāo)地震道數(shù)據(jù)的地震數(shù)據(jù)包。
在本實施方式中,目標(biāo)工作節(jié)點服務(wù)器在完成請求的任務(wù)后,可以將該任務(wù)中涉及的地震道數(shù)據(jù)作為一個地震數(shù)據(jù)包一起發(fā)送給主節(jié)點服務(wù)器。主節(jié)點服務(wù)器在接收到工作節(jié)點服務(wù)器發(fā)來的地震數(shù)據(jù)包后,可以將接收的地震數(shù)據(jù)包存儲于數(shù)據(jù)緩沖區(qū)中,后續(xù)可以數(shù)據(jù)緩沖區(qū)中的地震數(shù)據(jù)包發(fā)送給應(yīng)用。
在本申請一個實施方式中,直接采用多節(jié)點并行讀取的方式會遇到負(fù)載不均衡問題。當(dāng)?shù)卣饠?shù)據(jù)的規(guī)模較小時,該地震數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)塊在多節(jié)點間的分布可能會很不均勻,那么在分配地震道編號后可能會引起數(shù)據(jù)塊較多的節(jié)點讀取數(shù)據(jù)所需時間遠(yuǎn)長于其它塊較少的節(jié)點,降低了整體讀取效率。鑒于此,在本實施方式中在將各個地震道編號分配完成之后,可以進(jìn)行負(fù)載均衡的操作。當(dāng)然,在具體應(yīng)用過程中,還可以是在每次收到工作節(jié)點服務(wù)器的任務(wù)請求后,進(jìn)行一次針對本地隊列的負(fù)載均衡操作,然后再給任務(wù)分配地震道編號。在本實施方式中,為了保證數(shù)據(jù)的完備性,每個數(shù)據(jù)塊均可以設(shè)置多個備份數(shù)據(jù)塊,同一個數(shù)據(jù)塊的備份數(shù)據(jù)塊可以存儲于不同的工作節(jié)點服務(wù)器中。這樣,當(dāng)某個工作節(jié)點服務(wù)器對應(yīng)的本地隊列中地震道編號數(shù)量較多時,可以將部分地震道編號轉(zhuǎn)移至存儲備份數(shù)據(jù)塊的其它工作節(jié)點服務(wù)器處,以達(dá)到負(fù)載均衡的要求。具體地,所述主節(jié)點服務(wù)器可以從各個本地隊列中確定存放地震道編號數(shù)量最多的待轉(zhuǎn)移本地隊列。然后可以判斷所述待轉(zhuǎn)移本地隊列中的地震道編號數(shù)量與任務(wù)中封裝的地震道編號數(shù)量之間的大小關(guān)系,如果所述待轉(zhuǎn)移本地隊列中的地震道編號數(shù)量小于或者等于任務(wù)中封裝的地震道編號數(shù)量,那么進(jìn)行一次任務(wù)便可以處理所有的地震道編號,在這種情況下便無需進(jìn)行轉(zhuǎn)移。當(dāng)所述待轉(zhuǎn)移本地隊列中的地震道編號數(shù)量大于任務(wù)中封裝的地震道編號數(shù)量時,所述主節(jié)點服務(wù)器可以確定所述待轉(zhuǎn)移本地隊列對應(yīng)的待轉(zhuǎn)移的地震道編號數(shù)量。
在本實施方式中,所述主節(jié)點服務(wù)器可以按照下述公式確定所述待轉(zhuǎn)移本地隊列對應(yīng)的待轉(zhuǎn)移的地震道編號數(shù)量:
D=Tmax-Tave
其中,D表示所述待轉(zhuǎn)移的地震道編號數(shù)量,Tmax表示所述待轉(zhuǎn)移本地隊列中存放的地震道編號的數(shù)量,Tave表示所有本地隊列中存放的地震道編號的平均數(shù)量。
進(jìn)一步地,盡管待轉(zhuǎn)移本地隊列中的地震道編號的數(shù)量較多,但是如果待轉(zhuǎn)移的地震道編號數(shù)量小于或者等于任務(wù)中封裝的地震道編號數(shù)量,那么該工作節(jié)點服務(wù)器在下次執(zhí)行任務(wù)時,同樣可以處理所有的地震道編號,在這種情況下也無需進(jìn)行轉(zhuǎn)移。
當(dāng)所述待轉(zhuǎn)移的地震道編號數(shù)量大于任務(wù)中封裝的地震道編號數(shù)量時,表明下一次執(zhí)行任務(wù)時,待轉(zhuǎn)移工作節(jié)點服務(wù)器無法處理完所有的地震道編號,在這種情況下為了提高數(shù)據(jù)讀取的效率,便可以進(jìn)行負(fù)載均衡的過程。具體地,所述主節(jié)點服務(wù)器可以從所述待轉(zhuǎn)移本地隊列中取出已存放的一個地震道編號,并將取出的地震道編號重新存放至另一個本地隊列中,所述另一個本地隊列對應(yīng)的工作節(jié)點服務(wù)器中存儲的數(shù)據(jù)塊包含所述取出的地震道編號對應(yīng)的地震道數(shù)據(jù)。也就是說,轉(zhuǎn)移至的另一個本地隊列對應(yīng)的工作節(jié)點服務(wù)器中需要存儲轉(zhuǎn)移的地震道編號對應(yīng)的數(shù)據(jù)塊,這樣便可以仍然滿足從本地讀取數(shù)據(jù)的要求。
具體地,所述主節(jié)點服務(wù)器可以確定所述取出的地震道編號對應(yīng)的備份數(shù)據(jù)塊。確定備份數(shù)據(jù)塊的過程與步驟S12中確定目標(biāo)數(shù)據(jù)塊的過程一致。所述主節(jié)點服務(wù)器可以根據(jù)數(shù)據(jù)塊與工作節(jié)點服務(wù)器之間的關(guān)聯(lián)關(guān)系,查詢存儲所述備份數(shù)據(jù)塊的至少一個備份工作節(jié)點服務(wù)器,并獲取各個備份工作節(jié)點服務(wù)器對應(yīng)的本地隊列中已存放的地震道編號的數(shù)量。這樣,所述主節(jié)點服務(wù)器可以將所述取出的地震道編號存放于地震道編號的數(shù)量最少的備份工作節(jié)點服務(wù)器對應(yīng)的本地隊列中。當(dāng)然,如果備份工作節(jié)點服務(wù)器只有一個,則直接將待轉(zhuǎn)移的地震道編號存放于該備份工作節(jié)點服務(wù)器中。
在本實施方式中,所述主節(jié)點服務(wù)器可以重復(fù)上述從所述待轉(zhuǎn)移本地隊列中取出地震道編號并重新存放的步驟,直至取出的地震道編號的數(shù)量達(dá)到所述待轉(zhuǎn)移的地震道編號數(shù)量為止,這樣便可以完成負(fù)載均衡的過程。
請參閱圖1和圖2,在工作節(jié)點服務(wù)器這一側(cè),本申請實施方式同樣提供一種分布式系統(tǒng)中地震道數(shù)據(jù)的獲取方法,所述方法可以包括以下步驟。
步驟S21:所述工作節(jié)點服務(wù)器向所述主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求。
在本實施方式中,在主工作節(jié)點服務(wù)器在本地隊列中分配完地震道編號后,各個工作節(jié)點服務(wù)器便可以開始處理數(shù)據(jù)讀取的任務(wù)。具體地,工作節(jié)點服務(wù)器可以通過任務(wù)請求線程向所述主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求。所述地震數(shù)據(jù)讀取請求中可以攜帶工作節(jié)點服務(wù)器本身的編號,從而告知主節(jié)點服務(wù)器當(dāng)前是哪個工作節(jié)點服務(wù)器在發(fā)送地震數(shù)據(jù)讀取請求。
步驟S22:所述工作節(jié)點服務(wù)器接收所述主節(jié)點服務(wù)器提供的地震數(shù)據(jù)讀取任務(wù),并將所述地震數(shù)據(jù)讀取任務(wù)存放至自身的任務(wù)池中,所述地震數(shù)據(jù)讀取任務(wù)中包括至少一個地震道編號。
在本實施方式中,主節(jié)點服務(wù)器在接收到工作節(jié)點服務(wù)器發(fā)來的地震數(shù)據(jù)讀取請求后,可以提取其中的工作節(jié)點服務(wù)器編號,并向該編號對應(yīng)的工作節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取任務(wù),所述地震數(shù)據(jù)讀取任務(wù)中可以包括至少一個地震道編號。
步驟S23:所述工作節(jié)點服務(wù)器從自身的任務(wù)池中提取當(dāng)前地震數(shù)據(jù)讀取任務(wù),并從本地存儲器中讀取所述當(dāng)前地震數(shù)據(jù)讀取任務(wù)中各個地震道編號對應(yīng)的地震道數(shù)據(jù)。
在本實施方式中,工作節(jié)點在接收到地震數(shù)據(jù)讀取任務(wù)后,可以將該任務(wù)存放于自身的任務(wù)池中,以便后續(xù)進(jìn)行處理。此外,所述工作節(jié)點服務(wù)器還可以檢測自身的任務(wù)池是否被填滿,若否,可以再次向所述主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求,以進(jìn)一步地獲取下一個地震數(shù)據(jù)讀取任務(wù),從而保證工作節(jié)點服務(wù)器能夠持續(xù)不斷地處理任務(wù)。
步驟S24:所述工作節(jié)點服務(wù)器將讀取的地震道數(shù)據(jù)反饋至所述主節(jié)點服務(wù)器處。
在本實施方式中,所述工作節(jié)點服務(wù)器可以依次從自身的任務(wù)池中提取任務(wù),并從本地讀取任務(wù)中包含的地震道編號對應(yīng)的地震道數(shù)據(jù)。在讀取了任務(wù)中涉及的所有地震道數(shù)據(jù)后,便可以將讀取的地震道數(shù)據(jù)反饋至所述主節(jié)點服務(wù)器處。然后工作節(jié)點服務(wù)器便可以從自身的任務(wù)池中提取下一個任務(wù)進(jìn)行處理。
請參閱圖3,本申請實施方式還提供一種主節(jié)點服務(wù)器,所述主節(jié)點服務(wù)器包括:
地震道數(shù)據(jù)獲取請求接收單元100,用于接收地震道數(shù)據(jù)獲取請求,所述地震道數(shù)據(jù)獲取請求中包括目標(biāo)地震道的地震道編號;
目標(biāo)數(shù)據(jù)塊確定單元200,用于根據(jù)所述地震道編號,確定所述目標(biāo)地震道對應(yīng)的目標(biāo)數(shù)據(jù)塊;
地震道編號存放單元300,用于確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器,并將所述地震道編號存放于與所述目標(biāo)工作節(jié)點服務(wù)器相對應(yīng)的目標(biāo)本地隊列中;
任務(wù)提供單元400,用于響應(yīng)于所述目標(biāo)工作節(jié)點服務(wù)器發(fā)來的任務(wù)獲取請求,向所述目標(biāo)工作節(jié)點服務(wù)器提供包含所述地震道編號的任務(wù);
地震數(shù)據(jù)包接收單元500,用于接收所述目標(biāo)工作節(jié)點服務(wù)器反饋的包含所述目標(biāo)地震道數(shù)據(jù)的地震數(shù)據(jù)包。
在本實施方式中,所述地震道編號存放單元300和所述任務(wù)提供單元400之間,可以存在負(fù)載均衡單元310,用于在每次收到工作節(jié)點服務(wù)器的任務(wù)請求后,進(jìn)行一次針對本地隊列的負(fù)載均衡操作。
請參閱圖4,本申請實施方式還提供一種工作節(jié)點服務(wù)器,所述工作節(jié)點服務(wù)器包括:
讀取請求發(fā)送單元110,用于向主節(jié)點服務(wù)器發(fā)送地震數(shù)據(jù)讀取請求;
任務(wù)接收單元210,用于接收所述主節(jié)點服務(wù)器提供的地震數(shù)據(jù)讀取任務(wù),并將所述地震數(shù)據(jù)讀取任務(wù)存放至自身的任務(wù)池中,所述地震數(shù)據(jù)讀取任務(wù)中包括至少一個地震道編號;
地震道數(shù)據(jù)讀取單元310,用于從自身的任務(wù)池中提取當(dāng)前地震數(shù)據(jù)讀取任務(wù),并從本地存儲器中讀取所述當(dāng)前地震數(shù)據(jù)讀取任務(wù)中各個地震道編號對應(yīng)的地震道數(shù)據(jù);
數(shù)據(jù)反饋單元410,用于將讀取的地震道數(shù)據(jù)反饋至所述主節(jié)點服務(wù)器處。
需要說明的是,上述各個功能模塊的具體實現(xiàn)方式與步驟S11至S15以及步驟S21至S24中的描述一致,這里便不再贅述。
由以上本申請實施方式提供的技術(shù)方案可見,本申請通過主節(jié)點服務(wù)器可以確定地震道數(shù)據(jù)獲取請求中攜帶的地震道編號對應(yīng)的目標(biāo)數(shù)據(jù)塊,然后可以確定存儲所述目標(biāo)數(shù)據(jù)塊的目標(biāo)工作節(jié)點服務(wù)器。主節(jié)點服務(wù)器可以將該地震道編號存放于目標(biāo)工作節(jié)點服務(wù)器對應(yīng)的本地隊列中。這樣,目標(biāo)工作節(jié)點服務(wù)器后續(xù)可以從本地隊列中獲取包含該地震道編號的任務(wù),從而可以從本地存儲器中直接讀取對應(yīng)的地震道數(shù)據(jù),而無需從別的工作節(jié)點服務(wù)器中讀取,加快了數(shù)據(jù)讀取的速度。再者,每個工作節(jié)點服務(wù)器可以同時進(jìn)行數(shù)據(jù)讀取,這種并行的數(shù)據(jù)讀取方式也進(jìn)一步提高了數(shù)據(jù)讀取的效率。
上面對本申請的各種實施方式的描述以描述的目的提供給本領(lǐng)域技術(shù)人員。其不旨在是窮舉的、或者不旨在將本發(fā)明限制于單個公開的實施方式。如上所述,本申請的各種替代和變化對于上述技術(shù)所屬領(lǐng)域技術(shù)人員而言將是顯而易見的。因此,雖然已經(jīng)具體討論了一些另選的實施方式,但是其它實施方式將是顯而易見的,或者本領(lǐng)域技術(shù)人員相對容易得出。本申請旨在包括在此已經(jīng)討論過的本發(fā)明的所有替代、修改、和變化,以及落在上述申請的精神和范圍內(nèi)的其它實施方式。
本說明書中的各個實施方式均采用遞進(jìn)的方式描述,各個實施方式之間相同相似的部分互相參見即可,每個實施方式重點說明的都是與其他實施方式的不同之處。
雖然通過實施方式描繪了本申請,本領(lǐng)域普通技術(shù)人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請的精神。