本發(fā)明涉及計算機技術(shù),尤其涉及一種分布式域名系統(tǒng)(Domain Name System,簡稱:DNS)節(jié)點數(shù)據(jù)一致性同步方法和裝置。
背景技術(shù):
DNS作為域名和網(wǎng)絡(luò)協(xié)議(Internet Protocol,簡稱:IP)地址相互映射的一個分布式數(shù)據(jù)庫,能夠使用戶更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機器直接讀取的IP數(shù)串。隨著網(wǎng)絡(luò)應(yīng)用的普及和發(fā)展,DNS服務(wù)器上所要處理的數(shù)據(jù)量逐漸增大,從而影響了針對用戶的響應(yīng)效率,造成對訪問者的請求回應(yīng)越來越慢等嚴(yán)重影響域名解析服務(wù)質(zhì)量的現(xiàn)象,在服務(wù)器端則直接表現(xiàn)為可容納的新增連接數(shù)越來越小,系統(tǒng)性能嚴(yán)重下降。
現(xiàn)有技術(shù)中,通過在分布式DNS系統(tǒng)中,將DNS節(jié)點分類,同類DNS節(jié)點組成一個組群為特定用戶提供服務(wù),從而提高針對用戶的響應(yīng)效率,提高域名解析服務(wù)質(zhì)量。
然而,采用現(xiàn)有技術(shù)的方法,同類DNS節(jié)點之間可能會由于某些原因造成數(shù)據(jù)不一致的現(xiàn)象,過一段時間后,系統(tǒng)中的不同DNS服務(wù)器就不能提供統(tǒng)一并一致性的域名解析服務(wù),并造成網(wǎng)絡(luò)訪問異常。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種分布式DNS節(jié)點數(shù)據(jù)一致性同步方法和裝置,以使同類的DNS節(jié)點的數(shù)據(jù)保持一致性。
本發(fā)明第一方面提供一種分布式DNS節(jié)點數(shù)據(jù)一致性同步方法,包括:
第一域名系統(tǒng)DNS節(jié)點獲取至少一個第二DNS節(jié)點的任務(wù)標(biāo)識taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS;
若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié) 點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
在上述實施例中,所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步之后,還包括:
所述第一DNS節(jié)點將所述第一DNS節(jié)點的taskid值增加到所述最大taskid值。
在上述實施例中,述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步,包括:
所述第一DNS節(jié)點通過kademlia和距離分析算法獲取與所述第一節(jié)點距離最近的第二節(jié)點的IP地址,通過所述距離最近的第二節(jié)點與所述最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
在上述實施例中,所述第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值之前,還包括:
所述第一DNS節(jié)點根據(jù)kademlia算法分配與所述第一DNS節(jié)點的IP地址對應(yīng)的唯一標(biāo)識ID號,以哈希表條目將記錄存儲在所述第一DNS節(jié)點。
在上述實施例中,所述第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值之前,還包括:
所述第一DNS節(jié)點接收控制節(jié)點發(fā)送的建立區(qū)命令。
在上述實施例中,所述第一DNS節(jié)點接收控制節(jié)點發(fā)送的建立區(qū)命令之后,還包括:
所述第一DNS節(jié)點接收所述控制節(jié)點發(fā)送的更新記錄的消息命令;
所述第一DNS節(jié)點根據(jù)所述更新記錄的消息命令,更新所述第一DNS節(jié)點存儲的記錄,并將所述第一DNS節(jié)點的taskid值增加一個單位。
在上述實施例中,所述第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值,包括:
所述第一DNS節(jié)點以預(yù)設(shè)周期獲取至少一個第二DNS節(jié)點的taskid值。
本發(fā)明第二方面提供一種分布式DNS節(jié)點數(shù)據(jù)一致性同步裝置,包括:
獲取模塊,用于獲取至少一個第二DNS節(jié)點的任務(wù)標(biāo)識taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS;
同步模塊,用于若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
在上述實施例中,所述同步模塊還用于將所述第一DNS節(jié)點的taskid值增加到所述最大taskid值。
在上述實施例中,所述同步模塊具體用于通過kademlia和距離分析算法獲取與所述第一節(jié)點距離最近的第二節(jié)點的IP地址,通過所述距離最近的第二節(jié)點與所述最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
本發(fā)明提供的分布式DNS節(jié)點數(shù)據(jù)一致性同步方法和裝置,通過第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS;若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步,實現(xiàn)同類DNS節(jié)點自動發(fā)現(xiàn)其它同類節(jié)點并比較數(shù)據(jù)完整性,并通過節(jié)點之間的數(shù)據(jù)同步使同類的DNS的數(shù)據(jù)保持一致性,提升了域名解析服務(wù)的性能。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明的DHT網(wǎng)絡(luò)結(jié)構(gòu)示意圖;
圖2為本發(fā)明分布式DNS節(jié)點數(shù)據(jù)一致性同步方法實施例的流程示意圖;
圖3為本發(fā)明分布式DNS節(jié)點數(shù)據(jù)一致性同步裝置實施例的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而 不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”“第四”等(如果存在)是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
本發(fā)明在DNS分布式系統(tǒng)中,將DNS節(jié)點分類,同類節(jié)點組成一個分布式哈希表(Distributed Hash Table,簡稱:DHT)網(wǎng)絡(luò)為特定用戶提供服務(wù)每個DNS節(jié)點選用Kademlia算法來實現(xiàn)DHT功能,連入DHT網(wǎng)絡(luò)的用戶叫做節(jié)點(node),節(jié)點之間互相有路由記錄,因此只要和任何一個已經(jīng)在DHT網(wǎng)絡(luò)中的節(jié)點連接上,客戶端就可以尋找到更多的節(jié)點,從而連入網(wǎng)絡(luò)。本發(fā)明在不需要服務(wù)器的情況下,每個DNS節(jié)點負責(zé)一個范圍的路由,并負責(zé)存儲一部分數(shù)據(jù),從而實現(xiàn)整個DHT網(wǎng)絡(luò)的尋址和存儲;每個DNS節(jié)點保存自己執(zhí)行的taskid;同類DNS節(jié)點中認為taskid值最大者為數(shù)據(jù)的完整者,其它DNS節(jié)點如果taskid值較小,則通過DHT網(wǎng)絡(luò)同步數(shù)據(jù)。本發(fā)明通過DHT功能,實現(xiàn)同類DNS節(jié)點自動發(fā)現(xiàn)其它同類節(jié)點并比較數(shù)據(jù)完整性,并通過同類DNS節(jié)點之間的數(shù)據(jù)同步解決了數(shù)據(jù)不一致的情況,提升了區(qū)域DNS提供一致性解析服務(wù)的性能。本發(fā)明通過實現(xiàn)DHT的Kademlia算法使同類節(jié)點實現(xiàn)DHT功能,使各節(jié)點構(gòu)成一個DHT網(wǎng)絡(luò)。并通過控制節(jié)點向網(wǎng)絡(luò)中的各節(jié)點進行數(shù)據(jù)同步,并設(shè)置特征值(taskid)來標(biāo)記數(shù)據(jù)傳輸執(zhí)行次數(shù),以此來作為發(fā)現(xiàn)網(wǎng)絡(luò)中數(shù)據(jù)完整性節(jié)點的基礎(chǔ),若有特征值不一致的情況,節(jié)點之間會自動進行數(shù)據(jù)同步,提高了分布式DNS系統(tǒng)的可擴展性、可靠性和數(shù)據(jù)一致性,確保系統(tǒng)能夠提供正常穩(wěn)定的域名解析服務(wù),維護了DNS系統(tǒng)的安全運行。
圖1為本發(fā)明的DHT網(wǎng)絡(luò)結(jié)構(gòu)示意圖,如圖1所示,本實施例的網(wǎng) 絡(luò)架構(gòu)圖中僅示出了一個控制節(jié)點和3個DNS節(jié)點,3個DNS節(jié)點分別為節(jié)點A、節(jié)點B和節(jié)點C,控制節(jié)點和3個DNS節(jié)點之間,以及DNS節(jié)點之間可進行通信。
下面以具體地實施例對本發(fā)明的技術(shù)方案進行詳細說明。下面這幾個具體的實施例可以相互結(jié)合,對于相同或相似的概念或過程可能在某些實施例不再贅述。
圖2為本發(fā)明分布式DNS節(jié)點數(shù)據(jù)一致性同步方法實施例的流程示意圖,如圖2所示,本實施例由第一DNS節(jié)點執(zhí)行,本實施例中的第一DNS節(jié)點可以是DHT網(wǎng)絡(luò)中同類DNS節(jié)點中的任一DNS節(jié)點,第二DNS節(jié)點時與第一DNS節(jié)點的同類DNS節(jié)點中的非第一DNS節(jié)點。本實施例的方法如下:
S201:第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS。
在S201之前,第一DNS節(jié)點根據(jù)kademlia算法分配與第一DNS節(jié)點的IP地址對應(yīng)的唯一標(biāo)識ID號,以哈希表條目將記錄存儲在所述第一DNS節(jié)點,從而,實現(xiàn)DHT功能,同類DNS節(jié)點通過kademlia算法構(gòu)成一個DHT網(wǎng)絡(luò)。每個節(jié)點通過都被當(dāng)做一顆二叉樹的葉子,并且每一個節(jié)點的位置都由其ID值的最短前綴唯一的確定。
在初始啟動階段,控制節(jié)點向DHT網(wǎng)絡(luò)中的節(jié)點發(fā)送建立區(qū)命令,并進而發(fā)送更新記錄的消息命令,其中,更新記錄的消息命令包括:增加記錄、刪除記錄或修改記錄;第一DNS節(jié)點接收控制節(jié)點發(fā)送的建立區(qū)命令,并接收所述控制節(jié)點發(fā)送的更新記錄的消息命令;所述第一DNS節(jié)點根據(jù)所述更新記錄的消息命令,更新所述第一DNS節(jié)點存儲的記錄,并將所述第一DNS節(jié)點的taskid值增加一個單位。因為執(zhí)行的區(qū)數(shù)據(jù)命令操作是相同的,不出異常的話,同一個DHT網(wǎng)絡(luò)中各節(jié)點的taskid值應(yīng)當(dāng)相同;如果出現(xiàn)傳輸異常,某個節(jié)點的taskid值會小于正常節(jié)點的taskid值。
第一系統(tǒng)DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS,具體地,第一DNS節(jié)點可以以預(yù)設(shè)周期獲取至少一個第二DNS節(jié)點的taskid值。
S202:若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,說明第一DNS中的數(shù)據(jù)不是最新的數(shù)據(jù),最大taskid值的DNS節(jié)點的數(shù)據(jù)可以認為是最為完整的,因此,第一DNS節(jié)點與最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
由于連入DHT網(wǎng)絡(luò)的節(jié)點之間互相有路由記錄,因此只要和任何一個已經(jīng)在DHT網(wǎng)絡(luò)中的節(jié)點連接上,進行同步時,第一DNS節(jié)點通過kademlia和距離分析算法獲取與所述第一節(jié)點距離最近的第二節(jié)點的IP地址,通過所述距離最近的第二節(jié)點與所述最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
在執(zhí)行S202之后,還可以執(zhí)行S203。
S203:第一DNS節(jié)點將所述第一DNS節(jié)點的taskid值增加到所述最大taskid值。
本實施例,通過第一DNS節(jié)點獲取至少一個第二DNS節(jié)點的taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS;若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步,實現(xiàn)同類DNS節(jié)點自動發(fā)現(xiàn)其它同類節(jié)點并比較數(shù)據(jù)完整性,并通過節(jié)點之間的數(shù)據(jù)同步使同類的DNS的數(shù)據(jù)保持一致性,提升了域名解析服務(wù)的性能。
圖3為本發(fā)明分布式DNS節(jié)點數(shù)據(jù)一致性同步裝置實施例的結(jié)構(gòu)示意圖,本實施例的裝置包括獲取模塊301和同步模塊302,其中,獲取模塊301用于獲取至少一個第二DNS節(jié)點的taskid值,所述至少一個第二DNS節(jié)點與所述第一DNS節(jié)點屬于同類DNS;同步模塊302用于若所述至少一個第二DNS節(jié)點的taskid值中存在大于所述第一DNS節(jié)點的taskid值,則所述第一DNS節(jié)點與所述至少一個第二DNS節(jié)點中最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
在上述實施例中,所述同步模塊302還用于將所述第一DNS節(jié)點的taskid 值增加到所述最大taskid值。
在上述實施例中,所述同步模塊302具體用于通過kademlia和距離分析算法獲取與所述第一節(jié)點距離最近的第二節(jié)點的IP地址,通過所述距離最近的第二節(jié)點與所述最大taskid值的DNS節(jié)點進行數(shù)據(jù)同步。
本實施例的裝置,對應(yīng)地可用于執(zhí)行圖2所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。