CN112202631A - 一种资源访问方法、装置、系统、电子设备及存储介质 - Google Patents
一种资源访问方法、装置、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112202631A CN112202631A CN202010981096.XA CN202010981096A CN112202631A CN 112202631 A CN112202631 A CN 112202631A CN 202010981096 A CN202010981096 A CN 202010981096A CN 112202631 A CN112202631 A CN 112202631A
- Authority
- CN
- China
- Prior art keywords
- cdn
- resource
- client
- abnormal
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/14—Arrangements for monitoring or testing data switching networks using software, i.e. software packages
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种资源访问方法、装置、系统、电子设备及存储介质,涉及云计算领域。该技术方案在客户端注入检测代码,通过对响应消息进行检查以实现对访问CDN节点异常的监测。当出现访问CDN节点异常时,应用服务器将资源访问切换到作为CDN数据源的源服务器,直接从源服务器拉取资源。这样,避免CDN侧难以检测到个别用户访问异常且无法及时有效地解决异常问题的情况,客户端可以及时发现访问异常并自动将资源访问切换到源服务器,以保证用户能够及时、安全可靠地访问资源。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种资源访问方法、装置、系统、电子设备及存储介质。
背景技术
为了解决网络拥塞,提高用户访问网络的响应速度和成功率,内容分发网络(Content Delivery Network,以下简称CDN)应运而生。目前,CDN技术在互联网应用中被广泛使用,开发人员将图片、多媒体资料、层叠样式表(Cascading Style Sheets,CSS)等占用资源较大的静态资源存储在位于全球各地的CDN节点中。当用户请求资源时,就近返回CDN节点缓存的资源,从而较大程度分担了源服务器压力,提高用户体验。
但是,CDN的使用仍存在一定的风险。由于CDN资源存在于第三方服务器,用户在使用CDN的同时,要考虑网络的可达性和CDN资源的安全性。在CDN出现异常,比如大规模故障,或者某个CDN节点的文件被劫持的情况下,将严重影响应用运行。
针对CDN异常的情况,CDN厂商会有一定的容灾策略。CDN网络由中心节点、边缘CDN节点两部分组成。其中,中心节点包括CDN网管中心和域名系统(Domain Name System,DNS)。CDN网管中心会对整个CDN网络中的各个子系统和设备进行实时监控,对各种故障产生相应的告警。DNS与所有边缘节点保持通信,搜集各边缘节点的通信状态,如果检测到不可用的边缘CDN节点,DNS会将用户请求分发到其他健康的CDN节点上。
但是现有CDN容灾策略并不能保证CND节点绝对可用性,尤其是个别用户访问CDN资源异常时,第三方CDN厂商无法检测到。而且目前,因CDN异常导致应用无法使用时,排查和解决完全依赖第三方CDN厂商,客户端开发人员在遇到问题后只能提供故障URL和故障区域给第三方CDN厂商工作人员进行排查处理。这样,无法及时解决CDN异常,用户无法访问CDN资源。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种资源访问方法、装置、系统、电子设备及存储介质。
根据本申请实施例的一个方面,提供了一种资源访问方法,包括:
通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;
当根据所述CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
将所述Cookie发送到应用服务器,其中,所述应用服务器在检查到所述Cookie中的所述CDN异常标识时向所述客户端返回通过源服务器访问资源的入口文件;
根据所述入口文件从所述源服务器访问所述资源。
可选的,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:
通过所述检测代码从所述响应消息中检测请求消息发送时间及资源获取时间;
根据所述请求消息发送时间及资源获取时间计算CDN资源请求时长;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当所述CDN资源请求时长大于或等于时间阈值时,确定所述CDN节点异常。
可选的,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:
通过所述检测代码从响应消息的HTTP头信息中获取缓存命中字段信息;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当根据所述缓存命中字段信息确定CDN资源为回源获得的资源时,统计所述CDN资源对应的有效期内的回源率;
当所述回源率大于或等于预设阈值时,确定访问所述CDN节点异常。
可选的,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:通过所述检测代码检测根据所述响应消息生成的HTML标签;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当从所述HTML标签中检测到错误事件被触发时,确定访问CDN节点异常。
可选的,所述方法还包括:
在加载CDN资源之前,获取所述HTML标签中的第一完整性标识;
将所述第一完整性标识与所述资源对应的第二完整性标识进行比对;
当所述第一完整性标识与所述第二完整性标识不一致时,在所述HTML标签中触发所述错误事件。
可选的,所述方法还包括:
在生成所述资源时,采用预设哈希生成算法计算所述资源对应的哈希值;
根据所述哈希值生成所述第二完整性标识。
可选的,当根据所述CDN资源状态信息确定访问所述CDN节点异常时,所述方法还包括:
确定访问异常的CDN节点的节点标识和异常类型,以及所述CDN节点对应的告警终端;
向所述告警终端发送告警消息,所述告警消息包括:所述节点标识和异常类型。
根据本申请实施例的另一个方面,提供了一种资源访问装置,包括:
检测模块,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;
标识模块,用于当根据所述CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
发送模块,用于将所述Cookie发送到应用服务器,其中,所述应用服务器在检查到所述Cookie中的所述CDN异常标识时向所述客户端返回通过源服务器加载资源的入口文件;
加载模块,用于根据所述入口文件从所述源服务器加载所述资源。
根据本申请实施例的另一方面,还提供了一种资源访问系统,包括:相互连接的客户端及应用服务器;
所述客户端,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;当根据所述CDN资源状态信息确定访问所述CDN节点异常时,在Cookie中增加CDN异常标识;将所述Cookie发送到所述应用服务器;
所述应用服务器,用于在检查到所述Cookie中的所述CDN异常标识时,向所述客户端返回通过源服务器访问资源的入口文件;
所述客户端,用于根据所述入口文件从所述源服务器访问所述资源。
根据本申请实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的步骤。
根据本申请实施例的另一个方面,提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
在客户端注入检测代码,通过对响应消息进行检查以实现对访问CDN节点异常的监测。当出现访问CDN节点异常时,应用服务器将资源访问切换到作为CDN数据源的源服务器,直接从源服务器拉取资源。这样,避免CDN侧难以检测到个别用户访问异常且无法及时有效地解决异常问题的情况,客户端可以及时发现访问异常并自动将资源访问切换到源服务器,以保证用户能够及时、安全可靠地访问资源。另外,当个别用户访问CDN节点异常时,浏览器可以及时捕获异常并自动切换到源服务器,只有出现访问异常的个别用户能感知到,且用户可能仅感知到页面刷新,不会长时间没有响应或显示访问异常,不会影响到其他正常访问CDN节点的用户。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种资源访问方法的流程图;
图2为本申请另一实施例提供的一种资源访问方法的流程图;
图3为本申请实施例提供的CDN节点访问正常的场景示意图;
图4为本申请实施例提供的CDN节点访问异常的场景示意图;
图5为本申请实施例提供的一种资源访问装置的框图;
图6为本申请实施例提供的一种资源访问系统的框图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,个别用户访问CDN资源异常的原因,通常有以下几种:
(1)CDN节点无法连接或回源出错。
访问被调度到某个CDN节点却连接不到,或者CDN节点的回源出现问题,比如国外节点回源中国源服务器不通,导致某个地域下的用户访问应用报错。
(2)DNS劫持。
用户使用的运营商劫持CDN域名,导致某个运营商下的用户访问报错。
(3)DNS解析失败。
一般的,资源做CDN加速都是通过规范名字(CNAME)的方式。这种记录允许将多个名字映射到同一台计算机。将一个域名记录为A指向服务器IP,然后将其他域名作为别名(CNAME)记录到A的域名上。这样,服务器IP地址变更时,就可以不必对每个域名做更改指向,只需要更改A的域名映射到服务器新IP上,其他别名均自动更改映射到该新IP地址上。
用户访问CDN域名,一般通过CNAME解析到CDN调度中心。如果这个用户使用DNS已经存在CNAME解析后域名的缓存,那么DNS缓存会直接分配给他IP地址,而不会到达CDN调度中心。这样也会导致某些用户访问CDN资源时失败。
当然,个别用户访问CDN节点异常的原因并不限于上述情况,还有其他可能引起用户访问CDN节点异常的情形,在此不再赘述。当个别用户访问CDN资源异常时,CDN侧的监控难以感知或者感知较慢,使得用户长时间无法访问。
本申请实施例,在客户端61注入检测代码,对访问CDN节点62异常情况进行检测,当出现访问CDN节点62异常时,应用服务器63将资源访问切换到作为CDN数据源的源服务器64,直接从源服务器64拉取资源,以保证用户能够及时、安全可靠地访问资源。
其中,客户端包括Web应用与用户直接交互的浏览器、App、小程序(即无需下载安装即可使用的应用)等等。客户端通过监测用户在浏览器端的行为,响应用户的操作,并且作为用户和网络侧的沟通桥梁,当客户端无法处理某些行为,比如读写数据库数据时,客户端会调用网络侧接口,将网络侧返回的处理数据展示给用户。开发人员将静态资源打包发布到CDN中,客户端通过添加CDN链接地址加载静态资源。
应用服务器,为部署Web应用的服务器,接收客户端发送的资源请求,根据客户端对应的CDN节点返回获取资源的入口文件。
源服务器,也被称为源站(Origin Server),存储Web应用所需的资源。源服务器作为CDN网络的核心,各CDN节点向源服务器获取静态文件向用户访问进行分发。当CDN节点缓存中没有用户请求的资源时,会去源服务器拉取。
下面首先对本发明实施例所提供的一种资源访问方法进行介绍。
图1为本申请实施例提供的一种资源访问方法的流程图。如图1所示,该方法应用于客户端,包括以下步骤:
步骤S11,通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,响应消息为网络侧根据客户端发送的CDN资源请求反馈的;
步骤S12,当根据CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
步骤S13,将Cookie发送到应用服务器,其中,应用服务器在检查到Cookie中的CDN异常标识时向客户端返回通过源服务器访问资源的入口文件;
步骤S14,根据入口文件从源服务器访问资源。
通过上述步骤S11至S14,在客户端注入检测代码,通过对响应消息进行检查以实现对访问CDN节点异常的监测。当出现访问CDN节点异常时,应用服务器将资源访问切换到作为CDN数据源的源服务器,直接从源服务器拉取资源。这样,避免CDN侧难以检测到个别用户访问异常且无法及时有效地解决异常问题的情况,客户端可以及时发现访问异常并自动将资源访问切换到源服务器,以保证用户能够及时、安全可靠地访问资源。另外,当个别用户访问CDN节点异常时,浏览器可以及时捕获异常并自动切换到源服务器,只有出现访问异常的个别用户能感知到,且用户可能仅感知到页面刷新,不会长时间没有响应或显示访问异常,不会影响到其他正常访问CDN节点的用户。
在可选实施例中,在上述步骤S11中,客户端与网络侧的CDN节点、应用服务器等进行信息交互,网络侧的CDN节点、应用服务器等根据客户端发送的资源请求反馈响应消息。客户端通过检测代码检测到的CDN资源状态信息可以包括以下至少一项:CDN资源请求时长,缓存命中字段信息,错误事件,等等。
下面分别针对CDN资源状态信息的几种情况进行详细说明。
(一)CDN资源状态信息包括CDN资源请求时长。
CDN资源请求时长可以通过计算请求消息发送时间及资源获取时间之间的时间差得到。如果CDN资源请求时长过长,即资源请求速度过慢,则访问的CDN节点可能存在异常。
则上述步骤S11包括:通过检测代码从响应消息中检测请求消息发送时间及资源获取时间;根据请求消息发送时间及资源获取时间计算CDN资源请求时长。上述步骤S12包括:当CDN资源请求时长大于或等于时间阈值时,确定CDN节点异常。
(二)CDN资源状态信息包括缓存命中字段信息。
缓存命中字段信息,如HTTP头信息中的X-Cache字段,该字段用于表示CDN节点中是否缓存请求的CDN资源,如果缓存了该CDN资源,则X-Cache字段的值为Hit,如果没有缓存,则X-Cache字段的值为Miss。当X-Cache字段的值为Miss时,客户端请求得到的CDN资源是通过回源服务器获得的。
则上述步骤S11包括:通过检测代码从CDN资源响应的HTTP头信息中获取缓存命中字段信息。上述步骤S12包括:当根据缓存命中字段信息确定CDN资源为回源获得的资源时,统计CDN资源对应的有效期内的回源率;当回源率大于或等于预设阈值时,确定CDN节点异常。
(三)CDN资源状态信息包括错误事件。
可选的,错误事件可以为Onerror事件。在网络异常或者域名配置导致的CDN资源请求不通,包括源站地址和端口不正确、回源请求故障等情况时,触发Onerror事件。支持Onerror事件的HTML标签有<img>、<object>和<style>。Onerror事件的语法为onerror="SomeJavaScriptCode",SomeJavaScriptCode,用于规定该事件发生时执行的JavaScript。例如,若请求图像资源发生错误,则Onerror事件代码如下:
<imgsrc="image.gif"onerror="alert('The image could not beloaded.')"/>。
则上述步骤S11包括:通过检测代码检测根据响应消息生成的HTML标签。检测代码检测HTML标签中的错误事件是否被触发。上述步骤S12包括:当从HTML标签中检测到错误事件被触发时,确定CDN节点异常。
本实施例中,CDN资源状态信息并不限于上述几种情况,还可包括其他可以指示CDN节点异常的信息,在此不再赘述。
相关技术中,导致访问CDN节点异常的原因还可能为CDN资源被恶意劫持篡改。例如,当某个CDN节点下的资源被劫持,导致某些地区应用中出现广告甚至违法信息时,维护人员只能通过用户投诉得知到访问异常。为了实现快速主动发现CDN资源劫持,本实施例中,在HTML标签中,增加完整性标识,将该完整性标识与资源所对应的完整性标识进行比对,以确定从CDN请求得到的资源是否被劫持篡改。
图2为本申请另一实施例提供的一种资源访问方法的流程图。如图2所示,该方法还包括以下步骤:
步骤S21,在加载CDN资源之前,获取HTML标签中的第一完整性标识;
步骤S22,将第一完整性标识与资源对应的第二完整性标识进行比对;
步骤S23,当第一完整性标识与第二完整性标识不一致时,在HTML标签中触发错误事件。
通过步骤S21至S23,通过资源完整性标识,可以检测资源是否被劫持篡改,当HTML标签中完整性标识与资源的完整性标识不一致时,在HTML标签中触发错误事件,客户端检测代码就可通过检测到该错误事件确定访问CDN异常,从而将访问切换到源服务器。这样,提高资源访问的安全可靠性,保证用户能够及时准确地访问到资源。
在可选实施例中,可以通过资源加载/打包工具Webpack,在客户端根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。在生成静态资源后,遍历所有静态资源文件,添加错误处理函数,当发现完整性标识不一致时,在HTML的静态资源标签触发Onerror事件。
可选的,该完整性标签可以为Integrity属性值,例如,在HTML用于获取静态资源的标签中,如<img>、<script>等,添加Integrity属性值。
在资源生成阶段,可以使用html-webpack-plugin插件配置入口文件并生成HTML模版,同时使用webpack-subresource-integrity插件设置资源的Integrity属性。当从HTML标签中获取到的第一Integrity属性值与资源的第二Integrity属性值不一致时,说明从CDN节点获取到的资源被劫持篡改,则Onerror事件被触发,执行该Onerror事件对应的错误处理函数。
可选的,还可以采用gulp-sri-hash等插件来设置资源的Integrity属性。
在另一可选实施例中,该方法还包括:在生成资源时,采用预设哈希生成算法计算资源对应的哈希值;根据哈希值生成第二完整性标识。
可选的,完整性标签中可以包括基于预设哈希生成算法计算的该资源对应的哈希值;或者,该完整性标签可以包括预设哈希生成算法及哈希值。
例如,完整性标签为Integrity属性值,哈希生成算法包括:sha256、sha384或sha512等。
如,资源地址为https://example.com/static/js/other/zepto.js,使用sha256算法对资源进行哈希计算,并进行Base64编码,具体如下:
curl https://example.com/static/js/other/zepto.js|openssldgst-sha256-binary|opensslenc-base64–A;
b/TAR5GfYbbQ3gWQCA3fxESsvgU4AbP4rZ+qu1d9CuQ=。
若Integrity属性值仅包括哈希值,则Integrity属性值表示如下:
integrity="b/TAR5GfYbbQ3gWQCA3fxESsvgU4AbP4rZ+qu1d9CuQ="。
若Integrity属性值包括预设哈希生成算法及哈希值,哈希生成算法和哈希值用“-”分隔,则Integrity属性值表示如下:
integrity="sha256-b/TAR5GfYbbQ3gWQCA3fxESsvgU4AbP4rZ+qu1d9CuQ="。
得到最终代码如下:
<scriptcrossorigin="anonymous"
integrity="sha256-b/TAR5GfYbbQ3gWQCA3fxESsvgU4AbP4rZ+qu1d9CuQ="src="https://example.com/static/js/other/zepto.js"></script>。
通过在HTML标签中设置完整性标识,可以快速准确地确定访问CDN异常,从而将访问切换到服务器源站。这样,提高资源访问的安全可靠性,保证用户能够及时准确地访问到资源。
在可选实施例中,应用服务器预先存储两种入口文件,一种为访问CDN节点正常时指向CDN节点的入口文件,如index.html,另一种为访问CDN节点异常时指向源服务器的入口文件,如index_backup.html。其中,该入口文件可以为客户端在Webpack打包过程中构建的,由客户端发送到应用服务器。
相关技术中,Cookie是网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。当客户端首次访问服务器时,服务器先在客户端存放包含该客户的相关信息的Cookie,以后客户端每次请求访问服务器时,都会在HTTP请求数据中包含Cookie,应用服务器解析HTTP请求中的Cookie,就能由此获得关于客户的相关信息。
在上述步骤S13中,当确定访问CDN异常时,如Onerror事件被触发后,客户端调用相应的JS处理逻辑,会在Cookie中增加CDN异常标识,如“isAbormal=true”。客户端将包括该CDN异常标识的Cookie发送到服务器。
由于应用服务器包括两种入口文件,若服务器未检测到“isAbormal=true”,返回给客户端的入口文件为指向CDN节点的入口文件,如index.html;若服务器检测到“isAbormal=true”,则返回给客户端的入口文件为指向服务器源站的入口文件,如“index_backup.html”。
在上述步骤S14中,客户端根据应用服务器返回的入口文件“index_backup.html”,到源服务器获取资源。当访问CDN节点正常时,根据应用服务器返回的入口文件“index.html”,到CDN节点获取资源。
图3为本申请实施例提供的CDN节点访问正常的场景示意图。如图3所示,源服务器34作为CDN网络的核心,各CDN节点321、322、323……从源服务器34获取静态文件向用户访问进行分发。CDN网络根据就近性原则和服务器负载的判断,保证资源服务的高效性。用户在通过客户端访问web应用时,客户端从CDN节点拉取资源。其中,客户端311、312从CDN节点321获取资源;客户端313从CDN节点322获取资源;客户端314从CDN节点323获取资源。
客户端向应用服务器33发送Cookie“XXX=XXX”。应用服务器33从Cookie中未检测到异常标识,则返回入口文件“index.html”。客户端311、312从CDN节点321请求数据,客户端313从CDN节点322请求数据,客户端314从CDN节点323请求数据。
图4为本申请实施例提供的CDN节点访问异常的场景示意图。如图4所示,客户端311、312捕获到异常,并将Cookie中增加异常标识,将Cookie“XXX=XXX,isAbormal=true,……”发送到应用服务器33。应用服务器33检测到异常标识“isAbormal=true”,则返回入口文件“index_backup.html”,则客户端311、312的静态资源改为指向为源服务器34,从源服务器34访问资源。其他客户端则正常从CDN节点访问资源。由此,保证了用户的正常使用。
在另一可选实施例中,当根据CDN资源状态信息确定访问CDN节点异常时,该方法还包括:确定访问异常的CDN节点的节点标识和异常类型,以及CDN节点对应的告警终端;向告警终端发送告警消息,告警消息包括:节点标识和异常类型。
其中,异常类型可以基于检测到的CDN资源状态信息确定,如CDN资源状态信息包括CDN资源请求时长时,异常类型为“资源请求速度慢”;CDN资源状态信息包括缓存命中字段信息时,异常类型为“回源率高”;等等。由于不同的CDN节点可能由不同厂商提供,则不同CDN节点对应的告警终端不同。告警终端可以包括预先设置CDN厂商工作人员的邮箱、电话、微信号等。客户端将告警消息通过邮件、短消息、微信等方式发送到告警终端,通知CDN厂商工作人员排查CDN节点异常。本申请上述实施例中,在客户端侧检测访问CDN节点异常,包括:访问不稳定,如资源请求速度慢、回源率高;请求不通,如源服务器地址和端口不正确、回源请求故障等;资源被劫持;等等,当检测到异常时,通过在Cookie中添加异常标识,使得服务器将资源访问的入口文件切换至源服务器,以保证用户能够及时、安全可靠地访问资源。另外,当个别用户访问CDN节点异常时,浏览器可以及时捕获异常并自动切换源服务器,只有出现访问异常的个别用户能感知到,且用户可能仅感知到页面刷新,不会长时间没有响应或显示访问异常,不会影响到其他正常访问CDN节点的用户。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图5为本申请实施例提供的一种资源访问装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图5所示,该资源访问装置50包括:
检测模块51,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,响应消息为CDN节点根据客户端发送的CDN资源请求反馈的;
标识模块52,用于当根据CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
发送模块53,用于将Cookie发送到应用服务器,其中,应用服务器在检查到Cookie中的CDN异常标识时向客户端返回从源服务器加载资源的入口文件;
加载模块54,用于根据入口文件从源服务器加载资源。
可选的,该装置还包括:
获取模块,用于在加载CDN资源之前,获取HTML标签中的第一完整性标识;
比对模块,用于将第一完整性标识与资源对应的第二完整性标识进行比对;
添加模块,用于当第一完整性标识与第二完整性标识不一致时,在HTML标签中触发错误事件。
可选的,该装置还包括:
计算模块,用于在生成资源时,采用预设哈希生成算法计算资源对应的哈希值;
生成模块,用于根据哈希值生成第二完整性标识。
可选的,该装置还包括:
确定模块,用于当根据CDN资源状态信息确定访问CDN节点异常时,确定访问异常的CDN节点的节点标识和异常类型,以及CDN节点对应的告警终端;
告警模块,用于向告警终端发送告警消息,告警消息包括:节点标识和异常类型。
图6为本申请实施例提供的一种资源访问系统的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,该资源访问系统包括:相互连接的客户端61及应用服务器63。
其中,客户端61与应用服务器63分别与CDN节点62连接,客户端61和CDN节点62分别与源服务器64连接。
客户端61,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,响应消息为网络侧根据客户端发送的CDN资源请求反馈的;当根据CDN资源状态信息确定访问CDN节点62异常时,在Cookie中增加CDN异常标识;将Cookie发送到应用服务器63;
应用服务器63,用于在检查到Cookie中的CDN异常标识时,向客户端返回通过源服务器访问资源的入口文件;
客户端61,用于根据入口文件从源服务器64访问资源。
可选的,客户端61,还用于在生成所述资源时,采用预设哈希生成算法计算所述资源对应的哈希值;根据所述哈希值生成所述第二完整性标识。
可选的,客户端61,还用于在加载CDN资源之前,获取所述HTML标签中的第一完整性标识;将所述第一完整性标识与所述资源对应的第二完整性标识进行比对;当所述第一完整性标识与所述第二完整性标识不一致时,在所述HTML标签中触发所述错误事件。
可选的,客户端61,还用于当根据所述CDN资源状态信息确定访问所述CDN节点异常时,确定访问异常的CDN节点的节点标识和异常类型,以及所述CDN节点对应的告警终端;向所述告警终端发送告警消息,所述告警消息包括:所述节点标识和异常类型。
本申请实施例还提供一种电子设备,如图7所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以下上述方法实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,P C I)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下上述方法实施例的步骤。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (11)
1.一种资源访问方法,其特征在于,包括:
通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;
当根据所述CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
将所述Cookie发送到应用服务器,其中,所述应用服务器在检查到所述Cookie中的所述CDN异常标识时向所述客户端返回通过源服务器访问资源的入口文件;
根据所述入口文件从所述源服务器访问所述资源。
2.根据权利要求1所述的方法,其特征在于,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:
通过所述检测代码从所述响应消息中检测请求消息发送时间及资源获取时间;
根据所述请求消息发送时间及资源获取时间计算CDN资源请求时长;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当所述CDN资源请求时长大于或等于时间阈值时,确定所述CDN节点异常。
3.根据权利要求1所述的方法,其特征在于,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:
通过所述检测代码从响应消息的HTTP头信息中获取缓存命中字段信息;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当根据所述缓存命中字段信息确定CDN资源为回源获得的资源时,统计所述CDN资源对应的有效期内的回源率;
当所述回源率大于或等于预设阈值时,确定访问所述CDN节点异常。
4.根据权利要求1所述的方法,其特征在于,所述通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,包括:通过所述检测代码检测根据所述响应消息生成的HTML标签;
所述根据所述CDN资源状态信息确定访问所述CDN节点异常,包括:
当从所述HTML标签中检测到错误事件被触发时,确定访问CDN节点异常。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在加载CDN资源之前,获取所述HTML标签中的第一完整性标识;
将所述第一完整性标识与所述资源对应的第二完整性标识进行比对;
当所述第一完整性标识与所述第二完整性标识不一致时,在所述HTML标签中触发所述错误事件。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在生成所述资源时,采用预设哈希生成算法计算所述资源对应的哈希值;
根据所述哈希值生成所述第二完整性标识。
7.根据权利要求1所述的方法,其特征在于,当根据所述CDN资源状态信息确定访问所述CDN节点异常时,所述方法还包括:
确定访问异常的CDN节点的节点标识和异常类型,以及所述CDN节点对应的告警终端;
向所述告警终端发送告警消息,所述告警消息包括:所述节点标识和异常类型。
8.一种资源访问装置,其特征在于,包括:
检测模块,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;
标识模块,用于当根据所述CDN资源状态信息确定访问CDN节点异常时,在Cookie中增加CDN异常标识;
发送模块,用于将所述Cookie发送到应用服务器,其中,所述应用服务器在检查到所述Cookie中的所述CDN异常标识时向所述客户端返回通过源服务器加载资源的入口文件;
加载模块,用于根据所述入口文件从所述源服务器加载所述资源。
9.一种资源访问系统,其特征在于,包括:相互连接的客户端及应用服务器;
所述客户端,用于通过在客户端代码中注入检测代码,检测响应消息得到CDN资源状态信息,所述响应消息为网络侧根据客户端发送的CDN资源请求反馈的;当根据所述CDN资源状态信息确定访问所述CDN节点异常时,在Cookie中增加CDN异常标识;将所述Cookie发送到所述应用服务器;
所述应用服务器,用于在检查到所述Cookie中的所述CDN异常标识时,向所述客户端返回通过源服务器访问资源的入口文件;
所述客户端,用于根据所述入口文件从所述源服务器访问所述资源。
10.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现权利要求1-7任一项所述的方法步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-7任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010981096.XA CN112202631A (zh) | 2020-09-17 | 2020-09-17 | 一种资源访问方法、装置、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010981096.XA CN112202631A (zh) | 2020-09-17 | 2020-09-17 | 一种资源访问方法、装置、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112202631A true CN112202631A (zh) | 2021-01-08 |
Family
ID=74015415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010981096.XA Pending CN112202631A (zh) | 2020-09-17 | 2020-09-17 | 一种资源访问方法、装置、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112202631A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491612A (zh) * | 2020-11-26 | 2021-03-12 | 掌阅科技股份有限公司 | 网络异常数据的上报方法、终端以及计算机存储介质 |
CN112732999A (zh) * | 2021-01-21 | 2021-04-30 | 建信金融科技有限责任公司 | 静态容灾方法、系统、电子设备及存储介质 |
CN112866060A (zh) * | 2021-01-25 | 2021-05-28 | 湖南快乐阳光互动娱乐传媒有限公司 | 服务器响应时长获取方法及装置 |
CN115150258A (zh) * | 2021-03-30 | 2022-10-04 | 天翼云科技有限公司 | Cdn节点配置方法、系统以及存储介质 |
EP4175243A4 (en) * | 2021-06-22 | 2023-08-23 | Beijing Baidu Netcom Science Technology Co., Ltd. | CONTENT DELIVERY NETWORK PROCESSING METHOD AND APPARATUS |
CN116743613A (zh) * | 2022-03-03 | 2023-09-12 | 合肥登登立科技有限公司 | 一种在网络路径中观测cdn网站回源率的方法 |
WO2023226887A1 (zh) * | 2022-05-27 | 2023-11-30 | 华为技术有限公司 | 业务容灾方法、终端设备、软件开发包服务器和通信系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621816A (zh) * | 2009-07-29 | 2010-01-06 | 深圳市五巨科技有限公司 | 一种监控移动终端后台服务器的系统和方法 |
CN102420851A (zh) * | 2011-11-10 | 2012-04-18 | 百度在线网络技术(北京)有限公司 | Http服务监控方法及系统 |
CN102594921A (zh) * | 2012-03-22 | 2012-07-18 | 网宿科技股份有限公司 | 基于内容分发网络的同步文件的访问方法和系统 |
CN103997518A (zh) * | 2014-05-06 | 2014-08-20 | 广州金山网络科技有限公司 | 一种cdn节点文件同步方法和装置 |
CN104754073A (zh) * | 2015-03-25 | 2015-07-01 | 百度在线网络技术(北京)有限公司 | 一种资源访问方法及装置 |
CN107465708A (zh) * | 2016-06-02 | 2017-12-12 | 腾讯科技(深圳)有限公司 | 一种cdn带宽调度系统及方法 |
US20180007085A1 (en) * | 2012-08-07 | 2018-01-04 | Cloudflare, Inc. | Mitigating a Denial-of-Service Attack in a Cloud-Based Proxy Service |
US20180069947A1 (en) * | 2016-09-07 | 2018-03-08 | Adobe Systems Incorporated | Automatic Integrity Checking of Content Delivery Network Files |
CN107888452A (zh) * | 2017-11-24 | 2018-04-06 | 成都知道创宇信息技术有限公司 | 一种24小时分布式网站性能监测和实时告警方法 |
CN108200132A (zh) * | 2017-12-21 | 2018-06-22 | 中国平安人寿保险股份有限公司 | 资源获取方法、装置、设备及计算机可读存储介质 |
CN110096659A (zh) * | 2019-03-27 | 2019-08-06 | 北京三快在线科技有限公司 | 一种页面显示方法、装置、设备及可读存储介质 |
CN111628878A (zh) * | 2019-02-27 | 2020-09-04 | 北京奇虎科技有限公司 | 基于多级网络节点的故障定位方法、装置及系统 |
-
2020
- 2020-09-17 CN CN202010981096.XA patent/CN112202631A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101621816A (zh) * | 2009-07-29 | 2010-01-06 | 深圳市五巨科技有限公司 | 一种监控移动终端后台服务器的系统和方法 |
CN102420851A (zh) * | 2011-11-10 | 2012-04-18 | 百度在线网络技术(北京)有限公司 | Http服务监控方法及系统 |
CN102594921A (zh) * | 2012-03-22 | 2012-07-18 | 网宿科技股份有限公司 | 基于内容分发网络的同步文件的访问方法和系统 |
US20180007085A1 (en) * | 2012-08-07 | 2018-01-04 | Cloudflare, Inc. | Mitigating a Denial-of-Service Attack in a Cloud-Based Proxy Service |
CN103997518A (zh) * | 2014-05-06 | 2014-08-20 | 广州金山网络科技有限公司 | 一种cdn节点文件同步方法和装置 |
CN104754073A (zh) * | 2015-03-25 | 2015-07-01 | 百度在线网络技术(北京)有限公司 | 一种资源访问方法及装置 |
CN107465708A (zh) * | 2016-06-02 | 2017-12-12 | 腾讯科技(深圳)有限公司 | 一种cdn带宽调度系统及方法 |
US20180069947A1 (en) * | 2016-09-07 | 2018-03-08 | Adobe Systems Incorporated | Automatic Integrity Checking of Content Delivery Network Files |
CN107888452A (zh) * | 2017-11-24 | 2018-04-06 | 成都知道创宇信息技术有限公司 | 一种24小时分布式网站性能监测和实时告警方法 |
CN108200132A (zh) * | 2017-12-21 | 2018-06-22 | 中国平安人寿保险股份有限公司 | 资源获取方法、装置、设备及计算机可读存储介质 |
CN111628878A (zh) * | 2019-02-27 | 2020-09-04 | 北京奇虎科技有限公司 | 基于多级网络节点的故障定位方法、装置及系统 |
CN110096659A (zh) * | 2019-03-27 | 2019-08-06 | 北京三快在线科技有限公司 | 一种页面显示方法、装置、设备及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
WU YONG,: ""GIS based on CDN"", 《THE 2ND INTERNATIONAL CONFERENCE ON INFORMATION SCIENCE AND ENGINEERING》 * |
朱渝苏,: ""基于Web平台的CDN监测系统的研究与实现"", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112491612A (zh) * | 2020-11-26 | 2021-03-12 | 掌阅科技股份有限公司 | 网络异常数据的上报方法、终端以及计算机存储介质 |
CN112732999A (zh) * | 2021-01-21 | 2021-04-30 | 建信金融科技有限责任公司 | 静态容灾方法、系统、电子设备及存储介质 |
CN112732999B (zh) * | 2021-01-21 | 2023-06-09 | 建信金融科技有限责任公司 | 静态容灾方法、系统、电子设备及存储介质 |
CN112866060A (zh) * | 2021-01-25 | 2021-05-28 | 湖南快乐阳光互动娱乐传媒有限公司 | 服务器响应时长获取方法及装置 |
CN112866060B (zh) * | 2021-01-25 | 2022-05-17 | 湖南快乐阳光互动娱乐传媒有限公司 | 服务器响应时长获取方法及装置 |
CN115150258A (zh) * | 2021-03-30 | 2022-10-04 | 天翼云科技有限公司 | Cdn节点配置方法、系统以及存储介质 |
EP4175243A4 (en) * | 2021-06-22 | 2023-08-23 | Beijing Baidu Netcom Science Technology Co., Ltd. | CONTENT DELIVERY NETWORK PROCESSING METHOD AND APPARATUS |
CN116743613A (zh) * | 2022-03-03 | 2023-09-12 | 合肥登登立科技有限公司 | 一种在网络路径中观测cdn网站回源率的方法 |
CN116743613B (zh) * | 2022-03-03 | 2024-08-30 | 杭州流形新网络科技有限公司 | 一种在网络路径中观测cdn网站回源率的方法 |
WO2023226887A1 (zh) * | 2022-05-27 | 2023-11-30 | 华为技术有限公司 | 业务容灾方法、终端设备、软件开发包服务器和通信系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112202631A (zh) | 一种资源访问方法、装置、系统、电子设备及存储介质 | |
CN110096659B (zh) | 一种页面显示方法、装置、设备及可读存储介质 | |
US8856325B2 (en) | Network element failure detection | |
US20240119145A1 (en) | System and method for cybersecurity threat detection utilizing static and runtime data | |
US20200327045A1 (en) | Test System and Test Method | |
CN101997925A (zh) | 具有预警功能的服务器监控方法及其系统 | |
JP6220625B2 (ja) | 遅延監視システムおよび遅延監視方法 | |
CN112631913A (zh) | 应用程序的运行故障监控方法、装置、设备和存储介质 | |
CN103716398A (zh) | Cdn服务器的监控方法和监控系统 | |
US20190058647A1 (en) | Measuring response trends in a digital television network | |
CN114144761B (zh) | 发布系统、推送方法、应用设备、接收装置及服务管理设备 | |
CN106571975B (zh) | 一种通信数据的容错方法及装置 | |
CN103731315A (zh) | 一种服务器故障检测方法 | |
CN109740386B (zh) | 一种静态资源文件的检测方法及装置 | |
CN109474484A (zh) | Cdn的检查方法及装置、系统 | |
CN115987827B (zh) | 一种设备监测方法、装置、电子设备及可读介质 | |
US11153769B2 (en) | Network fault discovery | |
CN108880920B (zh) | 云服务管理方法、装置以及电子设备 | |
CN103731365A (zh) | 一种无瓶颈负载均衡网络服务器系统及其构建方法 | |
CN107066373B (zh) | 控制处理方法及装置 | |
CN112835780B (zh) | 一种业务检测方法及装置 | |
CN111106962B (zh) | 流媒体故障监测方法、装置、电子设备及存储介质 | |
CN115842716B (zh) | 故障服务器的确定方法、装置、设备以及存储介质 | |
JP4913002B2 (ja) | Webアプリケーション監視装置 | |
CN110225543B (zh) | 基于网络请求数据的移动端软件质量态势感知系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210108 |
|
RJ01 | Rejection of invention patent application after publication |