本申請涉及一種樹的構造方法,具體涉及一種數據源地址分發樹的構造方法及裝置;本申請還涉及一種用于復制數據的方法及裝置,本申請還涉及一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法及裝置;本申請還涉及一種用于數據發送的方法及裝置;本申請還涉及一種數據源地址分發系統。
背景技術:
對于擁有眾多節點的大型計算機網絡,在網絡中多個節點部署軟件或復制數據文件是運行于計算網絡上的業務系統必不可少的操作,運行基于大型的分布式計算機系統上的業務系統時,經常需要將同一大型軟件或相同的大量數據復制到系統內的多個節點上,傳統的從單一數據源復制數據的方式,由于數據量的增加,會增加網絡擁堵的情況的發生,更有效率低下的弊病,明顯不適用于大型的分布式系統內部署數據的情況。
現有的將大量相同數據復制到分布式系統的多個節點的方式通常為以下兩種:
方式一,部分利用對等網絡(peer-to-peer)技術。先預先規劃好哪些數據需要部署到分布式系統內的哪些節點上,從原始的數據源復制數據到其中一個節點,其他需要同樣數據的節點從該節點復制數據而不必從原始的數據源復制數據。對于其他更多節點需要同樣數據的情況,可以在這些節點間利用對等網絡(peer-to-peer)技術復制數據。
這種方式雖然避免了所有需要同樣數據的節點從同一數據源復制數據導致的效率低下和網絡擁堵的問題,但每當由于業務需要,更多的節點加入系統,需要復制同樣的數據時,因為需要頻繁的規劃,導致不能靈活地動態地應對情況的變化的缺點。
方式二,完全采用對等網絡(peer-to-peer)技術,在網絡中設置中心化的數據地址查詢系統,該系統存儲分布式系統內所需的所有數據的分布情況,也即哪些數據存儲在哪些節點。
當有節點需要復制數據時,向該數據地址查詢系統查詢所需復制數據的存儲位置,從該數據地址查詢系統反饋的數據的存儲位置,利用對等網絡 (peer-to-peer)技術復制數據,同時向中心節點報告自己存儲了所述數據,以備后續其他節點查詢時,數據地址查詢系統能夠提供更多的存儲了所述數據的節點信息。
這一方式能夠避免所有需要同樣數據的節點從同一數據源復制數據導致的效率低下和網絡擁堵的問題,并且能夠動態應對需要復制同樣數據的節點變化的情況。但對于大型的網絡來說,所述數據在網絡內分布的信息數量非常大,通常會需要多于一個節點來存儲,數據地址查詢系統不得不分布于不同的節點上,這就導致了網絡結構復雜,管理維護工作量大,成本增加。
技術實現要素:
本申請提供一種數據源地址分發樹的構造方法。本申請還提供一種用于復制數據的方法。本申請同時還提供一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法。本申請提供一種數據發送方法。本申請同時提供一種數據源地址分發系統。本申請提供一種數據源地址分發樹的構造裝置,還提供一種用于復制數據的裝置。
本申請提供的一種數據源地址分發樹的構造方法,包括以下步驟:
接收請求者發送的查詢所述請求者在指定的數據源地址分發樹中的親屬節點信息的請求,所述請求者由其標識所確定,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定;
將所述請求者作為新節點加入所述數據源地址分發樹;
將所述請求者對應的節點的父節點和子節點的信息發送給所述請求者。
優選地,所述將所述請求者作為新節點加入所述數據源地址分發樹包括:
若所述數據源地址分發樹不存在,則建立一棵數據源地址分發樹,將所述請求者作為所述數據源地址分發樹的根節點。
優選地,所述將所述請求者作為新節點加入所述數據源地址分發樹包括:
若所述數據源地址分發樹存在,且所述數據源地址分發樹中不存在所述請求者對應的節點則將該請求者作為一個新節點加入所述數據源地址分發樹。
優選地,所述數據源地址分發樹為完全二叉樹。
優選地,所述將該請求者作為一個新節點加入所述數據源地址分發樹包括:將該請求者作為一個新的葉子節點加入所述數據源地址分發樹。
優選地,還包括所述的數據源地址分發樹的存儲節點調整步驟,所述步驟 包括:
接收請求者發送的所述請求者在指定的數據源地址分發樹中的父節點失效的信息,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定;
根據所述請求者發送的所述請求者在指定的數據源地址分發樹中的父節點信息,調整所述數據源地址分發樹的存儲節點。
優選地,所述根據所述請求者發送的所述請求者在指定的數據源地址分發樹中的父節點信息,調整所述數據源地址分發樹的存儲節點包括:
若所述數據源地址分發樹中不存在所述請求者對應的節點,則將該請求者作為一個新節點加入所述數據源地址分發樹,并將該新節點的父節點和子節點信息發送給所述請求者。
優選地,所述根據所述請求者發送的所述請求者在指定的數據源地址分發樹中的父節點信息,調整所述數據源地址分發樹的存儲節點包括:
若所述數據源地址分發樹中存在所述請求者對應的節點,則,根據在所述數據源地址分發樹中該請求者對應的節點的父節點是否與該請求者發送的失效的父節點一致的情況調整所述數據源地址分發樹的存儲節點。
優選地,所述根據在所述數據源地址分發樹中該請求者對應的節點的父節點是否與該請求者發送的失效的父節點一致的情況調整所述數據源地址分發樹的存儲節點包括:
若在所述數據源地址分發樹中該請求者對應的節點的父節點與該請求者發送的失效的父節點不一致,則將所述數據源地址分發樹中該請求者對應的節點的父節點信息發送給該所述請求者;
若在所述數據源地址分發樹中該請求者對應的節點的父節點與該請求者發送的失效的父節點一致,則,根據所述數據源地址分發樹中是否存在有效的葉子節點,調整所述數據源地址分發樹的存儲節點。
優選地,所述根據所述數據源地址分發樹中是否存在有效的葉子節點,調整所述數據源地址分發樹的存儲節點包括:
若所述數據源地址分發樹中存在有效的葉子節點,則將所述請求者對應的節點的父節點標記為失效并與所述有效的葉子節點交換位置,并將交換位置后所述請求者對應的節點的父節點信息發送給所述請求者;
若所述數據源地址分發樹中不存在有效的葉子節點,則刪除所述數據源地址分發樹,以被刪除的數據源地址分發樹的標識建立一棵數據源地址分發樹, 將所述請求者作為根節點,并將該根節點的父節點的信息發送給所述請求者。
優選地,用于分布式計算機系統內各個節點的數據部署。
本申請提供的一種用于復制數據的方法,用于分布式計算機系統內各個節點的數據部署,包括以下步驟:
獲取復制數據到本節點的請求,所述請求包括數據的標識以及數據的原始地址;
獲得本節點在指定的數據源地址分發樹中的父節點信息,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定;
根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求;
接收所述數據到本節點。
優選地,所述根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求包括:
若本節點在指定的數據源地址分發樹中存在父節點,則向獲得的所述本節點在指定的數據源地址分發樹中的父節點發送復制所述數據的請求;
若本節點在指定的數據源地址分發樹中不存在父節點,則向復制數據到本節點的請求中所包含的數據的原始地址發送復制所述數據的請求。
優選地,所述獲得本節點在指定的數據源地址分發樹中的父節點信息包括:
向數據源地址分發樹中心控制節點發送查詢本節點在指定的數據源地址分發樹中的親屬節點信息的請求;
接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中無父節點的信息并存儲到本節點。
優選地,所述獲得本節點在指定的數據源地址分發樹中的父節點信息包括:
查詢獲得本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息。
優選地,所述接收所述數據到本節點包括:
若所述數據的發送者為本節點存儲的本節點在所述數據源地址分發樹中的父節點,則接收所述數據到本節點。
優選地,所述所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定具體為:
所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的 標識所唯一確定。
本申請提供的一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定,包括以下步驟:
檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常;
向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求;
接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點的信息;
用數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點更新本節點存儲的本節點在所述數據源地址分發樹中的父節點信息。
優選地,所述檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常包括以下步驟:
接收發送者發送的數據;
若所述數據的發送者不是本節點存儲的本節點在所述數據源地址分發樹中的父節點,則本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常。
優選地,所述檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常包括以下步驟:
以設定的時間間隔向本節點存儲的本節點在所述數據源地址分發樹中的父節點發送狀態更新請求;
判斷所述狀態更新請求是否失敗;
若所述狀態更新請求失敗,則判斷本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常;
相應地,所述向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求中包含本節點在所述數據源地址分發樹中的父節點失效信息。
優選地,所述判斷所述狀態更新請求是否失敗的方法包括:
在設定的時長內未收到本節點存儲的本節點在所述數據源地址分發樹中的 父節點對本節點所發送的狀態更新請求的響應,則判斷為失敗;
或本節點存儲的本節點在所述數據源地址分發樹中父節點對本節點發送的狀態更新請求連續未做出響應的次數超過設定的值,則判斷為失敗。
優選地,用于分布式計算機系統內各個節點的數據部署。
本申請提供的一種用于數據發送的方法,包括以下步驟:
接收請求者發送的復制數據請求,所述數據由數據的標識所確定;
查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定;
若復制數據請求的發送者為本節點在指定的數據源地址分發樹中的子節點,則向該復制數據請求的發送者發送其所請求的數據。
優選地,所述查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點包括:
向數據源地址分發樹中心控制節點發送查詢本節點在指定的數據源地址分發樹中的親屬節點請求;
接收并存儲數據源地址分發樹中心控制節點發送的子節點信息;
優選地,所述查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點包括:
查詢本節點存儲的本節點在指定的數據源地址分發樹中的子節點信息。
優選地,用于分布式計算機系統內各個節點的數據部署。
本申請提供的一種數據源地址分發樹的構造裝置,包括以下單元:
接收單元,用于接收請求者發送的查詢所述請求者在指定的數據源地址分發樹中的親屬節點信息的請求,所述請求者由其標識所確定,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定;
構造單元,用于將所述請求者作為新節點加入所述數據源地址分發樹。
發送單元,用于將所述請求者對應的節點的父節點和子節點的信息發送給所述請求者。
本申請提供的一種用于復制數據的裝置,包括以下單元:
獲取單元,用于獲取復制數據到本節點的請求,所述請求包括數據的標識以及數據的原始地址;
獲得單元,用于獲得本節點在指定的數據源地址分發樹中的父節點信息, 所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定;
發送單元,用于根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求;
接收單元,用于接收所述數據到本節點。
本申請提供的一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定,包括以下單元:
檢測單元,用于檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常;
查詢單元,用于向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求;
接收單元,用于接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點的信息;
更新單元,用于用數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點更新本節點存儲的本節點在所述數據源地址分發樹中的父節點信息。
本申請提供的一種用于數據發送的裝置,包括以下單元:
接收單元,用于接收請求者發送的復制數據請求,所述數據由數據的標識所確定;
查詢單元,用于查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定;
發送單元,用于若復制數據請求的發送者為本節點在指定的數據源地址分發樹中的子節點,則向該復制數據請求的發送者發送其所請求的數據。
本申請提供的一種數據源地址分發系統,包括本申請提供的一種數據源地址分發樹的構造裝置、本申請提供的一種用于復制數據的裝置、本申請提供的一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置和本申請提供的一種用于數據發送的裝置;所述裝置之間通過通信網絡連接。
與現有技術相比,本申請提供的一種數據源地址分發樹的構造方法具有以下優點:
本申請提供的一種數據源地址分發樹的構造方法構造的數據源地址分發樹以需要復制的數據的標識和查詢者(也即需要復制數據的節點)所在的組的標識所確定,僅僅存儲該組內各個節點的相互關系(其中查詢者節點的父節點即為其復制所述數據所指定的數據源地址),這樣即便對于大型的網絡來說,所需存儲的數據量不大,完全能夠部署在一個節點內。節省了中心化的數據源地址管理節點的存儲空間,使得大型的分布式系統也可以采用中心化的數據源地址分發方式。
所述數據源地址分發樹的建立和各個節點的加入都由需要復制數據的節點進行查詢觸發,因此不必預先為所有的數據源分發請求做好規劃。
由此可見,與現有技術相比本申請提供的一種數據源地址分發樹的構造方法,達到了節省數據源地址存儲空間,簡化數據源地址存儲結構,并且能夠動態地適應網絡內節點變化的情況的效果,起到降低運行維護的成本,對節點變化的適應性更加靈活的作用。
與現有技術相比,本申請提供的一種用于復制數據的方法具有以下優點:以所需復制的數據的標識和本節點所在組的標識查詢本節點的父節點信息,根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求。而查詢者不同其對應節點的父節點信息也可以不同。
由此可見,與現有技術相比,本申請提供的一種復制數據的方法不僅起到避免大量節點從同一數據源復制數據對網絡造成擁堵的作用,還將絕大多數復制相同數據的操作限定在本節點所在的組內,達到減少對網絡上其他節點的影響的效果。
同時由于無需對網絡上需要復制數據的節點做預先的規劃,使得動態地增加節點或減少節點都能夠新型復制數據的操作。達到提高業務系統可擴展性的效果。
與現有技術相比,本申請提供的一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法具有以下優點:起到提高復制數據操作的可靠性和安全性的作用。
與現有技術相比,本申請提供的一種數據發送方法具有以下優點:起到提 高復制數據操作安全性的效果。
與現有技術相比,本申請提供的一種數據源地址分發系統具有以下優點:達到簡化網絡結構,避免網絡擁堵的效果;起到減少對非組內節點影響的作用;達到提高復制數據操作的可靠性和安全性的作用;并且能夠動態地適應網絡內節點變化的情況的效果,達到降低運行維護的成本,提高業務系統可擴展性的效果。
附圖說明
圖1為本申請第一實施例一種數據源地址分發樹的構造方法的流程示意圖。
圖2為本申請第一實施例一種數據源地址分發樹的構造方法中數據源地址分發樹中存在一個僅有左子節點的存儲節點的情況的示意圖。
圖3為本申請第一實施例一種數據源地址分發樹的構造方法中數據源地址分發樹中不存在僅有左子節點的存儲節點的情況的示意圖。
圖4為本申請第一實施例中存儲節點調整步驟和第二實施例一種用于復制數據的方法中以及第三實施例一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法中的數據源地址分發樹示意圖。
圖5為本申請第二實施例一種用于復制數據的方法的流程示意圖。
圖6為本申請第三實施例一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法的流程示意圖。
圖7為本申請第四實施例一種用于數據發送的方法的流程示意圖。
圖8為本申請第五實施例一種數據源地址分發樹的構造裝置的結構框圖。
圖9為本申請第六實施例一種用于復制數據的裝置的結構框圖。
圖10為本申請第七實施例一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置的結構框圖。
圖11為本申請第八實施例一種用于數據發送的裝置的結構框圖。
圖12為本申請第九實施例一種數據源地址分發系統的結構示意圖。
具體實施方式
在下面的描述中闡述了很多具體細節以便于充分理解本申請。但是本申請能夠以很多不同于在此描述的其它方式來實施,本領域技術人員可以在不違背 本申請內涵的情況下做類似推廣,因此本申請不受下面公開的具體實施的限制。
本申請第一實施例提供一種數據源地址分發樹的構造方法,其流程示意圖如圖1所示,該實施例包括以下步驟:
步驟s101,接收請求者發送的查詢所述請求者在指定的數據源地址分發樹中的親屬節點信息的請求,所述請求者由其標識所確定,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定。
數據源地址分發樹構造節點收到請求者向其發送的查詢請求,請求查詢所述請求者在指定的數據源地址分發樹中的親屬節點信息。
所述請求者由其標識所確定,所述標識可以采用所述請求者的ip地址或其名稱,本申請的實施例中以所述請求者的ip地址為例進行說明。
所述親屬節點信息指在數據源地址分發樹中,與存儲所述請求者的節點直接相連的節點所存儲的信息,如父節點所存儲的節點標識,子節點(包括左子節點和右子節點)所存儲的節點的標識等。節點的標識指在網絡中能夠唯一表征該節點的信息,可以是節點名稱或節點的ip地址。在申請的本實施例中以節點的ip地址為例進行相應的說明。
所述的數據源地址分發樹的標識可以是其所存儲的位置或其名稱,該名稱包括在網絡中標識所述請求者所在的組的標識和其所請求的數據的標識,如可以采用集群的名稱和所請求的數據(或軟件)的名稱共同構成。
進一步地,采用集群的名稱和所請求的數據(或軟件)的名稱共同構成的數據源地址分發樹的標識能夠在所述的網絡中唯一地表征所述的請求者所在的集群和其所請求的數據或軟件。這樣能夠將請求者的查詢快速、唯一地定位到相應的數據源地址分發樹而無需做進一步的區分,起到簡化流程的效果。
本實施例中以數據源地址分發樹的標識為其名稱為例進行說明,該名稱以所述請求者所在的網絡集群的名稱(如aaaaa)和所請求的數據(或軟件)的名稱(如bbbbb)共同構成,如“aaaaa/bbbbb”。
步驟s102,將所述請求者作為新節點加入所述數據源地址分發樹。
將所述請求者作為新節點加入所述數據源地址分發樹可以采用以下的方式:
判斷是否存在所述數據源地址分發樹。
根據所述數據源地址分發樹的標識“aaaaa/bbbbb”,判斷當前是否存在所述請求者查詢的指定的數據源地址分發樹。
如果當前不存在所述請求者查詢的數據源地址分發樹,則建立一棵數據源地址分發樹,該樹的名稱為所述請求者所請求查詢的數據源地址分發樹的名稱即“aaaaa/bbbbb”,該樹的根節點存儲所述請求者的ip地址(如15.170.170.1),其父節點和子節點皆為空。
如果當前存在所述請求者查詢的數據源地址分發樹“aaaaa/bbbbb”,根據所述請求者的ip地址判斷所述的數據源地址分發樹“aaaaa/bbbbb”中是否存在節點,其存儲的內容為該請求者的ip地址(如15.170.170.1)。
如果所述的數據源地址分發樹“aaaaa/bbbbb”中不存在存儲的內容為該請求者的ip地址的節點,則為所述的數據源地址分發樹增加一個新的存儲節點,該存儲節點存儲所述的請求者的ip地址。將該存儲節點加入所述的數據源地址分發樹“aaaaa/bbbbb”中。
將該節點加入所述的數據源地址分發樹中的方式與所述數據源地址分發樹的類型相對應,在本實施例中優選地將數據源地址分發樹構造為完全二叉樹。完全二叉樹的主要特點包括:除了葉子節點,該二叉樹的其他節點一定有子節點,并且,最后一層(從根節點數)只可能是左邊是滿的,右邊有空的。這樣的數據源地址分發樹結構簡單,調整方便,維護容易。
本實施例中,將新增加的存儲所述請求者的存儲節點加入所述的數據源地址分發樹“aaaaa/bbbbb”的最后一層(本申請的實施例中數據源地址分發樹的層數從根節點開始數),即對于所述的數據源地址分發樹“aaaaa/bbbbb”,若存在僅有左子節點而無右子節點的存儲節點的情況,將該僅有左子節點而無有子節點的存儲節點作為新增加的存儲節點的父節點,將該新增加的存儲節點作為該僅有左子節點而無有子節點的存儲節點的右子節點。
若該數據源地址分發樹不存在僅有左子節點的存儲節點時,將位于該樹倒數第二層的最左側的沒有子節點的存儲節點作為該新增加的存儲節點的父節點,將該新增加的存儲節點作為其父節點的左子節點;若所述的數據源地址分發樹“aaaaa/bbbbb”倒數第二層不存在沒有子節點的存儲節點,則將位于該樹最后一層的最左側的沒有子節點的存儲節點作為該新增加的存儲節點的父節點,將該新增加的節點作為其父節點的左子節點。
例如對于僅有一個根節點(本步驟中前述的存儲所述請求者ip:15.170.170.1的存儲節點)的數據源地址分發樹“aaaaa/bbbbb”的情況,當收到請求者15.170.170.2的查詢請求后,在所述數據源地址分發樹“aaaaa/bbbbb” 的根節點下新增加一個左子節點,存儲15.170.170.2。
再例對于如圖2所示的情況,數據源地址分發樹“aaaaa/bbbbb”中存在一個僅有左子節點的存儲節點,即存儲了15.170.170.2的存儲節點,請求者15.170.170.5請求查詢圖2中所示的左側的數據源地址分發樹“aaaaa/bbbbb”,則增加一個存儲節點,存儲15.170.170.5,將該存儲了15.170.170.5的新增加的存儲節點作為存儲了15.170.170.2的存儲節點的右子節點。
類似的,對于如圖3所示的情況,數據源地址分發樹“aaaaa/bbbbb”中不存在僅有左子節點的存儲節點,請求者15.170.170.6請求查詢圖3中所示左側的數據源地址分發樹“aaaaa/bbbbb”,則增加一個存儲節點,存儲15.170.170.6,將該存儲了15.170.170.6的新增加的存儲節點作為存儲了15.170.170.3的存儲節點的左子節點。
步驟s103,將所述請求者對應的節點的父節點和子節點的信息發送給所述請求者。
對于由于不存在所述請求者查詢的數據源地址分發樹而以所述請求者作為根節點新建立了一棵數據源地址分發樹的情況,將所述根節點的父節點和子節點為空的信息發送給所述的請求者。
對于圖2所示的情況,將所述新節點的父節點存儲15.170.170.2以及其子節點為空的信息發送給15.170.170.5。
對于圖3所示的情況,將所述新節點的父節點存儲了15.170.170.3以及其子節點為空的信息發送給15.170.170.6。
如果所述的數據源地址分發樹“aaaaa/bbbbb”中存在存儲的內容為該請求者的ip地址的存儲節點,如請求者15.170.170.2查詢圖4所示左側的數據源地址分發樹“aaaaa/bbbbb”,則將存儲了15.170.170.2的存儲節點的父節點存儲的15.170.170.1以及其子節點分別存儲15.170.170.4和15.170.170.5的信息發送給請求者15.170.170.2。
除了上述構造數據源地址分發樹的步驟外,優選地,本實施例還提供所述的數據源地址分發樹的存儲節點調整步驟,以圖4所示的數據源地址分發樹“aaaaa/bbbbb”為例,所述步驟如下:
步驟一,接收請求者發送的所述請求者在指定的數據源地址分發樹中的父節點失效的信息,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定。
例如收到請求者發送的其在如圖4所示的數據源地址分發樹“aaaaa/bbbbb”中的父節點失效信息。下面將針對不同的情況進行相應的說明。
步驟二,根據所述請求者發送的所述請求者在指定的數據源地址分發樹中的父節點信息,調整所述數據源地址分發樹的存儲節點。
所述根據所述請求者發送的所述請求者在指定的數據源地址分發樹中的父節點信息,調整所述數據源地址分發樹的存儲節點可以采用以下的方式:
判斷所述數據源地址分發樹中是否存在所述請求者對應的節點。
若所述數據源地址分發樹中不存在所述請求者對應的節點,則將該請求者作為一個新節點加入所述數據源地址分發樹,并將該新節點的父節點和子節點信息發送給所述請求者。
例如,對于收到15.170.170.7發送的其在數據源地址分發樹“aaaaa/bbbbb”中的父節點失效的情況,圖4所示的數據源地址分發樹“aaaaa/bbbbb”中不存在存儲所述請求者15.170.170.7的存儲節點,則將請求者15.170.170.7加入所述數據源地址分發樹“aaaaa/bbbbb”中,優選地,可以按照步驟s102中所述的方法將請求者15.170.170.7加入所述數據源地址分發樹“aaaaa/bbbbb”中。
若所述數據源地址分發樹中存在所述請求者對應的節點,則,根據在所述數據源地址分發樹中該請求者對應的節點的父節點是否與該請求者發送的失效的父節點一致的情況調整所述數據源地址分發樹的存儲節點。
例如,對于收到請求者發送的其在數據源地址分發樹“aaaaa/bbbbb”中的父節點失效的情況,所述的數據源地址分發樹“aaaaa/bbbbb”中存在存儲了所述請求者的存儲節點,這時判斷該請求者發送的父節點失效信息中的父節點是否與所述的數據源地址分發樹“aaaaa/bbbbb”中存儲了該請求者的存儲節點的父節點所存儲的節點信息一致。
對于在所述數據源地址分發樹中該請求者對應的節點的父節點與該請求者發送的失效的父節點不一致的情況,,則將所述數據源地址分發樹中該請求者對應的節點的父節點信息發送給該所述請求者。
例如請求者15.170.170.4發送的父節點失效信息中的其父節點為15.170.170.7,而所述的數據源地址分發樹“aaaaa/bbbbb”中存儲所述請求者15.170.170.4的存儲節點的父節點存儲的節點為15.170.170.2,兩者不一致,則將所述的數據源地址分發樹“aaaaa/bbbbb”中存儲請求者15.170.170.4的 存儲節點的父節點存儲15.170.170.2的信息發送給請求者15.170.170.4。
對于在所述數據源地址分發樹中該請求者對應的節點的父節點與該請求者發送的失效的父節點一致的情況,則,判斷所述數據源地址分發樹中是否存在有效的葉子節點。
例如請求者15.170.170.4發送的父節點失效信息中其父節點為15.170.170.2,而所述的數據源地址分發樹“aaaaa/bbbbb”中存儲請求者15.170.170.4的存儲節點的父節點存儲的節點為15.170.170.2,兩者一致,則根據所述數據源地址分發樹中是否存在有效的葉子節點,調整所述數據源地址分發樹的存儲節點。
對于數據源地址分發樹“aaaaa/bbbbb”中存在的有效的葉子節點的情況,將所述請求者對應的節點的父節點標記為失效并與所述有效的葉子節點交換位置,并將此時所述請求者對應的節點的父節點信息發送給所述請求者。
例如,數據源地址分發樹“aaaaa/bbbbb”中存在的有效的葉子節點,該葉子節點存儲15.170.170.6,將該存儲節點與存儲請求者15.170.170.4的存儲節點的父節點(存儲15.170.170.2)對調位置,同時標記存儲15.170.170.2的存儲節點為失效的存儲節點,將存儲請求者15.170.170.4的存儲節點的父節點存儲15.170.170.6的信息發送給請求者15.170.170.4。
對于數據源地址分發樹“aaaaa/bbbbb”中不存在的有效的葉子節點的情況,刪除所述數據源地址分發樹,將所述請求者作為根節點,以被刪除的數據源地址分發樹的標識建立一棵數據源地址分發樹,并將該根節點的父節點的信息發送給所述請求者。
例如,對于圖4中所示的數據源地址分發樹“aaaaa/bbbbb”當收到15.170.170.2發送的其父節點15.170.170.1失效的信息,此時,若數據源地址分發樹“aaaaa/bbbbb”中不存在有效的葉子節點(圖4所示的數據源地址分發樹“aaaaa/bbbbb”的葉子節點15.170.170.4,15.170.170.5和15.170.170.6都失效),則刪除數據源地址分發樹“aaaaa/bbbbb”,以請求者15.170.170.2為根節點建立一棵名為“aaaaa/bbbbb”的數據源地址分發樹,并將其父節點為空的信息發送給請求者15.170.170.2。
本實施例提供的方法不僅可以用于網絡中普通的數據復制時數據源地址的分發,由于在分布式系統內多個節點部署相同的數據的情況更為突出,優選地,本實施例提供的方法可以用于大型分布式計算機系統內各節點上的數據部署, 為大型分布式計算機系統內各節點部署數據構造數據源地址分發樹,從而能夠起到節省存儲空間,靈活添加或減少節點的作用。
以上為本申請的一種數據源地址分發樹的構造方法的實施例,該方法能夠達到節省存儲空間,簡化數據源地址存儲結構的效果,使得單一節點可存儲的數據源地址數量大大增加,并且能夠達到動態地適應網絡內節點變化的情況的效果,起到降低運行維護的成本,對節點變化的適應性更加靈活的作用。
相應的,本申請的第二實施例提供一種用于復制數據的方法,其流程圖如圖5所示,包括如下步驟:
步驟s201,獲取復制數據到本節點的請求,所述請求包括數據的標識以及數據的原始地址。
網絡中的節點收到進行復制數據的請求,請求中包含所要復制數據的標識如數據的名稱,和數據所存儲位置的原始地址,如某個用于存儲相應數據的服務器的名稱或ip地址。
步驟s202,獲得本節點在指定的數據源地址分發樹中的父節點信息,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定。
查詢本節點在由所述數據的標識(如“bbbbb”)和本節點所在的組的標識(如“aaaaa”)相結合所確定的數據源地址分發樹(如“aaaaa/bbbbb”),獲得本節點在其中的父節點信息。
優選地,數據的標識(如“bbbbb”)和本節點所在的組的標識(如“aaaaa”)相結合可以唯一地確定數據源地址分發樹。從而可以避免由于結合的方法不當導致的不同的標識對應相同的數據源地址分發樹的情況,達到快速準確確定數據源地址分發樹的效果。
獲得本節點在指定的數據源地址分發樹中的父節點信息的方式可以包括以下兩種:
方式一,向數據源地址分發樹中心控制節點發送查詢本節點在指定的數據源地址分發樹中的親屬節點信息的請求。接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中無父節點的信息并存儲到本節點。
從數據源地址分發樹中心控制節點查詢并獲取本節點在指定的數據源地址分發樹中的親屬節點信息能夠保證查詢結果的準確性。
方式二,查詢獲得本節點存儲的本節點在指定的數據源地址分發樹中的父 節點信息。
從本節點獲取存儲的本節點在指定的數據源地址分發樹中的父節點信息能夠更快速得獲得所查詢的結果。
步驟s203,根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求。
以圖4中的數據源地址分發樹為例。
若本節點在指定的數據源地址分發樹中存在父節點,則向獲得的所述本節點在指定的數據源地址分發樹中的父節點發送復制所述數據的請求。
對于查詢到本節點在所述數據源地址分發樹中存在有父節點的情況,如本節點為15.170.170.4,在數據源地址分發樹“aaaaa/bbbbb”中存儲其的存儲節點的父節點存儲的節點為15.170.170.2,則向節點15.170.170.2發送復制所述數據“bbbbb”的請求。
若本節點在指定的數據源地址分發樹中不存在父節點,則向復制數據到本節點的請求中所包含的數據的原始地址發送復制所述數據的請求。
對于查詢到本節點在所述數據源地址分發樹中不存在父節點的情況,如本節點為15.170.170.1,在數據源地址分發樹“aaaaa/bbbbb”中存儲其的存儲節點為根節點,其父節點為空,則向復制數據到節點的請求中所包含的數據的原始地址(如其所在的服務器的ip地址)發送復制所述數據“bbbbb”的請求。
步驟s204,接收所述數據到本節點。
接收相應的數據源地址發送的所請求的數據到本節點。
為起到增加數據復制的安全性的效果,在接收所述數據到本節點時,優選地,還可以判斷所述數據的發送者是否為本節點存儲的本節點在所述數據源地址分發樹中的父節點,如當本節點15.170.170.4接收到節點15.170.170.2發送的所需要復制的數據“bbbbb”時,當本節點存儲的本節點在所述數據源地址分發樹中的父節點為15.170.170.2(也即,在所述數據源地址分發樹中,存儲本節點的存儲節點的父節點存儲的節點為15.170.170.2)時,進行接收數據的操作,若本節點存儲的本節點在所述數據源地址分發樹中的父節點不是15.170.170.2時,不直接進行接收數據的操作,這時可以做更多的處理,再進行相應的操作。
本實施例提供的方法,優選地可用于分布式計算機系統內各個節點的數據部署。
在分布式系統內各個節點部署同一軟件是分布式計算機系統業務系統運行的必要操作,而軟件不過是數據的一種組織方式,本實施例所提供的方法用于分布式計算機系統集群部署同一軟件,僅集群內的一個節點從原始數據源地址復制數據,集群內其他節點分別從集群內的已經部署了數據的節點復制數據,能夠起到避免網絡擁堵的效果,同時將絕大多數復制相同數據的操作限定在本節點所在的集群內,達到減少對網絡上其他節點的影響的效果。
本申請第三實施例提供一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的方法,其流程圖如圖6所示。所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定。
本實施例以圖4所示的數據源地址分發樹“aaaaa/bbbbb”為例進行說明。
步驟s301,檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常。
檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常可以有多種方式,本實施例提供兩種方案如下:
一,接收發送者發送的數據時,判斷所述數據的發送者是否為本節點存儲的本節點在所述數據源地址分發樹中的父節點,若所述數據的發送者不是本節點存儲的本節點在所述數據源地址分發樹中的父節點,則本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常。
當節點進行數據接收時,若所述數據的發送者與本節點存儲的在數據源地址分發樹“aaaaa/bbbbb”中的父節點不一致,則本節點存儲的本節點在數據源地址分發樹“aaaaa/bbbbb”中的父節點信息異常。
在接收數據時對本節點存儲的本節點在指定的數據源地址分發樹中的父節點進行驗證,能夠起到提高安全性和可靠性的作用。
二,以設定的時間間隔向本節點存儲的本節點在所述數據源地址分發樹中的父節點發送狀態更新請求,判斷所述狀態更新請求是否失敗,若所述狀態更新請求失敗,則本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常。
本節點(以15.170.170.4為例)周期性地向存儲于本節點的其在數據源地址分發樹“aaaaa/bbbbb”中存儲其的存儲節點的父節點所存儲的節點 (15.170.170.2)發送狀態更新請求,若所述狀態更新請求在設定的時長內沒有收到相應的響應信息或在設定的時長內沒有收到相應的響應信息,且多次狀態更新請求連續沒有收到響應信息的次數超過設定的值,則認為狀態更新請求失敗,本節點(15.170.170.4)存儲的本節點(15.170.170.4)在指定的數據源地址分發樹中的父節點(15.170.170.2)信息異常。
在沒有進行數據復制的操作的情況下,周期性地對本節點存儲的本節點在指定的數據源地址分發樹中的父節點進行驗證,能夠及時同步本節點在數據源地址分發樹中的父節點信息,提高系統的可靠性。
步驟s302,向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求。
對于檢測到本節點存儲的本節點在指定的數據源地址分發樹“aaaaa/bbbbb”中的父節點信息異常的情況,除了及時向數據源地址分發樹中心控制節點請求更新外,對于周期性地對本節點存儲的本節點在指定的數據源地址分發樹“aaaaa/bbbbb”中的父節點進行驗證的情況下檢測到異常的情況,如節點15.170.170.4檢測到在在指定的數據源地址分發樹中其父節點15.170.170.2異常的情況,在向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹“aaaaa/bbbbb”中的親屬節點信息的請求中包含本節點(15.170.170.4)在所述數據源地址分發樹中的父節點(15.170.170.2)失效信息,即報告給數據源地址分發樹中心控制節點,在所述數據源地址分發樹中,存儲本節點(15.170.170.4)的存儲節點的父節點所存儲的節點(15.170.170.2)失效。這樣能夠及時同步數據源地址分發樹中,為后續其他節點復制數據時查詢數據源地址提前做好準備,起到提高可靠性的效果。
步驟s303,接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點的信息;
數據源地址分發樹中心控制節點收到查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求后,會進行相應的處理并將處理后請求節點在其所維護的所述數據源地址分發樹中的親屬節點信息反饋給請求節點。
步驟s304,用數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點更新本節點存儲的本節點在所述數據源地址分發樹中的父節點信息。
收到數據源地址分發樹中心控制節點反饋的父節點信息后,本節點用其更 新自己存儲的其在所述數據源地址分發樹中的父節點信息。
與其他實施例提供的方法類似,本實施例提供的方法也可以用于分布式計算機系統內各個接待你的數據部署。能夠起到提高系統可用性,可靠性的效果。
本申請第四實施例提供一種用于數據發送方法,其流程圖如圖7所示。
步驟s401,接收請求者發送的復制數據請求,所述數據由數據的標識所確定。
以節點15.170.170.2收到15.170.170.4的復制數據“bbbbb”為例進行說明。
步驟s402,查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定。
節點15.170.170.2判斷復制數據的請求者15.170.170.4是否為其在由請求者節點所請求的數據標識(“bbbbb”)和本節點所在組(集群)標識(如“aaaaa”)所確定的數據源地址分發樹“aaaaa/bbbbb”中的子節點。
對于本節點屬于不同組(集群)的情況,需要對更多的數據源地址分發樹做判斷,如本節點不僅僅屬于集群“aaaaa”,還可能屬于集群“ccccc”,若請求者節點不是本節點在數據源地址分發樹“aaaaa/bbbbb”中的子節點,則還需要判斷請求者節點是否為本節點在數據源地址分發樹“ccccc/bbbbb”中的子節點。
查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點的方式可以有多種,本實施例提供以下兩種方式并分別進行說明:
一,向數據源地址分發樹中心控制節點發送查詢本節點在指定的數據源地址分發樹中的親屬節點請求;接收并存儲數據源地址分發樹中心控制節點發送的子節點信息。
二,查詢本節點存儲的本節點在指定的數據源地址分發樹中的子節點信息。
步驟s403,若復制數據請求的發送者為本節點在指定的數據源地址分發樹中的子節點,則向該復制數據請求的發送者發送其所請求的數據。
當15.170.170.2判斷復制數據的請求者15.170.170.4為其在數據源地址分發樹中心控制節點的數據源地址分發樹中存儲其的存儲節點的子節點所存儲 的節點時或15.170.170.4為15.170.170.2所存儲的15.170.170.2在數據源地址分發樹中的子節點,向其發送其所請求的數據。
本實施例提供的方法,可以用于分布式計算機系統內各個節點的數據部署。能夠起到提高安全性,可靠性的效果。
本申請的第五實施例提供一種數據源地址分發樹的構造裝置,其結構框圖如圖8所示,該裝置包括,接收單元u501,構造單元u502,和發送單元u503。
所述接收單元u501,用于接收請求者發送的查詢所述請求者在指定的數據源地址分發樹中的親屬節點信息的請求,所述請求者由其標識所確定,所述指定的數據源地址分發樹由數據源地址分發樹標識所確定。
構造單元u502,用于將所述請求者作為新節點加入所述數據源地址分發樹。
所述發送單元u503,用于將所述請求者對應的節點的父節點和子節點的信息發送給所述請求者。
本申請第六實施例提供一種用于復制數據的裝置,其結構框圖如圖9所示,該裝置包括獲取單元u601,獲得單元u602,發送單元u603和接收單元u604。
所述獲取單元u601,用于獲取復制數據到本節點的請求,所述請求包括數據的標識以及數據的原始地址。
所述獲得單元u602,用于獲得本節點在指定的數據源地址分發樹中的父節點信息,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定。
所述發送單元u603,用于根據本節點在指定的數據源地址分發樹中父節點的信息,發送相應的復制所述數據的請求。
所述接收單元u604,用于接收所述數據到本節點。
本申請第七實施例提供一種更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和所述請求者所在的組的標識所確定,該裝置的結構框圖如圖10所示,該裝置包括檢測單元u701,查詢單元u702,接收單元u703和更新單元u704。
所述檢測單元u701,用于檢測到本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息異常。
所述查詢單元u702,用于向數據源地址分發樹中心控制節點發送查詢本節點在所述數據源地址分發樹中的親屬節點信息的請求。
所述接收單元u703,用于接收數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點的信息。
所述更新單元u704,用于用數據源地址分發樹中心控制節點發送的本節點在所述數據源地址分發樹中的父節點更新本節點存儲的本節點在所述數據源地址分發樹中的父節點信息。
本申請第八實施例提供一種用于數據發送的裝置,其結構框圖如圖11所示,該裝置包括接收單元u801,查詢單元u802和發送單元u803。
所述接收單元u801,用于接收請求者發送的復制數據請求,所述數據由數據的標識所確定。
所述查詢單元u802,用于查詢復制數據請求的發送者是否為本節點在指定的數據源地址分發樹中的子節點,所述指定的數據源地址分發樹由數據源地址分發樹的標識所確定,所述數據源地址分發樹的標識由所述數據的標識和本節點所在的組的標識所確定。
所述發送單元u803,用于若復制數據請求的發送者為本節點在指定的數據源地址分發樹中的子節點,則向該復制數據請求的發送者發送其所請求的數據。
本申請第九實施例提供一種數據源地址分發系統,其結構框圖如圖12所示,該系統包括數據源地址分發樹的構造裝置e901、用于復制數據的裝置e902、更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置e903和用于數據發送的裝置e904。所述數據源地址分發樹的構造裝置e901位于數據源地址分發樹中心控制端;所述用于復制數據的裝置e902、更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置e903和用于數據發送的裝置e904位于數據源地址請求端。
所述數據源地址分發樹中心控制端和所述數據源地址請求端之間通過網絡相互連接。
所述數據源地址請求端可以有多個,并且多個數據源地址請求端之間通過網絡相互連接。
所述數據源地址分發樹的構造裝置e901的功能可以參考本申請第五實施例所述。
所述用于復制數據的裝置e902的功能可以參考本申請第六實施例所述。
所述更新本節點存儲的本節點在指定的數據源地址分發樹中的父節點信息的裝置和用于數據發送的裝置e903的功能可以參考本申請第七實施例所述。
所述用于數據發送的裝置e904的功能可以參考本申請第八實施例所述。
本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領域技術人員在不脫離本申請的精神和范圍內,都可以做出可能的變動和修改,因此本申請的保護范圍應當以本申請權利要求所界定的范圍為準。
在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。
1、計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態隨機存取存儲器(sram)、動態隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(cd-rom)、數字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitorymedia),如調制的數據信號和載波。
2、本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、 光學存儲器等)上實施的計算機程序產品的形式。