一种基于CDN网络的权重缓存网站方法转让专利

申请号 : CN201711098969.7

文献号 : CN107786668B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵永亮

申请人 : 成都知道创宇信息技术有限公司

摘要 :

本发明公开了一种基于CDN网络的权重缓存网站方法,其包括:用户在CDN管理系统上开启永久在线功能,并配置缓存首页地址,并将永久在线配置同步到CDN网络中;计算URI权重;缓存更新;将内存中的内容快速持久化,保存在磁盘中,并在重启服务时从磁盘中恢复缓存内容;在调整网站配置所在节点时,将缓存内容同步到目标节点上,再同步到目标节点相同目录,并通知目标节点重新加载配置;保持网站永久在线,确保用户请求网站得到正常的响应。采用本发明方法后,用户请求遇到用户网站不可访问时CDN节点智能调节返回内容,确保网站永久在线,可以在一定程度上提升用户体验,并提高CDN网络的服务质量。

权利要求 :

1.一种基于CDN网络的权重缓存网站方法,其特征在于,包括以下步骤:

步骤1:用户在CDN管理系统上开启永久在线功能,并配置缓存首页地址,用户配置的首页为默认缓存的内容;配置完毕后将永久在线配置同步到CDN网络中;

步骤2:计算URI权重,即根据用户配置以及请求地址、请求时间、请求方法、来源地址、响应内容大小、响应状态综合计算URI权重大小,组成URI缓存地址队列;

步骤3:缓存更新,包括两种情况:

1)用户配置的首页是24小时更新一次,但若遇到首页响应状态是非正常响应状态,将保持原缓存内容,并不更新;

2)非配置网址更新是24小时更新一次;首先取出最新的缓存队列,并按照权重排序,结合24小时内访问统计,将非正常响应请求地址从缓存队列中删除,并将新请求的不在缓存队列中的URI地址按照访问时间顺序更新插入到缓存队列中,并按顺序赋予权重值;依据缓存队列中权重排序根据用户请求响应重新更新缓存内容,并将缓存内容保持24小时;

步骤4:将内存中的内容快速持久化,保存在磁盘中,并在重启服务时从磁盘中恢复缓存内容;在调整网站配置所在节点时,将缓存内容同步到目标节点上,再同步到目标节点相同目录,并通知目标节点重新加载配置;

步骤5:保持网站永久在线,即用户请求网址时如果遇到源网站非正常响应,将按照“端口+请求地址”寻找是否有缓存,如果未找到相应缓存,将返回缓存的首页内容,如果有缓存内容,将返回缓存的内容,确保用户请求网站得到正常的响应。

2.如权利要求1所述的一种基于CDN网络的权重缓存网站方法,其特征在于,所述步骤2具体为:步骤2.1:根据用户配置读取配置的网站首页URI和端口号,如果用户未配置,直接使用端口号80,URI地址为“/”作为默认地址;

步骤2.2:用户配置的首页地址或者默认的地址权重值都将设置为权重最高的值,从将配置的首页地址从最高的值递减,按照配置顺序赋予权重,以“端口号、URI、权重、请求方法、请求时间、来源地址、响应状态、请求频率”作为元素组,该元素组保存结构为字典,其中以端口号和URI作为关键字,元素组为值,存储在缓存队列中;

步骤2.3:记录“请求的地址、请求时间、来源地址、响应状态”,维护一个缓存队列,动态地更新每个地址的最新请求时间、来源地址、响应状态、请求频率,并根据请求频率、请求时间、响应状态、来源地址用于计算请求网址的权重大小,即:a)初始时,除了用户配置的首页已被缓存、被赋予权重外,其它请求的地址将按照时间请求顺序依次赋予权重,剔除请求方法为更改数据状态的请求,包括提交数据、更新数据、删除数据,同时将响应状态为不可访问的状态的地址划分为非正常响应;按照时间顺序依次递减赋予权重大小;

b)更新权重大小时,统计出缓存队列中URI请求的地址、请求频率、请求时间、响应状态,进行判断,剔除非正常响应请求与改变数据类请求;首先根据请求频率排序,其次根据请求时间与来源地址排序,组成新的缓存队列,并递减赋予权重;源站响应的状态由正常响应状态变为非正常响应时将降低权重,到更新缓存时直接将该请求地址从缓存中删除。

