一种灰度发布方法和装置与流程

文档序号:25899478发布日期:2021-07-16 20:36阅读:109来源:国知局
一种灰度发布方法和装置与流程

1.本发明涉及计算机软件测试的技术领域,尤其是涉及一种灰度发布方法和装置。


背景技术:

2.灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。a/b test就是一种灰度发布方式,让一部分用户继续用a,一部分用户开始用b,如果用户对b没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到b上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
3.目前网站的灰度发布方式都是基于服务器的,具体有以下几种方式:
4.当用户访问网站时,从cookie里读取用户的灰度版本,使用http重定向技术将客户端重定向到不同版本的网站。
5.当用户访问网站时,从cookie里读取用户的灰度版本,网站从数据库里返回不同版本的内容。
6.当用户访问网站时,从cookie里读取用户的灰度版本,负载服务器转发到不同的应用服务器。
7.但是以上的几种发布方式,都主要依赖服务器端的实现,需要有一个服务器端的发布装置或系统,导致灰度发布的复杂性较高,同时灰度期间网站加载效率较低。
8.针对上述问题,还未提出有效的解决方案。


技术实现要素:

9.有鉴于此,本发明的目的在于提供一种灰度发布方法和装置,以缓解了现有技术中的灰度发布方法的较为复杂的技术问题。
10.第一方面,本发明实施例提供了一种灰度发布方法,应用于客户端,包括:获取服务器发送的灰度文件的版本信息,其中,所述版本信息包括:远程地址,hash值,所述灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;判断所述客户端中的缓存标识信息是否满足预设条件,其中,所述缓存标识信息包含以下至少之一:所述客户端的用户所处的时区,所述客户端的版本信息,所述客户端对应的平台,所述客户端对应的地理位置信息,所述客户端使用的语言类型;若所述客户端中的缓存标识信息满足预设条件,则基于所述当前版本的灰度文件的版本信息缓存并加载所述当前版本的灰度文件。
11.进一步地,加载所述当前版本的灰度文件,包括:若所述客户端中包含所述当前版本的灰度文件的缓存文件,则计算所述缓存文件的hash值;若所述缓存文件的hash值与所述当前版本的灰度文件的hash值不同,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件;在获取到所述当前版本的灰度文件之后,解析并执行所述当前版本的灰度文件。
12.进一步地,所述方法还包括:若所述客户端中不包含所述当前版本的灰度文件的缓存文件,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件,并
对所述当前版本的灰度文件进行缓存。
13.进一步地,所述方法还包括:若所述缓存文件的hash值与所述当前版本的灰度文件的hash值相同,则执行所述缓存文件。
14.进一步地,所述方法还包括:若所述客户端中的缓存标识信息不满足预设条件,则基于所述历史版本的灰度文件的版本信息加载所述历史版本的灰度文件。
15.第二方面,本发明实施例还提供了一种灰度发布装置,应用于客户端,包括:获取单元,判断单元和执行单元,其中,所述获取单元,用于获取服务器发送的灰度文件的版本信息,其中,所述版本信息包括:远程地址,hash值,所述灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;所述判断单元,用于判断所述客户端中的缓存标识信息是否满足预设条件,其中,所述缓存标识信息包含以下至少之一:所述客户端的用户所处的时区,所述客户端的版本信息,所述客户端对应的平台,所述客户端对应的地理位置信息,所述客户端使用的语言类型;所述执行单元,用于在所述客户端中的缓存标识信息满足预设条件的情况下,基于所述当前版本的灰度文件的版本信息缓存并加载所述当前版本的灰度文件。
16.进一步地,所述执行单元还用于:若所述客户端中包含所述当前版本的灰度文件的缓存文件,则计算所述缓存文件的hash值;若所述缓存文件的hash值与所述当前版本的灰度文件的hash值不同,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件;在获取到所述当前版本的灰度文件之后,解析并执行所述当前版本的灰度文件。
17.进一步地,所述执行单元还用于:若所述客户端中不包含所述当前版本的灰度文件的缓存文件,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件,并对所述当前版本的灰度文件进行缓存。
18.第三方面,本发明实施例还提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储支持处理器执行上述第一方面中所述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
19.第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行第一方面中所述方法的步骤。
20.在本发明实施例中,通过获取服务器发送的灰度文件的版本信息,其中,版本信息包括:远程地址,hash值,灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;判断客户端中的缓存标识信息满足预设条件,其中,缓存标识信息包含以下至少之一:客户端的用户所处的时区,客户端的版本信息,客户端对应的平台,客户端对应的地理位置信息,客户端使用的语言类型;若客户端中的缓存标识信息满足预设条件,则缓存并加载当前版本的灰度文件,本申请不依赖服务器的灰度发布装置或系统,降低了灰度发布的复杂性,同时服务器端不需要执行灰度的逻辑,提高了执行效率。另外在灰度期间,客户端只有第一次加载时需要从远程加载灰度文件,后续可以从本地缓存中读取对应灰度版本的缓存文件内容,也降低了对文件cdn服务器的压力。
21.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
22.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合
所附附图,作详细说明如下。
附图说明
23.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
24.图1为本发明实施例提供的一种灰度发布方法的流程图;
25.图2为本发明实施例提供的另一种灰度发布方法的流程图;
26.图3为本发明实施例提供的一种灰度发布装置的示意图;
27.图4为本发明实施例提供的一种电子设备的示意图。
具体实施方式
28.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.实施例一:
30.根据本发明实施例,提供了一种灰度发布方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
31.图1是根据本发明实施例的一种灰度发布方法的流程图,如图1所示,该方法应用于客户端,包括如下步骤:
32.步骤s102,获取服务器发送的灰度文件的版本信息,其中,所述版本信息包括:远程地址,hash值,所述灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;
33.需要说明的是,上述的客户端一般为用户终端中安装的浏览器。
34.灰度文件的版本信息可以由服务端直接输出不同版本信息到浏览器,也可以由浏览器端主动发起请求到服务器获取。如果只有一个版本信息,则认为浏览器不需要灰度。
35.步骤s104,判断所述客户端中的缓存标识信息是否满足预设条件,其中,所述缓存标识信息包含以下至少之一:所述客户端的用户所处的时区,所述客户端的版本信息,所述客户端对应的平台,所述客户端对应的地理位置信息,所述客户端使用的语言类型;
36.在客户端端决定是否要对用户进行灰度,取决于浏览器端是否有灰度的缓存标识信息,缓存标识信息包括:客户端的用户所处的时区,客户端的版本信息,客户端对应的平台,客户端对应的地理位置信息,所述客户端使用的语言类型等信息,不同的灰度文件执行策略下可以选择不同的信息作为依据(即,执行和加载灰度文件需要满足不同的预设条件)。比如预设条件为按平台进行灰度,可以先给平台为mac的用户灰度当前版本的灰度文件,当一段时间后正常的话再对其他平台的用户进行灰度。
37.步骤s106,若所述客户端中的缓存标识信息满足预设条件,则基于所述当前版本
的灰度文件的版本信息缓存并加载所述当前版本的灰度文件。
38.在本发明实施例中,通过获取服务器发送的灰度文件的版本信息,其中,版本信息包括:远程地址,hash值,灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;判断客户端中的缓存标识信息满足预设条件,其中,缓存标识信息包含以下至少之一:客户端的用户所处的时区,客户端的版本信息,客户端对应的平台,客户端对应的地理位置信息,客户端使用的语言类型;若客户端中的缓存标识信息满足预设条件,则缓存并加载当前版本的灰度文件,本申请不依赖服务器的灰度发布装置或系统,降低了灰度发布的复杂性,同时服务器端不需要执行灰度的逻辑,提高了执行效率。另外在灰度期间,客户端只有第一次加载时需要从远程加载灰度文件,后续可以从本地缓存中读取对应灰度版本的缓存文件内容,也降低了对文件cdn服务器的压力。
39.在本发明实施例中,加载所述当前版本的灰度文件,包括如下步骤:
40.步骤s11,若所述客户端中包含所述当前版本的灰度文件的缓存文件,则计算所述缓存文件的hash值;
41.步骤s12,若所述缓存文件的hash值与所述当前版本的灰度文件的hash值不同,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件;
42.步骤s13,在获取到所述当前版本的灰度文件之后,解析并执行所述当前版本的灰度文件;
43.步骤s14,若所述缓存文件的hash值与所述当前版本的灰度文件的hash值相同,则执行所述缓存文件。
44.在本发明实施例中,首先从浏览器localstorage里读取缓存文件,如果浏览器localstorage里有当前版本的灰度文件的缓存文件,则对缓存文件按预设的算法进行hash,得到缓存文件的hash值。将缓存文件的hash值与当前版本的灰度文件的hash值进行对比,若一致表示缓存文件没有被篡改,解析缓存文件;若不一致,则表示缓存文件被篡改过,清除本地缓存中的缓存文件并从远程加载前版本的灰度文件执行。这一步是为了防止缓存文件被其他脚本恶意篡改,如果不进行校验则可能执行恶意脚本。
45.需要说明的是,灰度文件可以在客户端预先内置几种,由使用方决定使用某种客户端灰度策略,通过服务端下发策略或者直接在客户端随机一种灰度策略都可以。当灰度策略确定后,会在缓存文件内容时同时缓存当前是何种灰度策略。
46.在本发明实施例中,所述方法还包括如下步骤:
47.步骤s21,若所述客户端中不包含所述当前版本的灰度文件的缓存文件,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件,并对所述当前版本的灰度文件进行缓存。
48.在本发明实施例中,如果localstorage里没有当前版本的灰度文件的缓存文件,则从服务器加载并执行当前版本的灰度文件,以及将当前版本的灰度文件缓存至localstorage。
49.在本发明实施例中,如图2所示,所述方法还包括如下步骤:
50.步骤s108,若所述客户端中的缓存标识信息不满足预设条件,则基于所述历史版本的灰度文件的版本信息加载所述历史版本的灰度文件。
51.需要说明的是,上述历史版本的灰度文件的加载过程与上述当前版本的灰度文件
的加载过程相同,在本发明实施例中不再进行赘述。
52.本申请提供了一种主要在浏览器端进行灰度发布的方法,不依赖服务器的灰度发布装置或系统,降低了灰度发布的复杂性,同时服务器端不需要执行灰度的逻辑,提高了执行效率。另外在灰度期间,浏览器只有第一次加载时需要从远程加载文件,后续可以从本地缓存中读取对应版本文件内容,也降低了对文件cdn服务器的压力。
53.实施例二:
54.本发明实施例还提供了一种灰度发布装置,该灰度发布装置用于执行本发明实施例上述内容所提供的灰度发布方法,以下是本发明实施例提供的灰度发布装置的具体介绍。
55.如图3所示,图3为上述灰度发布装置的示意图,该灰度发布装置应用于客户端,包括:获取单元10,判断单元20和执行单元30。
56.所述获取单元10,用于获取服务器发送的灰度文件的版本信息,其中,所述版本信息包括:远程地址,hash值,所述灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;
57.所述判断单元20,用于判断所述客户端中的缓存标识信息是否满足预设条件,其中,所述缓存标识信息包含以下至少之一:所述客户端的用户所处的时区,所述客户端的版本信息,所述客户端对应的平台,所述客户端对应的地理位置信息,所述客户端使用的语言类型;
58.所述执行单元30,用于在所述客户端中的缓存标识信息满足预设条件的情况下,基于所述当前版本的灰度文件的版本信息缓存并加载所述当前版本的灰度文件。
59.在本发明实施例中,通过获取服务器发送的灰度文件的版本信息,其中,版本信息包括:远程地址,hash值,灰度文件包括:当前版本的灰度文件和历史版本的灰度文件;判断客户端中的缓存标识信息满足预设条件,其中,缓存标识信息包含以下至少之一:客户端的用户所处的时区,客户端的版本信息,客户端对应的平台,客户端对应的地理位置信息,客户端使用的语言类型;若客户端中的缓存标识信息满足预设条件,则缓存并加载当前版本的灰度文件,本申请不依赖服务器的灰度发布装置或系统,降低了灰度发布的复杂性,同时服务器端不需要执行灰度的逻辑,提高了执行效率。另外在灰度期间,客户端只有第一次加载时需要从远程加载灰度文件,后续可以从本地缓存中读取对应灰度版本的缓存文件内容,也降低了对文件cdn服务器的压力。
60.优选的,所述执行单元还用于:若所述客户端中包含所述当前版本的灰度文件的缓存文件,则计算所述缓存文件的hash值;若所述缓存文件的hash值与所述当前版本的灰度文件的hash值不同,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件;在获取到所述当前版本的灰度文件之后,解析并执行所述当前版本的灰度文件。
61.优选的,所述执行单元还用于:若所述客户端中不包含所述当前版本的灰度文件的缓存文件,则基于所述当前版本的灰度文件的远程地址获取所述当前版本的灰度文件,并对所述当前版本的灰度文件进行缓存。
62.优选的,所述执行单元还用于:若所述缓存文件的hash值与所述当前版本的灰度文件的hash值相同,则执行所述缓存文件。
63.优选的,所述执行单元还用于:若所述客户端中的缓存标识信息不满足预设条件,
则基于所述历史版本的灰度文件的版本信息加载所述历史版本的灰度文件。
64.实施例三:
65.本发明实施例还提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储支持处理器执行上述实施例一中所述方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
66.参见图4,本发明实施例还提供一种电子设备100,包括:处理器50,存储器51,总线52和通信接口53,所述处理器50、通信接口53和存储器51通过总线52连接;处理器50用于执行存储器51中存储的可执行模块,例如计算机程序。
67.其中,存储器51可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non

volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口53(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
68.总线52可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
69.其中,存储器51用于存储程序,所述处理器50在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器50中,或者由处理器50实现。
70.处理器50可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器50中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器50可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现成可编程门阵列(field

programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器51,处理器50读取存储器51中的信息,结合其硬件完成上述方法的步骤。
71.实施例四:
72.本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述实施例一中所述方法的步骤。
73.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
74.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
75.在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
76.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
77.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
78.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1