基于协同过滤的DNS缓存推荐方法与流程

文档序号:24938484发布日期:2021-05-04 11:30阅读:99来源:国知局
基于协同过滤的DNS缓存推荐方法与流程

本发明涉及互联网域名技术领域,具体地,涉及一种基于协同过滤的dns缓存推荐方法。



背景技术:

在现有域名系统(domainnamesystem,简称:dns)下,为减轻dns服务器的压力并提高dns解析效率,通常客户端和dns递归服务器都会配套相应的缓存数据库,用于缓存查询得到的dns解析结果。带缓存数据库的dns解析流程如下:

1.客户端发起查询域名ip地址的dns请求,客户端会先访问客户端缓存并查询是否有这个域名的映射关系。如果有,就直接调用这个ip地址映射,完成域名解析。

2.当客户端缓存中不存在相应域名的映射关系时,则将进入递归dns服务器的缓存中进行查询,如果存在该域名的ip地址映射,则返回该结果,完成域名解析。

当递归服务器缓存中不存在相应域名的映射关系时,则发起迭代查询,逐级向权威服务器进行查询。最终完成本次dns解析请求,并将结果缓存到相应的缓存数据库中。一段时间内,相同域名的dns解析请求即可通过缓存直接返回结果。

然而,在现代互联网应用的使用过程中,客户端可能产生大量不同的域名解析请求。若采用背景技术中的方案,则针对每一个不同域名的dns请求都需要经过一次完整的dns解析过程。随着客户端数量和不同域名解析请求数量的增加,给dns服务器带来了巨大的负担,同时也加剧了产生延迟的风险。



技术实现要素:

针对现有技术的缺陷,本发明的目的是,提供一种基于协同过滤的dns缓存推荐方法,以解决现有技术中dns域名解析体系中,大量客户端发起的大量不同域名解析请求导致的dns服务器负载较高、影响查询效率的问题。

为解决上述技术问题,本发明采用的技术方案如下:

一种基于协同过滤的dns缓存推荐方法,包括:

基于客户端发起的多个dns解析请求,对解析域名之间的相似度及请求源间的相似度进行分析,保存相似度高的域名解析记录至服务端缓存;

对客户端再次发起的dns解析请求进行域名关联度判断,如判断为相同或相似,则返回目标域名及与该目标域名关联的其它多条域名解析记录至客户端;

客户端接收应答,缓存正常的应答,并根据服务端的策略推荐结果作为额外的缓存数据。

进一步地,对基于rfc1035中定义的dns消息格式进行扩展,推荐的与该目标域名关联的其它多条域名解析记录保存在dns报文的additional段中,并使用自定义opt进行封装。

进一步地,服务端在收到客户端发起的dns解析请求时,不断收集解析域名并记录,并基于协同过滤算法进行相似度分析,同时,对保存的相似表不断进行更新。

进一步地,将不同请求的域名设定为标的物,将请求源ip设定为用户,构建行为分析矩阵,并定义行向量和列向量分别为用户之间和标的物之间的评分相似度。

进一步地,在收集用户的dns解析请求,还收集域名解析请求的时间作为评分权重,设置脉冲检测机制,通过窗口阈值收集某客户端一段时间内发送的密集的请求,并根据请求时间的集中于否设置衰减,进而设置不同的域名评分。

其中,当不设置时间衰减时,通过隐式反馈算法来设置不同的域名评分。

进一步地,采用余弦相似度或jaccard相似度计算客户端之间和域名之间的关联性。

进一步地,请求源的ip需包含用户提供的edns-client-subnet。

进一步地,对解析域名的数量和请求源数量设置上限。

进一步地,对存在nat,或者请求源存在同时运行多个不同应用的客户端的情况下,客户端在发起dns解析请求时,通过opt主动携带包括辅助标识的额外信息。

与现有技术相比,本发明提供的一种基于协同过滤的dns缓存推荐方法,达到了如下技术效果:

1、本发明解决了在现有dns体系下由于大量客户端发起的大量不同域名解析请求导致的dns服务器高负载情况。客户端发起一次解析请求即可缓存目标域名及其关联的多条域名的记录,使得大部分解析请求可以通过缓存直接返回结果,降低了dns服务器压力并提高了dns解析效率。

2、本发明在现有dns协议下,进行了扩展,保障了向后兼容性,即使dns消息传输给未支持该特性的服务器时,后者依然能正确处理。

附图说明

图1是本发明实施例中的基于协同过滤的dns缓存推荐方法的流程原理图。

图2是本发明实施例中的两台客户端发起dns查询的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例为实施本发明的较佳实施方式,所述描述是以说明本发明的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围应当以权利要求所界定者为准,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

在现代互联网应用的使用过程中,客户端可能产生大量不同的域名解析请求,针对每一个不同域名的dns请求都需要经过一次完整的dns解析过程,随着客户端数量和不同域名解析请求数量的增加,给dns服务器带来了巨大的负担,同时也加剧了延迟的风险。

实际上,在客户端用户行为所涉及的域名解析请求之间存在一定的相关性,基于协同过滤算法挖掘客户端域名解析请求的相关性,当一个域名解析请求到来时递归服务器向客户端返回该域名记录的同时返回一系列推荐的域名记录,使客户端可以预先缓存下来,这样,客户端发起的大部分dns解析请求可以通过缓存直接返回结果,大大减少了需要进行完整的dns解析过程的次数。既降低了dns服务器的压力又降低了产生延迟的风险还在一定程度上提高了dns解析的效率。

参照图1所示,本实施例提供的一种基于协同过滤的dns缓存推荐方法,包括如下过程:

步骤s1、基于客户端发起的多个dns解析请求,对解析域名之间的相似度及请求源间的相似度进行分析,保存相似度高的域名解析记录至服务端缓存。

客户端发起一个针对某域名的dns解析请求,由于原dns系统不存在该域名的缓存,故会先经过客户端到递归服务器,甚至再到权威服务器的一个完整的dns查询流程,服务端会对该解析结果进行记录,并返回给客户度,客户端收到该域名对应的解析结果并对该结果进行缓存。

当该客户端再次发送针对其它域名的dns解析请求时,同样地,针对其它不同域名仍然会经过前述的完的dns查询流程,服务端最终也能获得响应的解析记录并分别进行缓存,保存到递归服务器缓存或权威服务器缓存。

在上述过程中,服务端会不断收集数据并基于协同过滤算法进行相似度分析。在系统稳定运行一段时间后,会生成相似表并不断进行更新。

协同过滤算法是一种常用的推荐算法,基于对用户历史行为数据的挖掘发现用户的偏爱喜好,并预测用户可能喜好的标的物进行推荐。协同过滤算法从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做推荐,对于推荐系统来说,通过用户的持续协同作用,最终给用户的推荐会越来越准确。而过滤,就是从可行的推荐标的物中将用户喜欢的标的物过滤出来。

协同过滤算法的核心思想是朴素的物以类聚,人以群分的思想。所谓物以类聚,就是计算出每个标的物最相似的标的物列表,就可以为用户推荐和用户喜欢的标的物相似的标的物,这就是基于标的物的协同过滤。所谓人以群分,就是可以将与该用户相似的用户喜欢过的标的物推荐给该用户(而该用户未曾操作过),这就是基于用户的协同过滤。

协同过滤算法的核心是怎么计算标的物之间的相似度以及用户之间的相似度。可以采用非常朴素的思想来计算相似度。即将用户对标的物的评分(或者隐式反馈,如点击、收藏等)构建用户行为矩阵,矩阵的某个元素代表某个用户对某个标的物的评分(如果是隐式反馈,值为1,可表示有过操作。如果某个用户对某个标的物未产生行为,值为0。)其中可定义行向量代表某个用户对所有标的物的评分向量,列向量代表所有用户对某个标的物的评分向量。有了行向量和列向量,就可以计算用户与用户之间,标的物与标的物之间的相似度了。具体来说,行向量之间的相似度就是用户之间的相似度,列向量之间的相似度就是标的物之间的相似度。