3.如权利要求1所述的一种基于CDN网络的权重缓存网站方法,其特征在于,所述步骤4中,缓存在磁盘的内容依据“网站地址+端口号+用途”作为编号进行存储。

说明书 :

一种基于CDN网络的权重缓存网站方法

技术领域

[0001] 本发明涉及网站缓存领域,特别是一种基于CDN网络的权重缓存网站方法。

背景技术

[0002] CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
[0003] 专利201610262858.4公开了一种CDN服务器及其缓存数据的方法,此方法是CDN服务器收到一个请求信息,并基于请求消息获取并缓存某一文件的过程中收到了另一请求信息时,系统检测所述另一请求信息所对应请求的目标数据所在的文件是否是正在被缓存的文件,如果是,则会进一步判断当前的系统条件是否满足可将文件交由缓存于CDN服务器进行处理的预设条件。
[0004] 基于请求信息获取某缓存文件过冲收到另一个请求信息时,系统去检测另一请求的目标数据是否正在被缓存,这会造成CDN节点服务器设计的耦合,同时由于每个请求内容都要缓存和判断,CDN节点处理能力有限,如果网站太大或多个网站同时使用同一个CDN服务器会出现问题。
[0005] 将请求内容以文件方式存储缓存内容,每次请求内容过来都需要到磁盘中查找读取,性能较低,同时如果切换CDN节点可能缓存内容不会生效,需要重新缓存。

发明内容

[0006] 本发明所要解决的技术问题是提供一种基于CDN网络的权重缓存网站方法,主要用于CDN网络为用户网站的服务提供更好的体验保障,提高网站SEO。本发明基于CDN网络缓存网站请求内容,智能计算请求URI权重,保障用户请求的有效性。基于内存+磁盘模式缓存持久化网站请求内容,确保网站切换CDN节点以及CDN节点服务升级重启后数据不丢失,提 升CDN服务质量,保证网站缓存有效性。
[0007] 为解决上述技术问题,本发明采用的技术方案是:
[0008] 一种基于CDN网络的权重缓存网站方法,包括以下步骤:
[0009] 步骤1:用户在CDN管理系统上开启永久在线功能,并配置缓存首页地址,用户配置的首页为默认缓存的内容;配置完毕后将永久在线配置同步到CDN网络中;
[0010] 步骤2:计算URI权重,即根据用户配置以及请求地址、请求时间、请求方法、来源地址、响应内容大小、响应状态综合计算URI权重大小,组成URI缓存地址队列;
[0011] 步骤3:缓存更新,包括两种情况:
[0012] 1)用户配置的首页是24小时更新一次,但若遇到首页响应状态是非正常响应状态,将保持原缓存内容,并不更新;
[0013] 2)非配置网址更新是24小时更新一次;首先取出最新的缓存队列,并按照权重排序,结合24小时内访问统计,将非正常响应请求地址从缓存队列中删除,并将新请求的不在缓存队列中的URI地址按照访问时间顺序更新插入到缓存队列中,并按顺序赋予权重值;依据缓存队列中权重排序根据用户请求响应重新更新缓存内容,并将缓存内容保持24小时;
[0014] 步骤4:将内存中的内容快速持久化,保存在磁盘中,并在重启服务时从磁盘中恢复缓存内容;在调整网站配置所在节点时,将缓存内容同步到目标节点上,再同步到目标节点相同目录,并通知目标节点重新加载配置;
[0015] 步骤5:保持网站永久在线,即用户请求网址时如果遇到源网站非正常响应,将按照“端口+请求地址”寻找是否有缓存,如果未找到相应缓存,将返回缓存的首页内容,如果有缓存内容,将返回缓存的内容,确保用户请求网站得到正常的响应。
[0016] 进一步的,所述步骤2具体为:
[0017] 步骤2.1:根据用户配置读取配置的网站首页URI和端口号,如果用户未配置,直接使用端口号80,URI地址为“/”作为默认地址;
[0018] 步骤2.2:用户配置的首页地址或者默认的地址权重值都将设置为权重最高的值,从将配置的首页地址从最高的值递减,按照配置顺序赋予权重,以“端口号、URI、权重、请求方法、请求时间、来源地址、响应状态、请求频率”作为元素组,该元素组保存结构为字典,其 中以端口号和URI作为关键字,前述定义的元素组为值,存储在缓存队列中;
[0019] 步骤2.3:记录“请求的地址、请求时间、来源地址、响应状态”,维护一个缓存队列, 动态地更新每个地址的最新请求时间、来源地址、响应状态、请求频率,并根据请求频率、请求时间、响应状态、来源地址用于计算请求网址的权重大小,即:
[0020] a)初始时,除了用户配置的首页已被缓存、被赋予权重外,其它请求的地址将按照 时间请求顺序依次赋予权重,剔除请求方法为更改数据状态的请求,包括提交数据、更新数 据、删除数据,同时将响应状态为不可访问的状态的地址划分为非正常响应;按照时间顺序 依次递减赋予权重大小;
[0021] b)更新权重大小时,统计出缓存队列中URI请求的地址、请求频率、请求时间、响应状态,进行判断,剔除非正常响应请求与改变数据类请求;首先根据请求频率排序,其次根据请求时间与来源地址排序,组成新的缓存队列,并递减赋予权重;源站响应的状态由正常响应状态变为非正常响应时将降低权重,到更新缓存时直接将该请求地址从缓存中删除。
[0022] 进一步的,所述步骤4中,缓存在磁盘的内容依据“网站地址+端口号+用途”作为编号进行存储。
[0023] 与现有技术相比,本发明的有益效果是:现有的CDN服务器缓存数据依赖于请求内容,针对每个地址的内容都缓存,这将决定无法适用于大量网站,同时缓存内容之间有依赖,会降低CDN网络处理能力。本发明方法不止缓存用户配置的内容,同时会缓存部分权重较大的网址,在服务升级和调整节点时进行持久化和配置同步,确保缓存内容不丢失;用户请求遇到用户网站不可访问时CDN节点智能调节返回内容,确保网站永久在线,可以在一定程度上提升用户体验,并提高CDN网络的服务质量。

