通信系统、缓存服务器、缓存内容推送、查找方法及系统与流程

文档序号:12271633阅读:217来源:国知局
通信系统、缓存服务器、缓存内容推送、查找方法及系统与流程

本发明涉及缓存代理服务器中缓存内容的推送技术,特别是涉及一种通信系统、缓存服务器、缓存内容推送、查找方法及系统。



背景技术:

对于已经在缓存服务器上缓存的内容,有些是存在一定相同规则的,如具有相同的相对URI,或者是满足某类正则表达式。即缓存内容的部分路径是相同的或者满足一定规则。如果要及时更新这些缓存内容,我们需要使用内容推送的功能,使缓存服务器上的缓存内容得到更新。通过内容推送功能推送这一类有相同规则的缓存内容,则匹配该规则的缓存内容都可以得到刷新,到源站及时更新。这类内容推送相当于是针对一类目录的方式进行推送。

传统目录推送方式采用正则表达式的方式,通过对比缓存内容与推送规则,判断缓存内容是否匹配规则。但存在以下弊端:

1)使用正则表达式进行匹配字符串,使用的正则引擎主要有两大类:DFA和NFA。DFA又称确定有限状态自动机,在可识别的语言上有严格的限制。因为它不构造显示扩展,所以它不可以捕获子表达式。NFA引擎运行所谓的“贪婪的”匹配回溯算法。但是,因为传统的NFA回溯,所以它可以访问完全相同的状态多次(如果通过不同的路径到达该状态)。因此,在最坏情况下,它的执行速度可能非常慢。常用的PCRE(Perl Compatible Regular Expressions,兼容perl的正则表达式库)是一个NFA正则引擎,所以它在提供强大的匹配功能时,却是效率低下的。

2)如果是存在大量的内容推送,由于事先无法知道某个缓存内容是否匹配其中一条确定的正则表达式,所以只能采用循环遍历查找的方式逐条匹配。对于遍历所有正则表达式的时间复杂度达到O(n)。再加上上面描述的单条匹配效率低下的问题,整个遍历的性能消耗相当大。对于性能敏感的服务器,这种消耗对于服务的影响是较大的。

3)如果是推送相同的推送规则,则需要更新原有的推送时间,保证缓存需要刷新的时间点是正确的。但是要找到原先的推送规则,也是需要循环遍历原有的推送规则,找到相同的推送规则进行更新,这样的时间复杂度也是O(n)。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种通信系统、缓存服务器、缓存内容推送、查找方法及系统,用于解决现有技术中推送方式单一且推送效率低下的问题。

为实现上述目的及其他相关目的,本发明提供一种缓存内容推送方法,包括:接收到一缓存推送请求时,判断所述缓存推送请求的推送规则的类型;若所述缓存推送请求的推送规则的类型为正则表达式,则判断是否已经存在与推送规则的类型为正则表达式的缓存推送请求对应的平衡树,若存在,则在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建平衡树;若所述缓存推送请求的推送规则的类型为相对路径,则判断是否已经存在与推送规则的类型为相对路径的缓存推送请求对应的字典树,若存在,则在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建字典树。

于本发明一具体实施例中,所述在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点的步骤还包括:若查找到,则根据所述缓存推送请求对相匹配的树节点对应的缓存内容进行更新;若没查找到,则根据所述缓存推送请求在所述平衡树中建立新的树节点,且将所述缓存推送请求对应的推送规则存储于所述新的树节点。

于本发明一具体实施例中,所述在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点的步骤还包括:若查找到,则根据所述缓存推送请求对相匹配的树节点对应的缓存内容进行更新;若没查找到,则根据所述缓存推送请求在所述字典树中建立新的树节点,且将所述缓存推送请求对应的推送规则存储于所述新的树节点。