真实业务场景中用户数和标的物数可能是很大的(用户数可能是百万,千万,亿级,标的物可能是十万,百万,千万级),而每个用户只会操作过有限个标的物,所以用户行为矩阵是稀疏矩阵。正因为矩阵是稀疏的,才会方便进行相似度计算及为用户做推荐。

根据客户端的行为规律,如应用请求的域名,挖掘其中的相关性,建立关系图。在一个域名解析请求到来时,向请求方携带推荐的记录,使其可预先缓存下来。

具体到本实施例中,将不同请求的域名设定为标的物,将请求源ip设定为用户,每个ip对应一个被分析的用户,构建行为分析矩阵,并定义行向量和列向量分别为用户之间和标的物之间的评分相似度。行向量之间的相似度相当于是请求源ip之间的相似度,列向量之间的相似度相当于请求域名之间的相似度。若要将用户收集得更为精准,需要确保用户携带的请求源中需包括ecs(即edns-client-subnet,一种用于获取用户真实ip的dns扩展协议)来反映其真实的源地址。

在缓存推荐基于对各个客户端行为的分析过程中,将具体客户端的多个域名解析请求和对应时间分布作为主要分析对象。其中,参考请求的时间分布,主要目的是为相关性计算中添加一些权重来引入衰减,调节其准确性。

其中,对于时间分布的分析基于脉冲检测机制实现,通过请求在时间上集中与否来设置衰减,进而设置不同的域名评分。

在进行关联性分析的过程中,本发明设置有一个类似脉冲检测的机制,通过窗口阈值来收集一个客户端一段时间内密集的请求,因为只有密集的请求,才更具有请求间存在关联的可能性。脉冲式地收集到一个客户端的一批请求后,可以将这部分数据插入到行为矩阵中。此时,可以根据请求在时间上集中与否来设置衰减。若设置评分衰减,可以在阈值范围内设置梯度,时间越集中,每个域名的评分越高。后续再次向行为矩阵中的同一位置插入数据时,如果这个新数据分值更高则可替换矩阵中的旧数据;如果不设置衰减,可按照隐式反馈来设置评分;另外,域名数量和请求源数量需要设置上限量,避免各种资源占用过高,取舍原则可以是topn排名方式选取。

可设置使用余弦相似度或jaccard相似度计算客户端之间和域名之间的相关性。其中余弦相似度计算公式如下:

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似。具体到本发明中,将请求域名和请求源作为两个元素,建立两个向量,计算这两个向量的余弦值,就可以知道两个元素在统计学中它们的相似度情况。

jaccard相似度计算公式如下(适用于隐式反馈):

相似度数值在[0,1]之间,当a==b的时候,为1;由相似度,可以转换成jaccard距离:jaccarddistance(a,b)=1-jaccard(a,b)。

通过上述过程,能够发现客户端之间和域名之间的相关性,并对具有相似特征行为的解析域名进行记录,生成一个相似表,保存到服务端缓存中,同时,随着客户端请求量的增大,相似表会进行更新,包括增加记录或者修改记录,经过不断的更新,数据匹配的会越来越精确。

在本实施例中,在现有dns协议下,进行了扩展,基于rfc1035中定义的dns消息格式进行扩展,推荐记录保存在dns报文的additional段中,使用自定义opt进行封装,在不支持的服务器中可忽略此项特性,保障了本发明的向后兼容性。这样,dns消息传输给未支持该特性的服务器时,后者依然能正确处理。

opt是一种伪资源记录,可将一个opt资源记录添加到dns请求或响应的附加数据部分。

opt资源记录属于特定传输层消息(例如,udp),不属于实际dns数据。每条消息只允许具有一个opt资源记录,但不是必需选项。具体可参照rfc2671文档的说明。

表1opt整体结构