附图说明

[0024] 图1是本发明方法中用户配置下发流程示意图。
[0025] 图2是本发明方法中权重计算流程示意图。

具体实施方式

[0026] 下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0027] 本发明主要针对CDN网络缓存网站内容,提升网站友好性,优化CDN网络节点,提升 服务质量。用户网站使用CDN网络加速、防护,网站请求从CDN网络经过,CDN网络依据网站请求缓存网站内容,在遇到请求地址不可访问时CDN网络会返回缓存的内容,如果未找到缓存内容,根据请求地址与端口返回缓存的首页内容。但由于CDN网络中每个节点需要支持大量网站,网站请求内容全部缓存不现实,因此需要根据用户自定义与请求内容等计算权重,确定缓存内容。
[0028] CDN网络中经常需要升级服务或将网站切换到其它节点服务,已经被缓存的内容如果处理不好可能就会丢失,网站请求如果遇到源站不可访问时将返回源站不可访问内容,用户体验太差。为了提升缓存系统性能,维护一个定量的缓存队列用于异步更新权重,并基于缓存队列缓存请求与响应内容。在遇到服务升级时需要将缓存队列和缓存内容全部持久化,升级结束后自动按照权重优先级加载定量缓存内容;如果需要将网站切换到不同节点,需要将按比例将权重较大的缓存内容同步到指定节点,确保缓存可用,保障永久在线,提升服务体验。详述如下:
[0029] 一、用户配置模块
[0030] 用户在CDN管理系统上开启永久在线功能,并配置缓存首页地址,本缓存系统支持配置多个端口的首页地址;配置完毕后将永久在线配置同步到CDN网络中,具体流程如图1所示。
[0031] 用户配置的首页将成为默认缓存的内容,以确保网站请求遇到不可访问、同时又没有缓存存在时有内容返回。
[0032] 二、节点缓存模块
[0033] 如图2所示,节点缓存模块主要是依据用户配置和用户请求缓存网站内容,由于CDN节点处理大量网站,每个网站缓存的内容不可能太多,默认缓存100个地址,并且由于用户网站本身会不定期升级,内容也会更新,节点缓存的内容也需要更新。
[0034] 节点缓存模块分为URI权重预算模块、缓存更新模块等。
[0035] 1、URI权重计算模块
[0036] URI权重计算是根据用户配置以及请求地址、请求时间、请求方法、来源地址、响应内容大小、响应状态等多个元素综合计算URI权重大小,组成TOP10000URI地址池。
[0037] URI权重计算分为以下几个步骤:
[0038] 步骤1:根据用户配置读取配置的网站首页地址URI和端口号,如果用户未配置,直接使用端口号80,URI地址为“/”作为默认地址。
[0039] 步骤2:用户配置的首页地址或者默认的地址权重值都将设置为权重最高的值,目前默认上限是10000个地址,将配置的首页地址从10000递减,按照配置顺序赋予权重,以“端口号、URI、权重、请求方法、请求时间、来源地址、响应状态、请求频率”作为元素组,其中以端口号和URI作为关键字,其它内容(定义的元素组)作为value存储,存储到缓存队列中。
[0040] 步骤3:以步骤2中为例,记录请求的地址、请求时间、来源地址、响应状态等因素,维护一个缓存队列,动态的更新每个地址的最新请求时间、来源地址、响应状态、请求频率, 并根据请求频率、请求时间、响应状态、来源地址计算请求网址的权重大小,即:
[0041] a)初始时,除了用户配置的首页已被缓存、被赋予权重外,其它请求的地址将按照时间请求顺序依次赋予权重,剔除请求方法为更改数据状态的请求,包括POST、PATCH、DELETE(分别表示提交数据、更新数据、删除数据)状态的请求,同时将响应状态为40X与50X 的请求地址(不可访问的状态的地址)划分为非正常响应,按照时间顺序依次递减赋予权重大小。
[0042] b)更新权重大小时,统计出缓存中URI请求的地址、请求频率、请求时间、响应状态,进行判断,同步骤a)中一样,剔除非正常响应请求与改变数据类请求,首先根据请求频率排序,其次根据请求时间与来源地址排序,组成新的缓存队列,并递减赋予权重。如果请求的地址中在缓存内容中,源站响应的状态由正常响应20X或30X变换为非正常响应时将降低权重,到更新缓存时直接将该请求地址从缓存中删除。
[0043] 权重值的计算并不是打分制,而是依据排序确定的,主要维护一个缓存队列,用户配置的首页权重始终最高,剩余的请求地址权重是根据请求频率、请求时间、请求来源地址统计、响应状态依次判断的。缓存队列的更新与维护是异步的,确保不影响主体业务。
[0044] 2、缓存更新模块
[0045] CDN节点对每个网站缓存的内容有限,而且为了有更快的响应速度,需要将部分缓存内容保持在内存中,本系统缓存的目的主要用于永久在线,一般而言,响应过大的内容不会缓存,这也有利于缓存的更新。
[0046] 缓存的更新并不是实时更新,缓存需要保持24小时才会更新一次,同时网站内容的缓存也不是将缓存队列中全部缓存,而是缓存top100,缓存权重最大的100个地址内容,更新也分为两种情况:
[0047] 1)用户配置的首页将会24小时更新一次,但如果遇到首页响应状态是非正常响应状态,将保持原缓存内容,并不更新;
[0048] 2)非配置网址更新也是24小时更新一次,首先取出最新的缓存队列,并按照权重排序,结合24小时内访问统计,将非正常响应请求地址从缓存队列中删除,并按照访问时间顺序的更新缓存队列,这部分内容按照顺序将排在剩余的缓存队列后面,并按顺序赋予权重值。依据缓存队列中权重大小根据用户请求重新更新缓存内容,并将缓存内容保持24小时。
[0049] 三、持久化及同步模块
[0050] CDN网络中需要定期的升级节点中的服务,升级时将重启服务,保存在内存中的缓存内容将被清除,此时就需要将内存中的内容快速持久化,保存在磁盘中,并在重启服务时从磁盘中恢复缓存内容。缓存在磁盘的内容依据“网站地址+端口号+用途”作为编号进行存储,方便恢复时便于找到。
[0051] 调整网站配置所在节点时,需要将缓存内容同步到目标节点上,此时需要先将缓存内容持久化,然后同步到目标节点相同目录,并通知目标节点重新加载配置。
[0052] 四、永久在线
[0053] 基于权重缓存系统目的是用于保障网站永久在线,提升用户体验,同时为CDN网络服务提高服务质量。用户请求网址时如果遇到源网站非正常响应,如40X与50X,首先将按照“端口+请求地址”寻找是否有缓存,如果未找到相应缓存,将返回缓存的首页内容,确保网站请求得到正确的响应。