于本发明一具体实施例中,在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点的步骤包括:将所述缓存推送请求的推送规则逐级进行分解以获得多层级的目录,且根据预设的所述目录的层级优先级,在所述字典树中依次查找与所述缓存推送请求的推送规则的各层级的目录匹配的树节点,且当优先级最低的层级对应的所述目录在所述字典树中查找到对应的树节点时,判断查找到与当前缓存推送请求的推送规则匹配的树节点。

于本发明一具体实施例中,根据所述缓存推送请求对相匹配的树节点的缓存内容进行更新的步骤包括:根据所述缓存推送请求从对应的源站中获取相应的缓存内容对相匹配的树节点对应的缓存内容进行更新。

于本发明一具体实施例中,根据所述缓存推送请求的推送规则构建平衡树的步骤包括:在所述平衡树的每个树节点缓存一种正则表达式类型的推送规则;根据所述缓存推送请求的推送规则构建字典树的步骤包括:将相对路径类型的所述推送规则分解为多各层级的目录,所述字典树的每个树节点缓存其中一级所述目录。

为实现上述目的及其他相关目的,本发明还提供一种缓存内容推送系统,包括:推送规则类型判断模块,用以接收到一缓存推送请求时,判断所述缓存推送请求的推送规则的类型,若所述缓存推送请求的推送规则的类型为正则表达式则执行第一推送模块,若所述缓存推送请求的推送规则的类型为正则表达式则执行第二推送模块;所述第一推送模块用以在所述缓存推送请求的推送规则的类型为正则表达式时,判断是否已经存在与推送规则的类型为正则表达式的缓存推送请求对应的平衡树,若存在,则在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建平衡树;第二推送模块用以在所述缓存推送请求的推送规则的类型为相对路径时,判断是否已经存在与推送规则的类型为相对路径的缓存推送请求对应的字典树,若存在,则在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建字典树。

为实现上述目的及其他相关目的,本发明还提供一种缓存内容查找方法,应用于根据如上任一项所述的缓存内容推送方法对缓存内容进行存储和更新的缓存服务器,所述方法包括:接收到一缓存查找请求时,分别在所述平衡树和字典树查找是否存在与所述缓存查找请求匹配的树节点;若存在,则从相应的源站中获取相应的缓存内容以响应所述缓存查找请求;若不存在,则直接以所述缓存服务器中的缓存内容响应所述缓存查找请求。

于本发明一具体实施例中,当查找到与所述缓存查找请求匹配的树节点时,还包括:判断当前树节点对应的缓存内容是否可用,且当不可用时,从相应的源站中获取相应的缓存内容以响应所述缓存查找请求。

为实现上述目的及其他相关目的,本发明还提供一种缓存内容查找系统,应用于根据如上所述的缓存内容推送系统对缓存内容进行存储和更新的缓存服务器,所述系统包括:匹配模块,用以接收到一缓存查找请求时,分别在所述平衡树和字典树查找是否存在与所述缓存查找请求匹配的树节点;响应模块,用以在所述匹配模块判断存在与所述缓存查找请求匹配的树节点时,则从相应的源站中获取相应的缓存内容以响应所述缓存查找请求;且用以在所述匹配模块判断不存在与所述缓存查找请求匹配的树节点时,则直接以所述缓存服务器中的缓存内容响应所述缓存查找请求。

为实现上述目的及其他相关目的,本发明还提供一种缓存服务器,包括如上所述的缓存内容推送系统以及如上所述的缓存内容查找系统。

为实现上述目的及其他相关目的,本发明还提供一种通信系统,包括客户端、如上所述的缓存服务器、以及源站,所述客户端用于发送所述缓存推送请求或所述缓存查找请求。

如上所述,本发明提出一种通信系统、缓存服务器、缓存内容推送、查找方法及系统,其中缓存服务器根据缓存推送请求的类型分别建立平衡树和字典树,且对接收的缓存推送请求的类型进行判断,当类型为正则表达式时,根据平衡树查找相匹配的树节点,当类型为相对路径时,根据字典树查找相匹配的树节点,且查找到相匹配的节点后,对节点对应的缓存内容进行更新。本发明灵活的根据缓存推送请求的推送规则的类型对缓存内容分别进行不同方式的存储和查找,查找的时间复杂度低且准确性高。

