一種多層級共享緩存的遞歸域名服務系統(tǒng)和方法
【技術領域】
[0001]本發(fā)明屬于網絡技術、域名系統(tǒng)技術領域,具體涉及一種多層級共享緩存的遞歸域名服務系統(tǒng)和方法。
【背景技術】
[0002]域名系統(tǒng)(Domain Name System,簡稱DNS)是互聯(lián)網重要的基礎設施,實現(xiàn)域名和IP地址的映射轉換。當前,互聯(lián)網上絕大多數(shù)應用均依賴域名系統(tǒng)提供的尋址和定位服務。域名系統(tǒng)的解析速率直接影響網絡的訪問速度和用戶的上網體驗。域名體系是一個逐級授權的分布式數(shù)據(jù)查詢系統(tǒng),包括權威域名服務系統(tǒng)和遞歸域名服務系統(tǒng)兩個環(huán)節(jié)。
[0003]在域名體系中,遞歸域名服務系統(tǒng)直接面向客戶端應用提供域名解析服務,其接收來自客戶端應用的域名查詢請求,并按照根域名系統(tǒng)、頂級域名系統(tǒng)、權威域名系統(tǒng)的次序進行逐級查詢,最后將查詢到的資源記錄返回給客戶端應用(域名查詢工作原理如圖1所示)。為了提高域名解析速率,縮短域名查詢時延,遞歸服務器通常會將每次查詢的域名資源緩存下來。同時,在域名協(xié)議設計和DNS解析軟件實現(xiàn)中,每個資源記錄都有一個短到幾秒鐘,長到幾天不等的生存周期(Time to Live,簡稱TTL)屬性值。該TTL值會隨著本地服務器的時鐘周期逐步遞減,一旦資源記錄的TTL到期,則該資源記錄將從內存緩存區(qū)刪除。如某一被請求查詢的資源記錄在生存周期之內,且遞歸服務器緩存區(qū)有該資源記錄(即緩存命中),則遞歸服務器會直接使用緩存區(qū)內的資源記錄進行應答,不再向各級權威域名服務器請求結果。如果被查詢的域名資源記錄不在緩存區(qū)中(即緩存未命中),則遞歸服務器會采用迭代查詢方式依次去向各級權威域名系統(tǒng)進行查詢。遞歸服務器的這種緩存機制有效降低了服務器端的負載和查詢延遲,同時在一定程度上也提高了遞歸服務器的性會K。
[0004]出于提升服務性能的考慮,在實際部署遞歸服務器過程中通常采用“緩存”(cache)和“轉發(fā)”(forward)兩層服務模式,即在前端部署一層緩存服務器(亦稱為cache服務器),后端部署一層轉發(fā)服務器(亦稱forward服務器)。其中緩存服務器主要依賴本地緩存區(qū)的資源記錄為用戶提供服務,如果本地服務器的內存緩存區(qū)未命中,則緩存服務器會將域名查詢請求轉發(fā)給后端的轉發(fā)服務器。在這種兩層的服務模式中,通過會將前端的緩存服務器的緩存區(qū)設置為一個較大的值,進而可以記錄或緩存更多的域名資源記錄,以此可以大幅縮短域名查詢的時延。
[0005]實際上,在遞歸域名系統(tǒng)建設部署過程中,出于安全災備和負載均衡的考慮,遞歸服務系統(tǒng)通常多采用機群架構,即前端會部署同時多臺緩存服務器對外提供查詢服務,后端會部署多臺轉發(fā)服務器提供迭代查詢服務。但是,按照這種部署架構,前端提供查詢服務的每一臺緩存服務器僅能使用本地的緩存區(qū),而無法有效利用該機群內其他緩存服務器的緩存區(qū)數(shù)據(jù)。假設某一待查詢域名資源記錄在緩存服務器A的緩存區(qū)未命中,即使同一機群內的緩存服務器B的緩存區(qū)請求的的資源記錄,則由于不同緩存服務器之間缺乏緩存(數(shù)據(jù))共享機制,在這種情況下,緩存服務器A也只能將查詢請求轉發(fā)給后端的轉發(fā)服務器進行迭代查詢。因迭代查詢耗時要明顯高于本地緩存命中,這必然導致域名查詢時延的增大,間接影響就是用戶可能打開一個網頁速度很慢。
【發(fā)明內容】
[0006]針遞歸域名系統(tǒng)內的不同緩存服務器無法共享域名緩存區(qū)資源記錄,本發(fā)明旨在提出一種可以實現(xiàn)不同緩存服務器共享緩存的技術方法和服務模型,提高域名緩存命中率,減少域名查詢總的時延。
[0007]為實現(xiàn)上述目的,本發(fā)明采用的技術方案如下:
[0008]一種多層級共享緩存的遞歸域名服務系統(tǒng),其特征在于,包括一級緩存服務器、二級緩存服務器以及轉發(fā)服務器;
[0009]所述一級緩存服務器接收來自客戶端的域名查詢請求,并檢查本地服務器的緩存區(qū)是否有請求的資源記錄,如果緩存區(qū)命中則直接將資源記錄應答給客戶端,如果緩存區(qū)未命中則將域名查詢請求轉發(fā)給所述二級緩存服務器;
[0010]所述二級緩存服務器匯集前端所有一級緩存服務器的緩存記錄,在收到一級緩存服務器轉發(fā)的域名查詢請求后,檢查本地服務器緩存區(qū),如果本地緩存區(qū)有請求的資源記錄則直接返回數(shù)據(jù)給一級緩存服務器,否則將域名查詢請求轉給所述轉發(fā)服務器;
[0011]所述轉發(fā)服務器接收來自二級緩存服務器的查詢請求,并進行迭代查詢,最后將查詢到的資源記錄返回二級緩存服務器,二級緩存服務器緩存查詢結果并返回查詢結果給一級緩存服務器,一級緩存服務器緩存查詢結果并將查詢結果返回給客戶端。
[0012]進一步地,上述系統(tǒng)包括數(shù)據(jù)采集模塊、同步控制模塊和驗證加載模塊;所述數(shù)據(jù)采集模塊部署在一級緩存服務器上,負責一級緩存服務器緩存區(qū)資源記錄的導出以及本地服務器緩存資源記錄文件的維護管理;所述同步控制模塊部署在一級緩存服務器和二級緩存服務器上,負責進行一級緩存服務器和二級緩存服務器的數(shù)據(jù)同步;所述數(shù)據(jù)加載模塊部署在二級緩存服務器上,負責驗證接收的資源記錄格式的正確性、資源記錄的合并處理,以及合并后資源記錄的內存加載工作,并與本地服務器上的DNS解析進程通信。
[0013]一種多層級共享緩存的遞歸域名服務方法,適用于上述系統(tǒng),該方法的步驟包括:
[0014]I) 一級緩存服務器接收來自客戶端的域名查詢請求,并檢查本地服務器的緩存區(qū)是否有請求的資源記錄,如果緩存區(qū)命中則直接將資源記錄應答給客戶端,如果緩存區(qū)未命中則將域名查詢請求轉發(fā)給二級緩存服務器;
[0015]2) 二級緩存服務器匯集前端所有一級緩存服務器的緩存記錄,在收到一級緩存服務器轉發(fā)的域名查詢請求后,檢查本地服務器緩存區(qū),如果本地緩存區(qū)有請求的資源記錄則直接返回數(shù)據(jù)給一級緩存服務器,否則將域名查詢請求轉給轉發(fā)服務器;
[0016]3)轉發(fā)服務器接收來自二級緩存服務器的查詢請求,并進行迭代查詢,最后將查詢到的資源記錄返回二級緩存服務器,二級緩存服務器緩存查詢結果并返回查詢結果給一級緩存服務器,一級緩存服務器緩存查詢結果并將查詢結果返回給客戶端。
[0017]本發(fā)明技術方案的關鍵點如下:
[0018](I)建立了一種兩層級的遞歸緩存服務模式,一級緩存服務器可以將本地的緩存資源記錄傳輸給后端的二級緩存服務器,由于一般采用了這種多對一的方式,可以實現(xiàn)一級緩存服務器資源記錄的在二級緩存服務器的共享;
[0019](2) 一級緩存服務器和二級緩存服務器進行數(shù)據(jù)同步時,同步控制模塊設有共享鎖,對共享緩存記錄文件進行保護,防止多個程序或進程同時去讀寫共享緩存文件導致的死鎖;
[0020](3) 一級緩存服務器和二級緩存服務器進行數(shù)據(jù)同步前,會進行文件序列號大小(或新舊)的對比,避免無效的數(shù)據(jù)同步,節(jié)省網絡帶寬資源;
[0021](4) 二級緩存服務器會將一級緩存服務器的緩存資源記錄放在本地硬盤而不是直接寫入服務器內存,防止因資源記錄格式錯誤導致的本地服務器DNS解析異常;
[0022](5) 一級緩存服務器在將本機內存中緩存資源記錄寫入本地硬盤文件后,會做一次預處理檢查,會將TTL馬上到期的資源記錄從該文件中刪除。
[0023]本發(fā)明設計的服務模型和技術方案可以建立一種多層級的緩存服務器架構,在一定程度上可以實現(xiàn)不同緩存服務器之間緩存資源記錄的共享,顯著提高域名緩存命中率,縮短域名解析時延。
【附圖說明】
[0024]圖1是現(xiàn)有技術中域名解析工作原理圖。
[0025]圖2是本發(fā)明的多層級共享緩存服務架構圖。
[0026]圖3是本發(fā)明的系統(tǒng)工作模塊圖。
[0027]圖4是本發(fā)明的工作原理流程圖。
【具體實施方式】
[0028]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面通過具體實施例和附圖,對本發(fā)明做進一步說明。
[0029]1.系統(tǒng)架構
[0030]首先,在系統(tǒng)架構方面本發(fā)明提出了一個三層次的遞歸域名服務系統(tǒng),三個層次分別為:一級緩存服務器、二級緩存服務器以及轉發(fā)服務器,如圖2所示。
[0031]2.功能模塊
[0032]按照圖2所示的系統(tǒng)架構,為了提高域名緩存服務器中的命中率,關鍵是建立二級緩存服務器大緩存區(qū)并將一級緩存服務器的緩存記錄進行匯聚共享。為實現(xiàn)緩存數(shù)據(jù)的共享,并保證數(shù)據(jù)的一致性,本部分將詳細說明該系統(tǒng)的各工作模塊及功能介紹。系統(tǒng)包括三個功能模塊,分別為數(shù)據(jù)采集模塊、同步控制模塊和驗證加載模塊,如圖3所示:
[0033]三個功能模塊的詳細說明如下:
[0034](I)數(shù)據(jù)采集模塊
[0035]該功能模塊部署在一級緩存服務器上,負責一級緩存服務器緩存區(qū)資源記錄的導出以及本地服務器緩存資源記錄文件的維護管理工作。數(shù)據(jù)采集模塊包括兩個(功能)進程,一個進程負責定期(如每30分鐘執(zhí)行一次)發(fā)送請求,將本地服務器DNS解析進程的內存緩存記錄導出并寫入本地硬盤,另一個進程則對導出的緩存區(qū)資源記錄進行預處理,將TTL馬上到期的資源記錄刪除。
[0036](2)同步控制模塊
[0037]該功能模塊部署在一級緩存服務器和二級緩存服務器上,用于實現(xiàn)一級緩存服務器和二級緩存服務器的數(shù)據(jù)同步。該功能模塊包括客戶端進程和服務器端進程兩部分,客戶端進程負責與服務器端進行通信交互。在每次數(shù)據(jù)同步前,雙方會進行通信確認是否需要進行數(shù)據(jù)同步。如果同步控制模塊的服務器端進程允許數(shù)據(jù)同步傳輸,則客戶端進程會與服務器端進程建立TCP連接,并傳輸數(shù)據(jù)。服務器端進程在接收完數(shù)據(jù)后,會進行MD5校驗,確保傳輸數(shù)據(jù)的正確性。
[0038](3)數(shù)據(jù)加載模塊
[0039]該模塊部署在二級緩存服務器上,負責驗證接收的資源記錄格式的正確性、資源記錄的合并處理,以及合并后資源記錄的內存加載工作。數(shù)據(jù)加載模塊會與本地服務器上的DNS解析進程通信。
[0040]3.工作原理
[0041]根據(jù)各模塊的功能說明,本發(fā)明提出的基于多層級共享緩存的遞歸域名服務模型的工作流程如圖4所示,工作原理如下:
[0042]前端是由一級緩存服務器組成的服務機群,機群采用負載均衡技術,接收來自客戶端的域名查詢請求。該機群的一級緩存服務器在接受到域名查詢請求后,首先會檢查本地服務器的緩存區(qū)是否有請求的資源記錄,如果緩存區(qū)命中,則一級緩存服務器直接將資源記錄應答給客戶端;如果緩存區(qū)未命中,則域名查詢請求會轉發(fā)給后面任一