容灾切换方法、装置、存储介质及电子设备与流程

文档序号:23711633发布日期:2021-01-23 20:59阅读:127来源:国知局
容灾切换方法、装置、存储介质及电子设备与流程

[0001]
本申请涉及计算机技术领域,尤其涉及一种容灾切换方法、装置、存储介质及电子设备。


背景技术:

[0002]
随着通信技术的发展,客户端上的网页应用场景越来越丰富。通常,客户端在网页应用场景下,会基于相应的网络域名访问对象存储服务来获取相应的静态资源,并基于静态资源完成对网页的加载。
[0003]
目前,客户端访问对象存储服务时的网络域名由服务端下发,当客户端基于服务端下发的网络域名(可以理解为主网络域名)无法获取到静态资源时,客户端会向服务端上报域名访问失败的事件,然后由服务端向客户端下发备用网络域名,客户端通过备用网络域名重新访问对象存储服务获取静态资源,从而完成网络容灾。


技术实现要素:

[0004]
本申请实施例提供了一种容灾切换方法、装置、存储介质及电子设备,可以提升容灾切换的成功率。本申请实施例的技术方案如下:
[0005]
第一方面,本申请实施例提供了一种容灾切换方法,所述方法包括:
[0006]
以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败;
[0007]
获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0008]
第二方面,本申请实施例提供了一种容灾切换装置,所述装置包括:
[0009]
第一域名获取模块,用于以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败;
[0010]
第二域名获取模块,用于获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0011]
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
[0012]
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
[0013]
本申请一些实施例提供的技术方案带来的有益效果至少包括:
[0014]
在本申请一个或多个实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容
灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率。
附图说明
[0015]
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]
图1是本申请实施例提供的一种容灾切换方法的流程示意图;
[0017]
图2是本申请实施例提供的另一种容灾切换方法的流程示意图;
[0018]
图3是本申请实施例提供的另一种容灾切换方法的流程示意图;
[0019]
图4是本申请实施例提供的另一种容灾切换方法的流程示意图;
[0020]
图5是本申请实施例提供的一种容灾切换的场景架构示意图;
[0021]
图6是本申请实施例提供的一种容灾切换装置的结构示意图;
[0022]
图7是本申请实施例提供的一种域名信息获取模块的结构示意图;
[0023]
图8是本申请实施例提供的另一种容灾切换装置的结构示意图;
[0024]
图9是本申请实施例提供的一种电子设备的结构示意图;
[0025]
图10是本申请实施例提供的操作系统和用户空间的结构示意图;
[0026]
图11是图9中安卓操作系统的架构图;
[0027]
图12是图9中ios操作系统的架构图。
具体实施方式
[0028]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0029]
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0030]
在相关技术中,当客户端主网络域名不可用,也即基于主网络域名客户端无法获
取到相应的静态资源的情况下,此时客户端请求域名失败,会把基于第主网络域名的请求错误上报给服务端,服务端会基于请求错误向客户端下发备用网络域名。在整个过程中,一方面,静态资源访问的容灾切换方案依赖于客户端与服务端之间的通信链路,在通信链路故障的情况下,就会导致静态资源对应的网络业务出现问题。另一方面,服务端通常会在某一主网络域名的请求错误数达到切换阈值的情况下才会统一下发备用网络域名,若只有少量客户端访问域名失败,而上报的请求错误数没有达到切换阈值,那么这些少量访问域名失败的客户端将不会进行容灾切换。
[0031]
下面结合具体的实施例对本申请进行详细说明。
[0032]
在一个实施例中,如图1所示,特提出了一种容灾切换方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的容灾切换装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。
[0033]
具体的,该容灾切换方法包括:
[0034]
步骤s101:以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败。
[0035]
所述网络域名在本实施例可以理解为用于访问对象存储服务的静态域名,内容分发网络(content delivery network,cdn)与提供对象存储服务的数据库相关联,“提供对象存储服务的数据库”存储有诸如静态脚本、图片、多媒体数据、应用安装包等静态资源,内容分发网络基于提供对象存储服务的数据库”向客户端提供网络服务(如对象存储服务),客户端可以基于网络域名访问cdn网络上的对象存储服务,从而获取到对象存储服务上的静态资源。简而言之,以图片存储为例,简单说,对象存储服务是存储图片的,cdn是为客户端加速下载图片的。“对象存储+cdn”应用于本实施例中,可以方便客户端从对象储存服务中快速获取静态资源,也即,在一些实施例中,客户端以第一网络域名访问时,实际会访问到内容分发网络(content delivery network,cdn)上距离客户端最近的cdn边缘节点,从而方便客户端就近取得数据,提高资源获取时的响应速度;实际应用中,cdn本质上是一个分布式缓存系统,每个服务节点上都缓存了源站(可以理解为“提供对象存储服务的数据库”)的一部分数据,也就是用户最近经常访问的数据。例如:在第一次通过某一访问节点访问对象存储服务对应的静态资源时,该访问节点会储存cdn网络的cdn中心节点下发的一部分静态资源,以方便二次访问时,可以直接向客户端提供静态资源。因此,大部分客户端的用户请求其实都是在cdn边缘节点上完成,并没有达到源站,这样减少了响应时间,也减轻了源站的负担,可以实现高流量、大并发的网站访问。
[0036]
其中,本实施例中,所述第一网络域名作为一种网络域名,客户端可以预先存储有访问对象储存服务中静态资源的第一网络域名;进一步的。通常静态资源对应的网络域名通常是不变的,在本实施中,客户端与服务端相对应,客户端启动后,通常会实时或周期性与服务端进行通信,客户端在访问第一网络域名,获取对象存储服务对应的静态资源之前,会在与服务端的通信过程中获取到用于诸如第一网络域名等获取静态资源的网络域名,并将其保存。
[0037]
在一种具体的实施场景中,客户端基于cdn域名访问内容分发网络上的所述cdn进行加速服务,提高对所述cdn域名的访问速度,从而快速获取到对象存储服务对应的静态资源。
[0038]
其中,对象存储服务将数据通道(需要访问的数据或资源时对应的通信传输通道)和控制通路(元数据对应的通信传输通道,也即索引通信传输通道)分离,先根据索引(也就是元数据)找到数据存储的位置,进而通过底层的存储接口来访问数据。其中,对象存储服务上存储的数据主要包括图片、音频、视频等非结构化数据,也即本实施例提及的静态资源中的之一。
[0039]
在一些实施例中,所述静态资源:可以理解为前端的固定页面,这里面包括但不限于html数据、css数据、js数据、图片、音频、视频等等,这类静态资源不需要查数据库也不需要程序处理,直接就能够显示的页面通常客户端在基于网络域名去访问对象存储服务从而获取静态资源时,其访问效率较高,获取静态资源的速度也加快。
[0040]
在本实施例中,客户端可以通过第一网络域名来获取对象存储服务对应的静态资源,在实际应用中,会存在与第一网络域名相关的通信链路出现问题从而造成客户端基于第一网络域名获取资源失败的情况。如,第一网络域名对应的通信链路在网络带宽不足和/或服务器处理能力不够的情形下(例如晚上上课是用网高峰期,网络卡顿),会使得客户端基于第一网络域名获取静态资源的传输过程受阻,例如客户端上产生延迟、卡顿乃至掉线等等,此时,客户端可以确定基于所述第一网络域名获取资源失败。
[0041]
步骤s102:获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0042]
其中,所述第二网络域名为预先存储的第一网络域名的备用域名,在第一网络域名不可用的情况下,客户端可以基于预先储存的第二网络域名快速进行容灾切换。
[0043]
在相关技术中,当客户端第一网络域名不可用,也即基于第一网络域名客户端无法获取到相应的静态资源的情况下,此时客户端请求域名失败,会把基于第一网络域名的请求错误上报给服务端,服务端会基于请求错误向客户端下发备用的第二网络域名。因此,在整个过程中,静态资源访问的容灾切换方案依赖于客户端与服务端之间的通信链路,在通信链路故障的情况下,就会导致静态资源对应的网络业务出现问题。
[0044]
在本实施例中,通常静态资源对应的网络域名通常是不变的,在本实施例中,客户端与服务端相对应,客户端启动后,通常会实时或周期性与服务端进行通信,客户端在访问第一网络域名,获取对象存储服务对应的静态资源之前,会在与服务端的通信过程中获取到用于诸如第一网络域名以及第二网络域名等获取静态资源的网络域名,并将其保存。例如:客户端在正常启动并成功建立与服务端之间的通信链路的情况下,服务端可以向客户端下发主备域名用于客户端进行容灾切换,“主备域名”可以理解为第一网络域名和第二网络域名同时下发至客户端,其中,所述第二网络域名的数量可以是多个,如实际应用中可以下发一主一备的网络域名,也可以下发一主多备的网络域名,具体根据实际应用环境确定,此处不做具体限制;进一步的,客户端在正常启动并成功建立与服务端之间的通信链路的情况下,客户端可以向服务端主动发起针对多个网络域名(如主备域名)的域名获取请求,服务端响应于客户端的域名获取请求可以向客户端端下发主备域名用于客户端进行容灾切换;以便在客户端基于第一网络域名确定获取静态资源失败的情况下,可以直接基于预存的第二网络域名直接访问对象储存服务获取到静态资源。
[0045]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资
源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率。
[0046]
请参见图2,图2是本申请提出的一种容灾切换方法的另一种实施例的流程示意图。具体的:
[0047]
步骤s201:向服务端获取所述对象存储服务的域名信息,所述域名信息至少包括第一网络域名以及第二网络域名。
[0048]
在本实施例中,通常静态资源对应的网络域名(如第一网络域名)通常是不变的,在本实施例中,客户端与服务端相对应,也即客户端会与服务建立连接并进行相应的通信传输。具体实施中,客户端启动后,通常会实时或周期性与服务端进行通信,客户端在获取对象存储服务对应的静态资源之前,会基于和服务端之间的通信连接,在与服务端的通信过程中获取到用于诸如第一网络域名以及第二网络域名等获取静态资源的网络域名,并将其保存。
[0049]
例如:客户端在正常启动并成功建立与服务端之间的通信链路的情况下,服务端可以基于客户端对应的客户信息(如ip地址、端口、网络状况)为客户端确定域名信息,其中,通常会将与客户端较近的提供对象存储服务的cdn边缘节点对应一个或多个的访问网络域名作为域名信息下发(如确定最近的cdn边缘节点对应的网络域名为第一网络域名、确定次近的cdn边缘节点对应的网络域名为第二网络域名、如确定最近的cdn边缘节点对应的备用网络域名为第二网络域名等等),从而服务端可以主动向客户端端下发域名信息(包含主备域名)用于客户端进行容灾切换,“主备域名”可以理解为第一网络域名和第二网络域名同时下发至客户端,其中,所述第二网络域名的数量可以是多个,如实际应用中可以下发一主一备的网络域名,也可以下发一主多备的网络域名,具体域名信息中域名的数量根据实际应用环境确定,此处不做具体限制。
[0050]
进一步的,客户端在正常启动并成功建立与服务端之间的通信链路的情况下,客户端可以向服务端主动发起针对多个网络域名(如主备域名)的域名获取请求,服务端响应于客户端的域名获取请求可以向客户端端下发主备域名用于客户端进行容灾切换;以便在客户端基于第一网络域名确定获取静态资源失败的情况下,可以直接基于预存的第二网络域名直接访问对象储存服务获取到静态资源。
[0051]
进一步的,客户端与服务端之间的通信连接通常为采用预设通信架构建立的通信连接服务,所述通信架构是指进行数据通信的一种通信结构,通信架构定义了数据网络通信系统的各个方面,包含通信的接口类型、使用的网络协议、实现的数据框架、通信布线的类型等。常用的通信架构可以是tcp/ip架构,netty架构、c/s架构、soa架构等。如,一种所述通信架构可以是为采用基于java开源的netty框架,并配合websocket技术从而实现通信网络中服务端与客户端之间建立一种长连接(或短连接)的通信连接,并基于通信连接实现两端之间的通信数据的交互,如获取或下发域名信息。以下将对基于长连接的通信链路以及基于短连接的通信连接进行详细释义,如下:
[0052]
其中,所述所建立的通信连接可以为http长连接的通信链路或http短连接的通信链路。
[0053]
长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。
[0054]
长连接的操作步骤是:建立连接——数据传输...(保持连接)...数据传输——关闭连接。
[0055]
短连接是指通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。
[0056]
短连接的操作步骤是:建立连接——数据传输——关闭连接...建立连接——数据传输——关闭连接。
[0057]
长连接多用于操作频繁,点对点的通讯。每个tcp连接都需要三步握手,这需要时间,如果每个操作都是短连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,下次处理时直接发送数据包就ok了,不用建立tcp连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,而且频繁的socket创建也是对资源的浪费。
[0058]
而像web网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短链接好。
[0059]
长连接可以省去较多的tcp建立和关闭的操作,减少浪费,节约时间。在实际应用中,当通信链路传输的通信数据为对通信传输质量要求高的实时在线教学视频数据时,可以采用基于长连接的通信链路,如服务端与客户端之间采用基于长连接的通信链路
[0060]
此时,长连接对于服务端来说管理较为简单,存在的连接都是有用的连接,不需要额外的控制手段。但如果客户请求频繁,将在tcp的建立和关闭操作上浪费时间和带宽。因此,本申请实施例中,服务端或客户端可以根据实际通信数据传输的环境,合适的方式来建立服务端与客户端之间的通信连接。
[0061]
步骤s202:将所述域名信息进行保存。
[0062]
具体的,客户端根据与服务端之间的通信连接,接收到服务端下发的域名信息之后,然后在将域名信息进行保存,以方便在获取对象储存服务时可以直接基于域名信息中的第一网络域名去获取静态资源,等等。
[0063]
在一种可行的实施方式中,客户端在对所述域名信息进行保存时可以采用预设的编码方式对域名信息进行编码写入,以保存至本地,进一步的,客户端可以采用硬编码(hard code)的方式,也即在客户端采用硬编码(hard code)的方式将所述域名信息(也即所有的服务端下发的网络域名)写入至本地。
[0064]
其中,所述硬编码(hard code)为一种数据写入的方式,即将数据直接写在代码(程序)中,如当客户端为用户提供相应的web网页服务时可以将域名信息直接写在网页编译代码(程序)中。也就是,在程序中,直接给变量赋值。指的是在软件实现上,把输出或输入的相关参数(例如:路径、输出的形式、格式、固定访问的网络域名)直接硬编码在源代码中,而非在客户端运行时期(如客户端加载网页时期)由外界(如服务器)指定的设置、资源、数
据、或者格式等动态资源做出适当回应,如对外界指定的动态资源进行编码或加载。
[0065]
步骤s203:基于预设的信息获取周期,向所述服务端获取所述对象存储服务的域名更新信息。
[0066]
所述信息获取周期为客户端预先设置或客户端与服务端预先约定的一个周期,所述信息获取周期用于客户端定时向服务端获取相应的域名更新数据。
[0067]
所述域名更新信息可以理解为与历史域名信息(也即客户端保存的域名信息)相比产生变化或待更新的域名信息。如域名更新信息可以是对主网络域名-第一网络域名进行更新,如域名更新信息可以是对备用网络域名-第二网络域名进行更新。
[0068]
具体的,客户端在处于工作态时,预先成功建立与服务端之间的通信链路的情况下,服务端可以基于客户端对应的客户信息(如ip地址、端口、网络状况)为客户端确定域名更新信息,其中,通常会结合各cdn边缘节点的负载状态、节点距离、与节点的网络质量,将最新确定的提供对象存储服务的cdn边缘节点对应一个或多个的访问网络域名作为域名更新信息下发(如确定更新的负载量较低的cdn边缘节点对应的网络域名为第一网络域名、确定负载量次低的cdn边缘节点对应的网络域名为第二网络域名、如确定负载量较低的cdn边缘节点对应的备用网络域名为第二网络域名等等),从而服务端可以主动向客户端端下发域名更新信息用于客户端进行容灾切换。
[0069]
进一步的,客户端在正常启动并成功建立与服务端之间的通信链路的情况下,客户端可以向服务端主动发起针对多个网络域名(如主备域名)的域名更新请求,服务端响应于客户端的域名更新请求可以向客户端下发域名更新信息用于客户端进行容灾切换前的域名更新;以便在客户端基于第一网络域名确定获取静态资源失败的情况下,可以直接并且及时的基于预存的第二网络域名直接访问对象储存服务获取到静态资源。
[0070]
步骤s204:基于所述域名更新信息对所述域名信息进行更新。
[0071]
具体的,当客户端基于与服务端之间的通信连接接收到域名更新信息之后,对域名更新信息进行解析,然后基于域名解析结果对本地存储的域名信息进行更新,如在解析过程中,第一网络域名的实际数据产生变化,则客户端对第一网络域名进行更新;又如在解析过程中,第二网络域名的实际数据产生变化,则客户端对第二网络域名进行更新;又如在解析过程中,网络域名的数量产生变化,则客户端对网络域名的数量进行更新。
[0072]
步骤s205:以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败。
[0073]
具体可参见步骤s101,此处不再赘述。
[0074]
步骤s206:获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0075]
具体可参见步骤s102,此处不再赘述。
[0076]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾
切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0077]
请参见图3,图3是本申请提出的一种容灾切换方法的另一种实施例的流程示意图。具体的:
[0078]
步骤s301:以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败。
[0079]
具体可参见步骤s101,此处不再赘述。
[0080]
步骤s302:获取预存的所述对象存储服务对应的第二网络域名。
[0081]
具体可参见步骤s102,此处不再赘述。
[0082]
步骤s303:基于所述第一网络域名以及所述第二网络域名,生成针对所述对象存储服务的域名切换事件。
[0083]
其中,所述域名切换事件记录有本次从第一网络域名切换至第二网络域名的相应切换信息,如第一网络域名、第二网络域名、切换时间点、重试次数、网络质量、客户端的身份信息、超时未响应时长等信息中的一种或多种的拟合。
[0084]
在本实施例中,在客户端确定基于所述第一网络域名获取资源失败的情况下,此时客户端会基于第二网络域名进行对象存储服务的服务获取重试,也即容灾切换;容灾切换的同时,客户端也可以同时生成针对所述对象存储服务的域名切换事件,以向服务端上报客户端此时域名切换的状况;进一步的,服务端可以基于域名切换事件进行故障分析,对对象存储服务进行域名维护以及故障排查,从而为客户端提供更好的对象存储服务,以提高客户端获取静态资源的质量。进一步的,服务端通常可以对域名切换事件分析之后进行事件记录,如记录第一网络域名的域名访问失败次数,在所述域名访问失败次数超过阈值时,服务端可以通知订阅该第一网络域名的其他客户单下发域名更新信息。
[0085]
步骤s304:将所述域名切换事件上报至服务端。
[0086]
具体的,客户端在生成针对所述对象储存服务的域名切换事件之后,然后基于与服务端之间的通信连接将域名切换事件上报至服务端,以方便服务端基于域名切换事件进行容灾处理,如进行域名故障排除、服务维护等等。
[0087]
步骤s305:基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0088]
具体可参见步骤s102,此处不再赘述。
[0089]
步骤s306:确定基于所述第二网络域名获取资源失败。
[0090]
在本实施例中,客户端在第一网络域名获取资源失败时,通过第二网络域名来获取对象存储服务对应的静态资源,在实际应用中,也会存在与第二网络域名相关的通信链路出现问题从而造成客户端基于第二网络域名获取资源失败的情况。如,第二网络域名对应的通信链路在网络带宽不足和/或服务器处理能力不够的情形下(例如晚上上课是用网高峰期,网络卡顿),会使得客户端基于第一网络域名获取静态资源的传输过程受阻,例如客户端上产生延迟、卡顿乃至掉线等等,此时,客户端可以确定基于所述第二网络域名获取资源失败。
[0091]
实际应用中,客户端可以设置资源获取时长,在资源获取时长内客户端会基于第
二网络域名向cnd网络上的服务节点(也即服务器)发送针对对象存储服务对应的静态资源的资源获取请求,若在资源获取时长内基于第二网络域名未获取到对象储存服务对应的静态资源时,也即在第二网络域名对应的cnd网络上的服务节点未接收到该资源获取请求,或,在第二网络域名对应的cnd网络上的服务节点接收到资源获取请求而请求响应失败时,客户端通常未及时接收到第二网络域名对应的cnd网络上的服务节点反馈的响应信息,也即此时通信基于所述第二网络域名不能获取静态资源,此时客户端确定基于所述第二网络域名获取资源失败。
[0092]
步骤s307:在预设的访问周期内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务。
[0093]
所述轮回周期用于指示基于所述第一网络域名以及所述第二网络域名的轮回访问规则,如指示基于所述第一网络域名尝试访问时的时长、指示基于所述第一网络域名尝试访问时的时长以及轮回访问的次数等等。
[0094]
在一种具体的实施场景中,客户端预设的访问周期指示:基于所述第一网络域名尝试访问时的时长为t1、基于所述第一网络域名尝试访问时的时长为t2、轮回访问的次数为n次,也即在预设的访问周期内,客户端以t1时长为基准,尝试访问第一网络域名对应的对象储存服务,在t1时长内未获取到所述对象储存服务的静态资源时,客户端以t2时长为基准,尝试访问第二网络域名对应的对象储存服务,同时基于轮回访问的次数,基于第一网络域名以及所述第二网络域名轮回切换访问。进一步的,预设的访问周期还可以指示访问的总时长,客户端在所述总时长内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务,直至获取到静态资源;若访问实际时间超过所述总时长,确定所述对象存储服务失败。
[0095]
步骤s308:确定访问所述对象存储服务成功时,获取所述静态资源。
[0096]
具体的,客户端基于在预设的访问周期内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务,若基于第一网络域名时成功访问到所述对象存储服务(也即收到第一网络域名对应的cnd网络上的服务节点反馈的响应信息),或,若基于第二网络域名时成功访问到所述对象存储服务(也即收到第二网络域名对应的cnd网络上的服务节点反馈的响应信息),则确定访问所述对象存储服务成功,然后获取所述静态资源,也即接收相应网络域名对应的cnd网络上的服务节点发送的静态资源,如图片、音频、视频等非结构化数据。
[0097]
步骤s309:确定在所述访问周期内访问所述对象存储服务失败,则向服务端反馈资源获取失败信息。
[0098]
具体的,客户端基于在预设的访问周期内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务失败,如:在预设的访问周期内,未接收到第一网络域名对应的cnd网络上的服务节点反馈的响应信息,以及在预设的访问周期内,未接收到第二网络域名对应的cnd网络上的服务节点反馈的响应信息,此时,客户单确定在所述访问周期内访问所述对象存储服务失败,然后此时终端基于已保存的域名信息容灾自动切换失败,然后将本次容灾自动切换失败的信息上报至服务端,也即通过与服务端之间的通信连接反馈资源获取失败信息,其中,所述资源获取失败信息记录有本次从第一网络域名切换至第二网络域名均切换失败的信息,如第一网络域名、第二网络域名、切换失败时间点、失
败重试次数、网络质量、客户端的身份信息、超时未响应时长等信息中的一种或多种的拟合。
[0099]
进一步的,服务端在接收到客户端反馈的资源获取失败信息时,可以基于资源获取失败信息进行故障分析,对对象存储服务进行域名维护以及故障排查,从而为客户端提供更好的对象存储服务,以提高客户端获取静态资源的质量。进一步的,服务端通常可以对域名切换事件分析之后进行事件记录,如记录第一网络域名的域名访问失败次数,在所述域名访问失败次数超过阈值时,服务端可以通知订阅该第一网络域名以及第二网络域名的其他客户单下发域名更新信息。
[0100]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0101]
请参见图4,图4是本申请提出的一种容灾切换方法的另一种实施例的流程示意图。具体的:
[0102]
步骤s401:以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败。
[0103]
具体可参见步骤s101,此处不再赘述。
[0104]
步骤s402:获取所述客户端当前的网页服务类型。
[0105]
所述网页服务类型可以理解为客户端所提供的网页服务对应的页面开发类型,如常见的网页服务类型可以是多页面嵌套类型(如iframe嵌套)、独立页面类型等等。
[0106]
其中,所述多页面嵌套类型可以理解为客户端呈现的一个网络页面,会存在多个页面嵌套调用的情况,如一个网络页面为多页面嵌套类型时,可以由父页面系统和至少一个子页面系统叠加加载显示构成,客户端通常将预先绘制好的子系统界面调用到当前主界面(也可以理解为父页面系统)中,又如iframe嵌套类型下,客户端会存在各页面(父页面以及子页面)均需要访问网络域名获取静态资源才可以完成嵌套页面的加载;所述独立页面类型可以理解为,网络页面由独立的页面系统加载完成,客户端加载时单独对各独立的页面系统对应的配置文件(如网络域名)进行加载,各独立的页面系统直接存在嵌套关系。
[0107]
具体的,客户端可以在对当前网页对应的网页编译文件进行加载时,客户端在对网页编译文件进行网页代码编译过程中,可以基于文件中的函数调用、参数传递等代码特征进行分析,具体分析所述客户端当前网页是否存在多页面嵌套的情况,如是否存在需要将预先绘制好的子系统界面调用到当前主界面中,从而确定客户端当前的网页服务类型。又如,可以在对当前网页对应的网页配置文件进行配置分析,通过获取网页对应的网页标识(如id、名称),基于网页标识确定当前的网页服务类型。
[0108]
步骤s403:若所述网页服务类型为多页面嵌套类型,获取当前的父页面以及子页面,确定所述父页面以及所述子页面同时访问所述第一网络域名。
[0109]
具体的,客户端获取到当前的网页服务类型,若所述网页服务类型为多页面嵌套类型,此时,客户端提供的网络页面为多页面嵌套类型时,通常由父页面系统和至少一个子页面系统叠加加载显示,从而构成网络页面,例如客户端通常将预先绘制的子系统界面调用到当前主界面(也可以理解为父页面系统)中,又如iframe嵌套类型下,客户端会存在各页面(父页面以及子页面)均需要访问网络域名获取静态资源才可以完成嵌套页面的加载。也即在多页面嵌套类型下,父页面(也即父页面系统)和子页面(也即子页面系统,可以是多个)在加载时,会存在同时通过第一网络域名访问对象存储服务,获取对象存储服务对应的静态资源的情况,进一步的,父页面以及子页面会同时基于获取到的网页域名,然后又同时基于网页域名去尝试访问对象储存服务,也即若所述网页服务类型为多页面嵌套类型时,客户端可以在网页源代码编译时,获取到当前的父页面以及子页面,然后可以确定所述父页面以及所述子页面同时访问所述第一网络域名。
[0110]
步骤s404:控制所述父页面获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务;
[0111]
在本实施例中,在第一网络域名访问对象存储服务失败的情况下,由于网页服务类型为多页面嵌套类型,此时若直接基于第二网络域名访问,会出现父页面和子页面同时基于第二网络域名去尝试访问所述对象存储服务,在实际应用中,在同一时刻,客户端会基于第二网络域名由父页面以及子页面至少发出两次访问请求,此时在一定程度上可能会造成资源的浪费。基于此,本实施例中,客户端可以控制所述父页面获取预存的所述对象存储服务对应的第二网络域名,然后,控制父页面基于所述第二网络域名访问所述对象存储服务,如基于所述第二网络域名向第二网络域名对应的cnd网络上的服务节点发送访问请求。同时,控制子页面禁止基于所述第二网络域名访问所述对象存储服务。
[0112]
步骤s405:当所述父页面成功访问所述对象存储服务时,控制所述父页面将所述第二网络域名采用数据透传的方式下发至所述子页面,并控制所述父页面以及所述子页面以所述第二网络域名获取所述静态资源。
[0113]
所述数据透传在本实施例可以理解为父页面将待传送的数据传输至子页面,其中数据透传的方式包括但不限于函数调用、接口调用、参数传参等方式。
[0114]
具体的,当客户端控制所述父页面基于第二网络域名成功访问所述对象存储服务,如客户端控制所述父页面基于第二网络域名向第二网络域名对应的cnd网络上的服务节点发送访问请求,若cnd网络上的服务节点响应与所述访问请求,向客户端反馈响应信息时,客户端此时就会接收到cnd网络上的服务节点反馈的响应信息,就可以确定所述父页面成功访问所述对象存储服务。然后控制所述父页面将所述第二网络域名采用数据透传的方式(如采用网络域名参数传参的方式)下发至所述子页面,子页面接收到父页面下发的第二网络域名,然后客户端控制所述父页面以及所述子页面以所述第二网络域名获取所述静态资源,以完成相应网页的加载。
[0115]
步骤s406:获取预存的所述对象存储服务对应的第二网络域名,在预设的第一访问时长内,控制所述父页面基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0116]
所述第一访问时长可以理解为客户端控制父页面访问对象存储服务的访问超时时长,可以理解的是,在第一访问时长内可以控制父页面实时或周期向第二网络域名对应的cnd网络上的服务节点发送访问请求,若在第一访问时长成功接收到cnd网络上的服务节点反馈的响应信息时,客户端确定基于所述第二网络域名成功访问所述对象存储服务;若在第一访问时长未接收到cnd网络上的服务节点反馈的响应信息时,客户端确定基于所述第二网络域名访问所述对象存储服务失败。进一步的,在预设的第一访问时长内,客户端可以控制所述父页面基于所述第二网络域名成功访问所述对象存储服务,并获取所述静态资源。
[0117]
其中,本实施例涉及的所述第一访问时长以及第二访问时长通常为设置的经验值,在实际应用中,可以基于大数据的手段采用统计学的方法。通预先获取大量的样本数据进行数理分析,确定一个合适的第一访问时长。
[0118]
步骤s407:在预设的第二访问时长内,控制所述子页面基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0119]
所述第二访问时长可以理解为客户端控制子页面访问对象存储服务的访问超时时长,可以理解的是,在第二访问时长内可以控制子页面实时或周期向第二网络域名对应的cnd网络上的服务节点发送访问请求,若在第二访问时长成功接收到cnd网络上的服务节点反馈的响应信息时,客户端确定基于所述第二网络域名成功访问所述对象存储服务;若在第二访问时长未接收到cnd网络上的服务节点反馈的响应信息时,客户端确定基于所述第二网络域名访问所述对象存储服务失败。进一步的,在预设的第二访问时长内,客户端可以控制所述子页面基于所述第二网络域名成功访问所述对象存储服务,并获取所述静态资源。
[0120]
其中,客户端执行步骤s406和执行步骤s407的顺序不分先后,可以是执行步骤s406和执行步骤s407同时进行。
[0121]
进一步的,所述第一访问时间大于所述第二访问时间,从而避免子页面的超时时间长于父页面的超时时间,以防止在加载时出现页面奔溃、页面加载故障的情况。
[0122]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0123]
请参见图5,为本申请实施例提供的一种容灾切换系统的架构示意图。如图3所示,所述容灾切换系统可以包括客户端100、服务端110以及服务节点120,所述服务节点的数量可以是多个,多个服务节点构成提供对象存储服务的内容分发网络(csdn)。在实际应用中,客户端100通常基于相应的网络域名访问内容分发网络(csdn)上的某个服务节点120。
[0124]
所述客户端100可以是具有容灾切换功能的电子设备,该电子设备包括但不限于:可穿戴设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personal digital assistant,pda)、5g网络或未来演进网络中的电子设备等。
[0125]
所述服务端110以及服务节点120可以是单独的服务器设备,例如:机架式、刀片、塔式、或者机柜式的服务器设备,或采用工作站、大型计算机等具备较强计算能力硬件设备;也可以是采用多个服务器组成的服务器集群,所述服务集群中的各服务器可以是以对称方式组成的,其中每台服务器在业务链路中功能等价、地位等价,各服务器均可单独对外提供服务,所述单独提供服务可以理解为无需另外的服务器的辅助。
[0126]
所述客户端100、服务端110以及服务节点120之间通过网络进行通信,网络可以是无线网络,也可以是有线网络,无线网络包括但不限于蜂窝网络、无线局域网、红外网络或蓝牙网络,有线网络包括但不限于以太网、通用串行总线(universal serial bus,usb)或控制器局域网络。
[0127]
客户端100向服务端110获取对象存储服务的域名信息,所述域名信息至少包括第一网络域名以及第二网络域名;
[0128]
服务端110将域名信息发送至客户端100;
[0129]
客户端100将所述域名信息进行保存;
[0130]
其中,客户端100在对所述域名信息进行保存时可以采用预设的编码方式对域名信息进行编码写入。
[0131]
客户端100基于预设的信息获取周期,向所述服务端110获取所述对象存储服务的域名更新信息。
[0132]
服务端110将域名更新信息发送至客户端100;
[0133]
客户端100基于所述域名更新信息对所述域名信息进行更新;
[0134]
客户端100以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败;
[0135]
客户端100获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0136]
另外,上述实施例提供的容灾切换系统实施例与一些实施例中的所述容灾切换方法属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
[0137]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在
后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0138]
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
[0139]
请参见图6,其示出了本申请一个示例性实施例提供的容灾切换装置的结构示意图。该容灾切换装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该装置1包括第一域名获取模块11和第二域名获取模块12。
[0140]
第一域名获取模块11,用于以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败;
[0141]
第二域名获取模块12,用于获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0142]
可选的,如图8所示,所述装置1,还包括:
[0143]
域名信息获取模块13,用于向服务端获取所述对象存储服务的域名信息,所述域名信息至少包括第一网络域名以及第二网络域名;
[0144]
域名信息保存模块14,用于将所述域名信息进行保存。
[0145]
可选的,所述域名信息保存模块14,具体用于:
[0146]
采用硬编码的方式,将所述域名信息写入至本地。
[0147]
可选的,如图7所示,所述域名信息获取模块13,包括:
[0148]
更新信息获取单元131,用于基于预设的信息获取周期,向所述服务端获取所述对象存储服务的域名更新信息;
[0149]
域名更新单元132,用于基于所述域名更新信息对所述域名信息进行更新。
[0150]
可选的,所述装置1,具体用于:
[0151]
基于所述第一网络域名以及所述第二网络域名,生成针对所述对象存储服务的域名切换事件;
[0152]
将所述域名切换事件上报至服务端。
[0153]
可选的,所述装置1,具体用于:
[0154]
确定基于所述第二网络域名获取资源失败;
[0155]
在预设的访问周期内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务;
[0156]
确定访问所述对象存储服务成功时,获取所述静态资源。
[0157]
可选的,所述装置1,具体用于:
[0158]
确定在所述访问周期内访问所述对象存储服务失败,则向服务端反馈资源获取失败信息。
[0159]
可选的,所述装置1,具体用于:
[0160]
获取所述客户端当前的网页服务类型,若所述网页服务类型为多页面嵌套类型,获取当前的父页面以及子页面,确定所述父页面以及所述子页面同时访问所述第一网络域名。
[0161]
可选的,所述装置1,具体用于:
[0162]
控制所述父页面获取预存的所述对象存储服务对应的第二网络域名,基于所述第
二网络域名访问所述对象存储服务;
[0163]
当所述父页面成功访问所述对象存储服务时,控制所述父页面将所述第二网络域名采用数据透传的方式下发至所述子页面,并控制所述父页面以及所述子页面以所述第二网络域名获取所述静态资源。
[0164]
可选的,所述装置1,具体用于:
[0165]
在预设的第一访问时长内,控制所述父页面基于所述第二网络域名访问所述对象存储服务;
[0166]
在预设的第二访问时长内,控制所述子页面基于所述第二网络域名访问所述对象存储服务;
[0167]
其中,所述第一访问时间大于所述第二访问时间。
[0168]
需要说明的是,上述实施例提供的容灾切换装置在执行容灾切换方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的容灾切换装置与容灾切换方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
[0169]
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0170]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0171]
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图5所示实施例的所述容灾切换方法,具体执行过程可以参见图1-图5所示实施例的具体说明,在此不进行赘述。
[0172]
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1-图5所示实施例的所述容灾切换方法,具体执行过程可以参见图1-图5所示实施例的具体说明,在此不进行赘述。
[0173]
请参考图9,其示出了本申请一个示例性实施例提供的电子设备的结构方框图。本申请中的电子设备可以包括一个或多个如下部件:处理器110、存储器120、输入装置130、输出装置140和总线150。处理器110、存储器120、输入装置130和输出装置140之间可以通过总线150连接。
[0174]
处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可
选地,处理器110可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
[0175]
存储器120可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory,rom)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作系统可以是安卓(android)系统,包括基于android系统深度开发的系统、苹果公司开发的ios系统,包括基于ios系统深度开发的系统或其它系统。存储数据区还可以存储电子设备在使用中所创建的数据比如电话本、音视频数据、聊天记录数据,等。
[0176]
参见图10所示,存储器120可分为操作系统空间和用户空间,操作系统即运行于操作系统空间,原生及第三方应用程序即运行于用户空间。为了保证不同第三方应用程序均能够达到较好的运行效果,操作系统针对不同第三方应用程序为其分配相应的系统资源。然而,同一第三方应用程序中不同应用场景对系统资源的需求也存在差异,比如,在本地资源加载场景下,第三方应用程序对磁盘读取速度的要求较高;在动画渲染场景下,第三方应用程序则对gpu性能的要求较高。而操作系统与第三方应用程序之间相互独立,操作系统往往不能及时感知第三方应用程序当前的应用场景,导致操作系统无法根据第三方应用程序的具体应用场景进行针对性的系统资源适配。
[0177]
为了使操作系统能够区分第三方应用程序的具体应用场景,需要打通第三方应用程序与操作系统之间的数据通信,使得操作系统能够随时获取第三方应用程序当前的场景信息,进而基于当前场景进行针对性的系统资源适配。
[0178]
以操作系统为android系统为例,存储器120中存储的程序和数据如图11所示,存储器120中可存储有linux内核层320、系统运行时库层340、应用框架层360和应用层380,其中,linux内核层320、系统运行库层340和应用框架层360属于操作系统空间,应用层380属于用户空间。linux内核层320为电子设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、wi-fi驱动、电源管理等。系统运行库层340通过一些c/c++库来为android系统提供了主要的特性支持。如sqlite库提供了数据库的支持,opengl/es库提供了3d绘图的支持,webkit库提供了浏览器内核的支持等。在系统运行时库层340中还提供有安卓运行时库(android runtime),它主要提供了一些核心库,能够允许开发者使用java语言来编写android应用。应用框架层360提供了构建应用程序时可能用到的各种api,开发者也可以通过使用这些api来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层380中运行有至少一个应用程序,这些应用程序可以是操作系统自带的原生应用程序,比如联系人程序、短
信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的第三方应用程序,比如游戏类应用程序、即时通信程序、相片美化程序、容灾切换程序等。
[0179]
以操作系统为ios系统为例,存储器120中存储的程序和数据如图12所示,ios系统包括:核心操作系统层420(core os layer)、核心服务层440(core services layer)、媒体层460(media layer)、可触摸层480(cocoa touch layer)。核心操作系统层420包括了操作系统内核、驱动程序以及底层程序框架,这些底层程序框架提供更接近硬件的功能,以供位于核心服务层440的程序框架所使用。核心服务层440提供给应用程序所需要的系统服务和/或程序框架,比如基础(foundation)框架、账户框架、广告框架、数据存储框架、网络连接框架、地理位置框架、运动框架等等。媒体层460为应用程序提供有关视听方面的接口,如图形图像相关的接口、音频技术相关的接口、视频技术相关的接口、音视频传输技术的无线播放(airplay)接口等。可触摸层480为应用程序开发提供了各种常用的界面相关的框架,可触摸层480负责用户在电子设备上的触摸交互操作。比如本地通知服务、远程推送服务、广告框架、游戏工具框架、消息用户界面接口(user interface,ui)框架、用户界面uikit框架、地图框架等等。
[0180]
在图12所示出的框架中,与大部分应用程序有关的框架包括但不限于:核心服务层440中的基础框架和可触摸层480中的uikit框架。基础框架提供许多基本的对象类和数据类型,为所有应用程序提供最基本的系统服务,和ui无关。而uikit框架提供的类是基础的ui类库,用于创建基于触摸的用户界面,ios应用程序可以基于uikit框架来提供ui,所以它提供了应用程序的基础架构,用于构建用户界面,绘图、处理和用户交互事件,响应手势等等。
[0181]
其中,在ios系统中实现第三方应用程序与操作系统数据通信的方式以及原理可参考android系统,本申请在此不再赘述。
[0182]
其中,输入装置130用于接收输入的指令或数据,输入装置130包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置140用于输出指令或数据,输出装置140包括但不限于显示设备和扬声器等。在一个示例中,输入装置130和输出装置140可以合设,输入装置130和输出装置140为触摸显示屏,该触摸显示屏用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作,以及显示各个应用程序的用户界面。触摸显示屏通常设置在电子设备的前面板。触摸显示屏可被设计成为全面屏、曲面屏或异型屏。触摸显示屏还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本申请实施例对此不加以限定。
[0183]
除此之外,本领域技术人员可以理解,上述附图所示出的电子设备的结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备中还包括射频电路、输入单元、传感器、音频电路、无线保真(wireless fidelity,wifi)模块、电源、蓝牙模块等部件,在此不再赘述。
[0184]
在本申请实施例中,各步骤的执行主体可以是上文介绍的电子设备。可选地,各步骤的执行主体为电子设备的操作系统。操作系统可以是安卓系统,也可以是ios系统,或者其它操作系统,本申请实施例对此不作限定。
[0185]
本申请实施例的电子设备,其上还可以安装有显示设备,显示设备可以是各种能实现显示功能的设备,例如:阴极射线管显示器(cathode ray tubedisplay,简称cr)、发光
二极管显示器(light-emitting diode display,简称led)、电子墨水屏、液晶显示屏(liquid crystal display,简称lcd)、等离子显示面板(plasma display panel,简称pdp)等。用户可以利用电子设备101上的显示设备,来查看显示的文字、图像、视频等信息。所述电子设备可以是智能手机、平板电脑、游戏设备、ar(augmented reality,增强现实)设备、汽车、数据存储装置、音频播放装置、视频播放装置、笔记本、桌面计算设备、可穿戴设备诸如电子手表、电子眼镜、电子头盔、电子手链、电子项链、电子衣物等设备。
[0186]
在图9所示的电子设备中,其中电子设备可以是一种客户端,处理器110可以用于调用存储器120中存储的容灾切换应用程序,并具体执行以下操作:
[0187]
以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败;
[0188]
获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。
[0189]
在一个实施例中,所述处理器110在执行所述以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名资源获取失败之前,还执行以下操作:
[0190]
向服务端获取所述对象存储服务的域名信息,所述域名信息至少包括第一网络域名以及第二网络域名;
[0191]
将所述域名信息进行保存。
[0192]
在一个实施例中,所述处理器110在执行所述将所述域名信息进行保存时,具体执行以下操作:
[0193]
采用硬编码的方式,将所述域名信息写入至本地。
[0194]
在一个实施例中,所述处理器110在执行所述容灾切换方法时,具体执行以下操作:
[0195]
基于预设的信息获取周期,向所述服务端获取所述对象存储服务的域名更新信息;
[0196]
基于所述域名更新信息对所述域名信息进行更新。
[0197]
在一个实施例中,所述处理器110在执行所述基于所述第二网络域名访问所述对象存储服务之前,还执行以下操作:
[0198]
基于所述第一网络域名以及所述第二网络域名,生成针对所述对象存储服务的域名切换事件;
[0199]
将所述域名切换事件上报至服务端。
[0200]
在一个实施例中,所述处理器110在执行所述基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源之后,还执行以下操作:
[0201]
确定基于所述第二网络域名获取资源失败;
[0202]
在预设的访问周期内,基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务;
[0203]
确定访问所述对象存储服务成功时,获取所述静态资源。
[0204]
在一个实施例中,所述处理器110在执行所述基于所述第一网络域名以及所述第二网络域名,轮回访问所述对象存储服务之后,还执行以下步骤:
[0205]
确定在所述访问周期内访问所述对象存储服务失败,则向服务端反馈资源获取失
败信息。
[0206]
在一个实施例中,所述处理器110在执行所述确定基于所述第一网络域名资源获取失败之后,还执行以下步骤:
[0207]
获取所述客户端当前的网页服务类型,若所述网页服务类型为多页面嵌套类型,获取当前的父页面以及子页面,确定所述父页面以及所述子页面同时访问所述第一网络域名。
[0208]
在一个实施例中,所述处理器110在执行所述获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源时,具体执行以下步骤:
[0209]
控制所述父页面获取预存的所述对象存储服务对应的第二网络域名,基于所述第二网络域名访问所述对象存储服务;
[0210]
当所述父页面成功访问所述对象存储服务时,控制所述父页面将所述第二网络域名采用数据透传的方式下发至所述子页面,并控制所述父页面以及所述子页面以所述第二网络域名获取所述静态资源。
[0211]
在一个实施例中,所述处理器110在执行所述基于所述第二网络域名访问所述对象存储服务时,具体执行以下步骤:
[0212]
在预设的第一访问时长内,控制所述父页面基于所述第二网络域名访问所述对象存储服务;
[0213]
在预设的第二访问时长内,控制所述子页面基于所述第二网络域名访问所述对象存储服务;
[0214]
其中,所述第一访问时间大于所述第二访问时间。
[0215]
在本申请实施例中,客户端通过预先储存第二网络域名(相当于备用网络域名),在以第一网络域名获取对象存储服务对应的静态资源,确定基于所述第一网络域名获取资源失败的情况下,可以直接获取预存的所述对象存储服务对应的第二网络域名,然后直接基于所述第二网络域名访问所述对象存储服务,并获取所述静态资源。整个容灾切换过程,不依赖于客户端与服务端之间的通信连接,可以避免在客户端与服务端之间的通信连接不佳,和/或,可以避免错误数没有达到切换阈值获取不到备用网络域名的情况,提升了容灾切换的成功率,同时基于预先储存的第二网络域名可以实现快速容灾切换,提升了容灾切换的效率;以及,在客户端与服务端正常通信时,可以预先将域名信息获取保存,并可以在后期使用过程中对域名信息进行及时更新,大幅提升客户端容灾切换的效果,避免相关链路上任何节点故障导致容灾切换方案不生效的情况。
[0216]
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmable gate array,fpga)、集成电路(integrated circuit,ic)等。
[0217]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请
所必须的。
[0218]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0219]
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0220]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0221]
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0222]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0223]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory,rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
[0224]
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1