附图说明

图1显示为本发明的通信系统在一具体实施例中的流程示意图。

图2显示为本发明的缓存内容推送方法在一具体实施例中的流程示意图。

图3显示为发明一具体实施例中的平衡树的结构示意图。

图4显示为发明一具体实施例中的字典树的结构示意图。

图5显示为本发明的缓存内容推送系统在一具体实施例中的模块示意图。

图6显示为本发明的缓存内容查找方法在一具体实施例中的流程示意图。

图7显示为本发明缓存内容查找方法在一具体实施例中的应用示意图。

图8显示为本发明的缓存内容查找系统在一具体实施例中的模块示意图。

元件标号说明

10 通信系统

11 客户端

12 缓存服务器

13 源站

20 缓存内容推送方法

21~24 方法步骤

50 缓存内容推送系统

51 推送规则类型判断模块

52 第一推送模块

53 第二推送模块

60 缓存内容查找方法

61~64 方法步骤

80 缓存内容查找系统

81 匹配模块

82 响应模块

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

本发明通过将内容推送规则分为使用正则表达式和使用相对路径,分别使用不同的存储方式,同时改进推送规则的查找方式,具体改进点如下:

1)采用正则表达式存储的推送规则,不再使用循环遍历的方式,而是采用构建成一颗平衡树,每个树节点缓存一条推送规则。查找推送规则,则只需要查找该平衡树。这样,查找的时间复杂度即为树高,由于是构建为平衡树,所以整体的复杂度从O(n)降为O(log n)。

2)采用相对路径存储的推送规则,对其缓存方式进行改进,存储缓存推送规则不再像存储链表的方式存储,而是采用数据结构中的字典树进行存储,每个节点存储相对路径的某一级目录。这样从根节点到某一节点,路径上经过的字符串连接起来,为从根节点开始对应的字符串,即一条完整的相对路径。

3)对查找缓存规则的方法的改进,缓存推送规则的匹配过程,不再使用循环遍历的方式匹配规则,而是采用查找树的方式,如果对应的缓存文件有存在一条完整的推送规则,则认为是匹配该规则的。这样可以把匹配的时间复杂度从O(n)降到O(log n)。

本发明应用于如图1所示的通信系统10中,所述通信系统10包括客户端11、缓存服务器12、以及源站13,所述客户端11用于发送所述缓存推送请求或所述缓存查找请求至所述缓存服务器12。于具体应用中,所述客户端11例如为智能手机或电脑等智能处理终端。

具体,请参阅图2,显示为本发明的缓存内容推送方法在一具体实施例中的流程示意图。所述缓存内容推送方法20应用于所述缓存服务器12中,所述方法20包括:

21:接收一缓存推送请求;所述缓存推送请求由所述客户端11发出。

22:判断所述缓存推送请求的推送规则的类型;

23:若所述缓存推送请求的推送规则的类型为正则表达式,则判断是否已经存在与推送规则的类型为正则表达式的缓存推送请求对应的平衡树;

231:若存在,则在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点;于本发明的具体实施例中,所述在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点的步骤还包括:若查找到,则根据所述缓存推送请求对相匹配的树节点对应的缓存内容进行更新;若没查找到,则根据所述缓存推送请求在所述平衡树中建立新的树节点,且将所述缓存推送请求对应的推送规则存储于所述新的树节点。

232:若不存在,则根据所述缓存推送请求的推送规则构建平衡树;于本发明一具体实施例中,根据所述缓存推送请求的推送规则构建平衡树的步骤包括:在所述平衡树的每个树节点缓存一种正则表达式类型的推送规则。

参阅图3,显示为发明一具体实施例中的平衡树的结构示意图。图3所示的平衡树包括6个树节点,且每个树节点分别对应一条推送规则,分别为推送规则1、推送规则2、推送规则3、推送规则4、推送规则5、以及推送规则6。

