System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及計算機,特別是涉及一種dns緩存資源管理方法。
技術介紹
1、通常的dns遞歸服務器,會支持對遞歸后獲取的dns資源記錄進行緩存,以便提升自身性能,同時緩解給權威服務器的造成的壓力。緩存通常通過過期時間(即ttl值)控制,來定義該緩存數據的可用時間。在引入緩存到之后ttl值對應的時間(通常以秒為單位)內,dns遞歸查詢可以直接從緩存數據應答,緩存過期后會進行遞歸并重新引入緩存。
2、緩存的副作用是一段時間內無法獲取權威服務器可能已更新的數據,所以緩存清除是遞歸服務器的一個很常見的操作。當前典型的dns服務器,在針對全局緩存清除時,會立即將所有數據同時清除,讓接下來的所有查詢都立即重新向權威服務器請求,并獲取最新數據。這樣做的好處是數據一致性可以以較快的速度達成,但另一方面,對于一個查詢請求量很大的遞歸服務器,突然清空緩存會造成瞬間巨大的查詢壓力。因為遞歸查詢的性能會比從緩存數據庫中命中低得多,這樣可能導致部分查詢請求無法被處理。此時突然增大的遞歸查詢量,也會將影響傳導給遞歸的目標,也就是權威服務器,造成一系列影響。
技術實現思路
1、本申請提供一種基于ttl值分組的dns緩存資源管理方法、裝置、計算機設備和計算機程序產品,旨在解決現有技術dns服務器全局緩存清除過程不夠平穩,會造成性能問題的問題。
2、第一方面,一種基于ttl值分組的dns緩存資源管理方法,所述方法包括:
3、在接收到全局緩存清除操作指令時,更新緩存數據庫中預先定義的l
4、緩存數據庫轉入數據分批失效的階段,直至到達預先設定的全局的清除窗口時限,所述窗口時限記為flush-over-time;所述緩存數據庫中的每個緩存數據對應的數據結構均包含有各自的ttl字段和實例版本號字段,其中緩存數據的實例版本號對應其被添加時的緩存數據庫的數據實例版本號;
5、在分批失效階段,當響應于dns查詢請求并在緩存數據庫中找到相關緩存數據時,根據該緩存數據的實例版本號和ttl值、緩存數據庫的數據實例版本號instance-id和時間戳last-flush以及窗口時限flush-over-time進行邏輯判斷,來認定該緩存數據是否失效;若認定為失效數據,則忽略該緩存數據,觸發遞歸查詢,將遞歸查詢獲得的數據返回請求方并存入緩存數據庫;
6、在分批失效階段結束后,當響應于dns查詢請求并在緩存數據庫中找到相關緩存數據時,僅判斷該緩存數據的實例版本號是否小于緩存數據庫的數據實例版本號,若小于,則認為該緩存數據已失效,觸發遞歸查詢,將遞歸查詢獲得的數據返回請求方并存入緩存數據庫。
7、上述方案中,可選地,所述根據該緩存數據的實例版本號、緩存數據庫的數據實例版本號、以及緩存數據庫中的last-flush字段以及窗口時限flush-over-time進行邏輯判斷,來認定該緩存數據是否失效,具體包括:
8、檢查緩存數據的實例版本號,若等于緩存數據庫的instance-id,則認為該緩存數據是最新數據,不涉及是否被清除過的問題,僅判斷該緩存數據的ttl是否在有效期內即可;
9、檢查緩存數據的ttl值,若發現ttl本身已經過期,則會忽略該緩存數據,觸發遞歸查詢,將遞歸查詢獲得的數據返回請求方并存入緩存數據庫;
10、若緩存數據的ttl仍在有效期內,且緩存數據的實例版本號小于緩存數據庫的instance-id,則進一步判斷此數據是否已在分批失效過程中失效;判斷方法是若數據分批失效階段的剩余時間t2小于緩存數據在分批失效階段的有效截止點t1時,對應t1已經失效,即該緩存數據失效,應繼續觸發遞歸流程,否則代表該緩存數據仍然可用;
11、其中,t1由緩存數據的ttl值與flush-over-time值取余得到,t2的計算公式是
12、t2=flush-over-time-(n-last-flush)
13、n表示當前時間的時間戳。
14、上述方案中,可選地,所述緩存數據的ttl值為數據存入緩存數據庫時的系統時間戳加上一個隨機值,隨機值的范圍是[0,flush-over-time),使各個緩存數據的ttl值分布基本均勻。
15、上述方案中,可選地,當緩存數據庫空間有限且新數據需要被加入時,根據緩存數據的實例版本號,相應覆蓋失效數據。
16、上述方案中,進一步可選地,所述根據緩存數據的實例版本號,相應覆蓋失效數據,是利用lru算法選擇最久未被訪問的數據項進行替換。
17、第二方面,一種基于基于ttl值分組的dns緩存資源管理系統,所述系統包括:
18、字段更新模塊,用于在接收到全局緩存清除操作指令時,更新緩存數據庫中預先定義的last-flush字段和instance-id字段;緩存數據庫轉入數據分批失效的階段,直至到達預先設定的全局的清除窗口時限,所述窗口時限記為flush-over-time;所述緩存數據庫中的每個緩存數據對應的數據結構均包含有各自的ttl字段和實例版本號字段,其中緩存數據的實例版本號對應其被添加時的緩存數據庫的數據實例版本號;
19、緩存數據清除模塊,用于在分批失效階段,當響應于dns查詢請求并在緩存數據庫中找到相關緩存數據時,根據該緩存數據的實例版本號和ttl值、緩存數據庫的數據實例版本號instance-id和時間戳last-flush以及窗口時限flush-over-time進行邏輯判斷,來認定該緩存數據是否失效;若認定為失效數據,則忽略該緩存數據,觸發遞歸查詢,將遞歸查詢獲得的數據返回請求方并存入緩存數據庫;以及,在分批失效階段結束后,當響應于dns查詢請求并在緩存數據庫中找到相關緩存數據時,僅判斷該緩存數據的實例版本號是否小于緩存數據庫的數據實例版本號,若小于,則認為該緩存數據已失效,觸發遞歸查詢,將遞歸查詢獲得的數據返回請求方并存入緩存數據庫。
20、第三方面,一種計算機設備,包括存儲器、處理器及存儲在存儲器上的計算機程序,所訴處理器執行所述計算機程序以實現如第一方面所述方法的步驟。
21、第四方面,一種計算機程序產品,包括計算機程序/指令,該計算機程序/指令被處理器執行時實現如第一方面所述方法的步驟。
22、相比現有技術,本申請至少具有以下有益效果:
23、本申請基于對現有技術問題的進一步分析和研究,認識到當前典型的dns服務器,在針對全局緩存清除時,會立即將所有數據同時清除,所有數據同時清除的清除過程不夠平穩,會造成性能問題,本申請通過基于對緩存數據的ttl按照一定本文檔來自技高網...
【技術保護點】
1.一種基于TTL值分組的DNS緩存資源管理方法,其特征在于,包括:
2.根據權利要求1所述的基于TTL值分組的DNS緩存資源管理方法,其特征在于,所述根據該緩存數據的實例版本號、緩存數據庫的數據實例版本號、以及緩存數據庫中的last-flush字段以及窗口時限flush-over-time進行邏輯判斷,來認定該緩存數據是否失效,具體包括:
3.根據權利要求1所述的基于TTL值分組的DNS緩存資源管理方法,其特征在于,所述緩存數據的TTL值為數據存入緩存數據庫時的系統時間戳加上一個隨機值,隨機值的范圍是[0,flush-over-time),使各個緩存數據的TTL值分布基本均勻。
4.根據權利要求1所述的基于TTL值分組的DNS緩存資源管理方法,其特征在于,當緩存數據庫空間有限且新數據需要被加入時,根據緩存數據的實例版本號,相應覆蓋失效數據。
5.根據權利要求4所述的基于TTL值分組的DNS緩存資源管理方法,其特征在于,所述根據緩存數據的實例版本號,相應覆蓋失效數據,是利用LRU算法選擇最久未被訪問的數據項進行替換。
6
7.一種計算機設備,包括存儲器、處理器及存儲在存儲器上的計算機程序,其特征在于,所訴處理器執行所述計算機程序以實現權利要求1所述方法的步驟。
8.一種計算機程序產品,包括計算機程序/指令,其特征在于,該計算機程序/指令被處理器執行時實現權利要求1所述方法的步驟。
...【技術特征摘要】
1.一種基于ttl值分組的dns緩存資源管理方法,其特征在于,包括:
2.根據權利要求1所述的基于ttl值分組的dns緩存資源管理方法,其特征在于,所述根據該緩存數據的實例版本號、緩存數據庫的數據實例版本號、以及緩存數據庫中的last-flush字段以及窗口時限flush-over-time進行邏輯判斷,來認定該緩存數據是否失效,具體包括:
3.根據權利要求1所述的基于ttl值分組的dns緩存資源管理方法,其特征在于,所述緩存數據的ttl值為數據存入緩存數據庫時的系統時間戳加上一個隨機值,隨機值的范圍是[0,flush-over-time),使各個緩存數據的ttl值分布基本均勻。
4.根據權利要求1所述的基于ttl值分組的dns緩存...
【專利技術屬性】
技術研發人員:陳超,蔣超,朱睿爽,邢志杰,毛偉,
申請(專利權)人:互聯網域名系統北京市工程研究中心有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。