技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种基于TTL值分组的DNS缓存资源管理方法、系统和产品与流程  >  正文

一种基于TTL值分组的DNS缓存资源管理方法、系统和产品与流程

  • 国知局
  • 2024-12-06 12:10:31

本技术涉及计算机,特别是涉及一种dns缓存资源管理方法。

背景技术:

1、通常的dns递归服务器,会支持对递归后获取的dns资源记录进行缓存,以便提升自身性能,同时缓解给权威服务器的造成的压力。缓存通常通过过期时间(即ttl值)控制,来定义该缓存数据的可用时间。在引入缓存到之后ttl值对应的时间(通常以秒为单位)内,dns递归查询可以直接从缓存数据应答,缓存过期后会进行递归并重新引入缓存。

2、缓存的副作用是一段时间内无法获取权威服务器可能已更新的数据,所以缓存清除是递归服务器的一个很常见的操作。当前典型的dns服务器,在针对全局缓存清除时,会立即将所有数据同时清除,让接下来的所有查询都立即重新向权威服务器请求,并获取最新数据。这样做的好处是数据一致性可以以较快的速度达成,但另一方面,对于一个查询请求量很大的递归服务器,突然清空缓存会造成瞬间巨大的查询压力。因为递归查询的性能会比从缓存数据库中命中低得多,这样可能导致部分查询请求无法被处理。此时突然增大的递归查询量,也会将影响传导给递归的目标,也就是权威服务器,造成一系列影响。

技术实现思路

1、本技术提供一种基于ttl值分组的dns缓存资源管理方法、装置、计算机设备和计算机程序产品,旨在解决现有技术dns服务器全局缓存清除过程不够平稳,会造成性能问题的问题。

2、第一方面,一种基于ttl值分组的dns缓存资源管理方法,所述方法包括:

3、在接收到全局缓存清除操作指令时,更新缓存数据库中预先定义的last-flush字段和instance-id字段;所述last-flush字段表示上一次全局缓存清除操作的时间戳,用于记录上一次全局缓存清除操作发生的起始时刻,更新last-flush字段即更改为当前的系统时间戳;所述instance-id字段为缓存数据库的数据实例版本号,初始值为0,每次更新则在原有基础上加1;

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按照一定规则进行分组,达成整体缓存数据库中的数据分批逐步被清除的效果,避免全局缓存清除造成的dns解析波动,改善dns递归服务器全局缓存数据清除方式。

24、本技术还为ttl值引入一个随机值,通过随机值的引入,确保各个缓存记录的ttl值分布基本均匀,避免出现较为集中的情况,减轻系统压力的同时,由于缓存数据的过期时间基本均匀分布,系统处理缓存失效请求的负担也会更加平滑,避免系统资源的突然激增和骤降,提高系统的稳定性和可预测性。

本文地址:https://www.jishuxx.com/zhuanli/20241204/339770.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。