即内容推送中像正则表达式这类无明显特性的推送规则,优化其存储的数据结构,采用平衡树的方式存储。其中每个树节点,即一条缓存推送规则。推送规则的存储结构通过压缩整个链表的长度,将其转化为树高。同时保证树的平衡性,使其不会退化为一条链表。这样对于该类的推送规则查找的时间复杂度降为O(log n)。对于需要频繁使用查找的服务器来说,大大缩短了其查找时间,从而提供更加快速高效的服务。

24:若所述缓存推送请求的推送规则的类型为相对路径,则判断是否已经存在与推送规则的类型为相对路径的缓存推送请求对应的字典树;

241:若存在,则在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点;于本发明的具体实施例中,所述在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点的步骤还包括:若查找到,则根据所述缓存推送请求对相匹配的树节点对应的缓存内容进行更新;若没查找到,则根据所述缓存推送请求在所述字典树中建立新的树节点,且将所述缓存推送请求对应的推送规则存储于所述新的树节点。

进一步的,在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点的步骤包括:将所述缓存推送请求的推送规则逐级进行分解以获得多层级的目录,且根据预设的所述目录的层级优先级,在所述字典树中依次查找与所述缓存推送请求的推送规则的各层级的目录匹配的树节点,且当优先级最低的层级对应的所述目录在所述字典树中查找到对应的树节点时,判断查找到与当前缓存推送请求的推送规则匹配的树节点。

242:若不存在,则根据所述缓存推送请求的推送规则构建字典树。根据所述缓存推送请求的推送规则构建字典树的步骤包括:将相对路径类型的所述推送规则分解为多各层级的目录,所述字典树的每个树节点缓存其中一级所述目录。

参阅图4,显示为发明一具体实施例中的字典树的结构示意图。图4所示的字典树包括6个树节点,且每个树节点分别对应一个目录层级,且树节点“目录b”对应的推送规则为“/a/b”,则6,且树节点“目录e”对应的推送规则为“/d/e”,且树节点“目录a”对应的推送规则为“/a”,其他以此类推。

即内容推送中以相对路径URI推送的规则,不再使用链表的方式进行存储,采用字典树进行缓存推送规则。每个树节点存储相对路径的某一级目录。从根节点到某个节点的完整路径,即对应一条缓存推送规则。匹配缓存的过程,减少了规则匹配的遍历时间。同时不使用正则表达式,免去了编译正则表达式以及正则表达式复杂的匹配过程。极大的减少了性能的消耗。对时间成本以及系统资源两方面都进行了优化。

于本发明一具体实施例中,根据所述缓存推送请求对相匹配的树节点的缓存内容进行更新的步骤包括:根据所述缓存推送请求从对应的源站13中获取相应的缓存内容对相匹配的树节点对应的缓存内容进行更新。

所述缓存内容推送方法使用树进行推送规则的匹配,而非循环遍历链表的方式。提升了匹配规则的速度。对于平衡树,整体的查找时间降为O(log n)。对于使用的字典树,其时间复杂度由目录的层级决定,由于相对路径的目录层级并不会很多,所以时间复杂度接近为O(1)。这样整体对每个缓存进行规则的匹配时间上做了较多优化。不管是以何种方式进行推送,都能提高效率。

请参阅图5,显示为本发明的缓存内容推送系统在一具体实施例中的模块示意图。所述缓存内容推送系统50包括:

推送规则类型判断模块51用以接收到一缓存推送请求时,判断所述缓存推送请求的推送规则的类型,若所述缓存推送请求的推送规则的类型为正则表达式则执行第一推送模块52,若所述缓存推送请求的推送规则的类型为正则表达式则执行第二推送模块53;

所述第一推送模块52用以在所述缓存推送请求的推送规则的类型为正则表达式时,判断是否已经存在与推送规则的类型为正则表达式的缓存推送请求对应的平衡树,若存在,则在所述平衡树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建平衡树;