上表是opt的整体结构,需将dns记录集封装并填充到上图中的rdata部分,每个记录集对应一个自定义的opt数据,它有以下表结构:

表2自定义opt数据结构

其中option-code将使用自定义的类型码,option-length记录option-data字段中的数据长度,option-data字段用于保存实际的dns记录集。

步骤s2、对客户端再次发起的dns解析请求进行域名关联度判断,如判断为相同或相似,则返回目标域名及与该目标域名关联的其它多条域名解析记录至客户端;

当服务端(递归服务器或各级权威服务器)在收到一个域名查询请求,由于事先对类似行为的请求通过了域名的相似度分析以及请求源间的相似度分析,这样在对客户端的解析请求解析完成后,服务端会从相似表中选取多个最为相关的域名及其记录,作为推荐缓存结果,一次性返回除请求域名dns记录外的多条相关联dns记录。其中,返回的推荐结果数量可以根据相似度大小进行排序,比如设置排名前5的作为随同目标域名一同返回的解析结果。

步骤s3、客户端接收应答,缓存正常的应答,并根据服务端的策略推荐结果作为额外的缓存数据。

由于客户端发起一次解析请求即可缓存目标域名及其关联的多条域名的记录,使得大部分解析请求可以通过缓存直接返回结果,既降低了dns服务器的压力,又降低了产生延迟的风险,还在一定程度上提高了dns解析的效率。

为了更好的说明本发明的目的,参照图2所示,以两台客户端a、b的一系列在采用本发明方法的dns系统下发起dns查询的流程为例进行说明:

1.客户端a发起域名a.a.com的dns解析请求,因为此时系统不存在a.a.com的缓存,故会经过从客户端到递归服务器再到权威服务器的完整dns查询流程,最终客户端收到a.a.com的解析结果并对该结果进行缓存;

2.相似的,客户端a依次发起b.a.com、c.a.com、d.a.com……、a.b.com的dns解析请求,经过递归服务器和权威服务器后最终获得相应的记录并分别进行缓存;

3.在上述过程中,服务器会不断收集数据并基于协同过滤算法进行相似度分析。在系统稳定运行一段时间后,会生成相似表并不断进行更新。

4.此时客户端a发起x.a.com的dns解析请求时,最终服务端不仅会返回x.a.com的记录还会一并返回与x.a.com相似的域名记录,如:y.a.com、z.a.com等。客户端a会将这些记录一并记录入缓存中。

5.一段时间内当客户端a发起y.a.com等域名的访问时,将直接从客户端缓存返回结果而不必访问递归服务器和权威服务器。

6.客户端b依次发起a.a.com、b.a.com、c.a.com、d.a.com……的dns解析请求,由于递归服务器中已经存在以上域名的缓存,所以会直接返回结果;服务端在此过程中不断收集服务端请求数据,同时基于协同过滤算法进行分析并实时更新相似表。此时服务器b与服务器a相似度较高。

7.服务器b发起x.a.com的dns解析请求时,最终服务端不仅会返回x.a.com的记录还会一并返回与x.a.com相似的域名记录,如:y.a.com、z.a.com等,此外还会返回与客户端b相似的客户端a曾经访问的域名记录,如:a.b.com。客户端b会将这些记录一并记录入缓存中。

8.一段时间内当客户端b发起a.b.com等域名的访问时,将直接从客户端缓存返回结果而不必访问递归服务器和权威服务器。

本发明提供的一种基于协同过滤的dns缓存推荐方法,基于协同过滤算法挖掘客户端域名解析请求的相关性,当一个域名解析请求到来时递归服务器向客户端返回该域名记录的同时返回一系列推荐的域名记录,使客户端可以预先缓存下来,解决了在现有dns体系下由于大量客户端发起的大量不同域名解析请求导致的dns服务器高负载情况。客户端发起一次解析请求即可缓存目标域名及其关联的多条域名的记录,使得大部分解析请求可以通过缓存直接返回结果,降低了dns服务器压力并提高了dns解析效率。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1