所述第二推送模块53用以在所述缓存推送请求的推送规则的类型为相对路径时,判断是否已经存在与推送规则的类型为相对路径的缓存推送请求对应的字典树,若存在,则在所述字典树查找与所述缓存推送请求的推送规则匹配的树节点;若不存在,则根据所述缓存推送请求的推送规则构建字典树。

所述缓存内容推送系统50为与所述缓存内容推送方法20对应的系统项,两者技术方案一一对应,所有关于所述缓存内容推送方法20的描述均可应用于本实施例中,在此不加赘述。

进一步参阅图6,显示为本发明的缓存内容查找方法在一具体实施例中的流程示意图。所述缓存内容查找方法60应用于根据如上所述的缓存服务器12中,所述方法60包括:

61:接收一缓存查找请求;

62分别在所述平衡树和字典树查找是否存在与所述缓存查找请求匹配的树节点;若存在,则执行步骤63;若不存在,则执行步骤64;

63:从相应的源站中获取相应的缓存内容以响应所述缓存查找请求;

64:直接以所述缓存服务器中的缓存内容响应所述缓存查找请求。

于本发明一具体实施例中,当查找到与所述缓存查找请求匹配的树节点时,还包括:判断当前树节点对应的缓存内容是否可用,且当不可用时,从相应的源站中获取相应的缓存内容以响应所述缓存查找请求。

进一步结合图7,显示为本发明缓存内容查找方法在一具体实施例中的应用示意图。且本实施例中以字典树为例进行查找说明,具体为:

1)从客户端11的请求URL中获取到缓存内容的相对URI,从域名后的根目录开始,逐级分解,将每个目录分解出来。

2)对缓存内容的URI从根目录开始的每个目录,查找字典树,如果从字典树的根部开始存在该目录,则继续查找下一级目录,同时字典树也从查找到的该目录节点继续往下匹配。如果不存在匹配该目录的节点,则说明不存在匹配该缓存内容的规则,所以缓存内容不需要刷新,直接返回给客户端。如果存在一条完整的推送规则,获取推送规则的相关信息,判断该缓存内容是否可以使用。

3)如果缓存内容不可以继续使用,则继续分解目录且继续查找字典树,直到找不到树节点匹配。

4)如果缓存内容可用,且缓存过期,则到后端(源站13)重新更新缓存内容,然后返回给客户端11。

进一步参阅图8,显示为本发明的缓存内容查找系统在一具体实施例中的模块示意图。应用于根据如上所述的缓存内容推送系统50对缓存内容进行存储和更新的缓存服务器12,所述缓存内容查找系统80包括:

匹配模块81,用以接收到一缓存查找请求时,分别在所述平衡树和字典树查找是否存在与所述缓存查找请求匹配的树节点;

响应模块82,用以在所述匹配模块81判断存在与所述缓存查找请求匹配的树节点时,则从相应的源站中获取相应的缓存内容以响应所述缓存查找请求;且用以在所述匹配模块81判断不存在与所述缓存查找请求匹配的树节点时,则直接以所述缓存服务器中的缓存内容响应所述缓存查找请求。

所述缓存内容查找系统80为与所述缓存内容查找方法60对应的系统项,两者技术方案一一对应,所有关于所述缓存内容查找方法60的描述均可应用于本实施例中,在此不加赘述。

综上所述,本发明提出一种通信系统、缓存服务器、缓存内容推送、查找方法及系统,其中缓存服务器根据缓存推送请求的类型分别建立平衡树和字典树,且对接收的缓存推送请求的类型进行判断,当类型为正则表达式时,根据平衡树查找相匹配的树节点,当类型为相对路径时,根据字典树查找相匹配的树节点,且查找到相匹配的节点后,对节点对应的缓存内容进行更新。本发明灵活的根据缓存推送请求的类型对缓存内容分别进行不同方式的存储和查找,查找的时间复杂度低且准确性高。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

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