一种灰度发布方法、系统及服务器转让专利

申请号 : CN202210284224.4

文献号 : CN114780512B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨杰

申请人 : 荣耀终端有限公司

摘要 :

一种灰度发布方法、系统及服务器,涉及计算机技术领域,确保了数据库中数据的一致性,解决了灰度发布导致数据库的某些功能受限的问题。该方法应用于灰度发布系统,系统包括电子设备,网关,数据库服务器,业务服务器和灰度服务器,该灰度发布方法包括:网关接收到电子设备发送的第一业务请求,第一业务请求中携带有用户标识;在网关确定用户标识满足预设条件的情况下,网关向灰度服务器发送数据迁移请求,灰度服务器根据数据迁移请求,将用户标识对应的数据从生产表中迁移到灰度表,生产表为业务服务器对应的数据表,在网关确定数据迁移成功的情况下,网关将第一业务请求发送至灰度服务器,以使得灰度服务器根据第一业务请求执行对应的响应操作。

权利要求 :

1.一种灰度发布方法,其特征在于,应用于灰度发布系统,所述系统包括电子设备,网关,数据库服务器,业务服务器和灰度服务器,所述方法包括:所述网关接收到所述电子设备发送的第一业务请求,所述第一业务请求中携带有用户标识;

在所述网关确定所述用户标识满足预设条件的情况下,所述网关向所述灰度服务器发送数据迁移请求,所述数据迁移请求中携带有所述用户标识;所述预设条件包括所述用户标识为预设用户的用户标识,且所述用户标识对应的灰度状态为未开启;

所述灰度服务器根据所述数据迁移请求,将所述用户标识对应的数据从生产表中迁移到灰度表,所述生产表为所述业务服务器对应的数据表,所述灰度表为所述灰度服务器对应的数据表,所述灰度表为对所述生产表的表结构进行复制得到的数据表,或对所述生产表的表结构进行复制后的数据表进行升级后得到的数据表;

在所述网关确定数据迁移成功的情况下,所述网关将所述第一业务请求发送至所述灰度服务器,以使得所述灰度服务器根据所述第一业务请求执行对应的响应操作。

2.根据权利要求1所述的方法,其特征在于,所述网关接收到所述电子设备发送的第一业务请求之前,所述方法还包括:响应于用户的操作,在所述数据库服务器的生产数据库中增加所述灰度表;

响应于用户的操作,所述网关开启灰度发布总开关。

3.根据权利要求1所述的方法,其特征在于,所述灰度服务器根据所述第一业务请求执行对应的响应操作,包括:所述灰度服务器执行所述第一业务请求对应的灰度业务,将所述灰度业务对应的数据写入所述灰度表。

4.根据权利要求1‑3任一项所述的方法,其特征在于,所述方法还包括:在所述网关确定所述用户标识不为所述预设用户的用户标识的情况下,所述网关将所述第一业务请求发送至所述业务服务器,以使得所述业务服务器根据所述第一业务请求执行对应的响应操作。

5.根据权利要求4所述的方法,其特征在于,所述业务服务器根据所述第一业务请求执行对应的响应操作,包括:所述业务服务器执行所述第一业务请求对应的生产业务,将所述生产业务对应的数据写入所述生产表。

6.根据权利要求1‑3任一项所述的方法,其特征在于,所述方法还包括:在所述网关确定数据迁移成功的情况下,所述网关将所述用户标识对应的灰度状态设置为开启;

在所述网关确定数据迁移未成功的情况下,所述网关将所述用户标识对应的灰度状态设置为失败,并通知所述灰度服务器对所述灰度表中所述用户标识对应的数据进行回滚删除操作。

7.根据权利要求1‑3任一项所述的方法,其特征在于,所述方法还包括:响应于用户的操作,所述网关关闭灰度发布总开关;

所述网关接收到所述电子设备发送的第二业务请求,所述第二业务请求中携带有所述用户标识;

在所述网关确定所述用户标识对应的灰度状态为开启的情况下,所述网关向所述灰度服务器发送数据回迁请求;

所述灰度服务器根据所述数据回迁请求,将所述用户标识对应的数据从所述灰度表中回迁到所述生产表;

在所述网关确定数据回迁成功的情况下,所述网关将所述第二业务请求发送至所述业务服务器,以使得所述业务服务器根据所述第二业务请求执行对应的响应操作。

8.根据权利要求7所述的方法,其特征在于,所述将所述用户标识对应的数据从所述灰度表中回迁到所述生产表之前,所述方法还包括:所述灰度服务器删除所述生产表中所述用户标识对应的数据。

9.根据权利要求7所述的方法,其特征在于,所述方法还包括:在所述网关确定数据回迁未成功的情况下,所述网关提示运维人员进行人工处理。

10.一种灰度发布方法,应用于网关,其特征在于,所述方法包括:接收第一业务请求,所述第一业务请求中携带有用户标识;

在确定所述用户标识满足预设条件的情况下,向灰度服务器发送数据迁移请求,所述数据迁移请求中携带有所述用户标识,其中,所述灰度服务器用于根据所述数据迁移请求,将所述用户标识对应的数据从生产表中迁移到灰度表,所述生产表为业务服务器对应的数据表,所述灰度表为所述灰度服务器对应的数据表,所述灰度表为对所述生产表的表结构进行复制得到的数据表,或对所述生产表的表结构进行复制后的数据表进行升级后得到的数据表;所述预设条件包括所述用户标识为预设用户的用户标识,且所述用户标识对应的灰度状态为未开启;

在确定数据迁移成功的情况下,将所述第一业务请求发送至所述灰度服务器。

11.根据权利要求10所述的方法,其特征在于,所述接收第一业务请求之前,所述方法还包括:开启灰度发布总开关。

12.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:在确定所述用户标识不为所述预设用户的用户标识的情况下,将所述第一业务请求发送至业务服务器。

13.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:在确定数据迁移成功的情况下,将所述用户标识对应的灰度状态设置为开启;

在确定数据迁移未成功的情况下,将所述用户标识对应的灰度状态设置为失败,并通知所述灰度服务器对所述灰度表中所述用户标识对应的数据进行回滚删除操作。

14.根据权利要求10或11所述的方法,其特征在于,所述方法还包括:接收第二业务请求,所述第二业务请求中携带有所述用户标识;

在确定所述用户标识对应的灰度状态为开启的情况下,向所述灰度服务器发送数据回迁请求;

在确定数据回迁成功的情况下,将所述第二业务请求发送至业务服务器。

15.根据权利要求14所述的方法,其特征在于,所述方法还包括:在确定数据回迁未成功的情况下,提示运维人员进行人工处理。

16.一种灰度发布方法,应用于灰度服务器,其特征在于,所述方法包括:接收网关发送的数据迁移请求,所述数据迁移请求中携带有用户标识,所述数据迁移请求为所述网关接收到电子设备发送的第一业务请求后,确定所述用户标识满足预设条件的情况下向所述灰度服务器发送的,所述第一业务请求中携带有用户标识;所述预设条件包括所述用户标识为预设用户的用户标识,且所述用户标识对应的灰度状态为未开启;

根据所述数据迁移请求,将所述用户标识对应的数据从生产表中迁移到灰度表,所述生产表为业务服务器对应的数据表,所述灰度表为所述灰度服务器对所述生产表的表结构进行复制,并对复制后的数据表进行升级后得到的数据表;

接收到所述网关发送的所述第一业务请求后,根据所述第一业务请求执行对应的响应操作,所述第一业务请求为所述网关确定数据迁移成功的情况下向所述灰度服务器发送的。

17.根据权利要求16所述的方法,其特征在于,所述根据所述第一业务请求执行对应的响应操作,包括:执行所述第一业务请求对应的灰度业务,将所述灰度业务对应的数据写入所述灰度表。

18.根据权利要求16所述的方法,其特征在于,所述方法还包括:接收到所述网关发送的回滚删除操作后,对所述灰度表中所述用户标识对应的数据进行回滚删除操作。

19.根据权利要求16所述的方法,其特征在于,所述方法还包括:接收所述网关发送的数据回迁请求,所述数据回迁请求为所述网关接收到所述电子设备发送的第二业务请求后,确定所述用户标识对应的灰度状态为开启的情况下发送的,所述第二业务请求中携带有所述用户标识;

根据所述数据回迁请求,将所述用户标识对应的数据从所述灰度表中回迁到所述生产表。

20.根据权利要求19所述的方法,其特征在于,所述将所述用户标识对应的数据从所述灰度表中回迁到所述生产表之前,所述方法还包括:删除所述生产表中所述用户标识对应的数据。

21.一种灰度发布系统,其特征在于,包括:

网关,所述网关用于执行上述权利要求10‑15中任一项所述的灰度发布方法;

灰度服务器,所述灰度服务器用于执行上述权利要求16‑20中任一项所述的灰度发布方法;

业务服务器,所述业务服务器用于在所述网关确定所述用户标识不为预设用户的用户标识的情况下,接收到所述网关发送的第一业务请求后,根据所述第一业务请求执行对应的响应操作。

22.根据权利要求21所述的系统,其特征在于,

所述业务服务器还用于在所述网关确定数据回迁成功的情况下,接收到所述网关发到的第二业务请求后,根据所述第二业务请求执行对应的响应操作。

23.一种电子设备,其特征在于,包括:

一个或多个处理器;

存储器;

其中,所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述服务器执行时,使得所述服务器执行如权利要求1‑9中任一项所述的灰度发布方法。

24.一种网关,其特征在于,包括:

一个或多个处理器;

存储器;

其中,所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述服务器执行时,使得所述服务器执行如权利要求10‑15中任一项所述的灰度发布方法。

25.一种服务器,其特征在于,包括:

一个或多个处理器;

存储器;

其中,所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述服务器执行时,使得所述服务器执行如权利要求16‑20中任一项所述的灰度发布方法。

26.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,其特征在于,当所述指令在处理器上运行时,执行如权利要求1‑9中任一项所述的灰度发布方法,或者,执行如权利要求10‑15中任一项所述的灰度发布方法,或者,执行如权利要求16‑20中任一项所述的灰度发布方法。

说明书 :

一种灰度发布方法、系统及服务器

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种灰度发布方法、系统及服务器。

背景技术

[0002] 随着计算机技术的快速发展,各类应用(application,APP)被广泛的应用于人们的生活中,因此,各类应用的开发人员需要不断的根据用户的需求对应用进行相应的更新,以便于留住用户或者吸引更多用户。为了避免应用更新后由于应用质量问题导致用户业务受影响,开发人员通常采用灰度发布的方法对应用进行升级。即开发人员提前将新版本的应用发布到应用服务器,然后使用少部分业务进行功能验证,以验证新版本的应用是否存在质量问题。
[0003] 相关技术中,在开发人员对应用的版本进行升级时,通常需要对应用的代码和数据均进行升级。可见,在开发人员对生产的应用进行升级的过程中,存在对应用的数据库中的表结构进行变更(如,表字段的删除、新增或重命名等)的场景。
[0004] 然而,开发人员对应用的版本采用灰度发布的方式进行升级时,直接在应用的数据库中对数据表结构进行升级操作,即生产的应用与变更后的数据表结构不匹配,导致应用的代码存在不兼容等问题。因此,应用的数据库中的某些功能受到了限制,比如,应用升级后的版本无法对应用的数据库中的表字段进行删除、修改名称等,从而导致灰度发布场景受限。

发明内容

[0005] 本申请实施例提供一种灰度发布方法、系统及服务器,通过在灰度发布开启后,系统确定发送业务请求的电子设备的用户标识满足预设条件的情况下,将生产表中用户标识对应的数据迁移到灰度表,其中,预设条件为用户标识为预设用户的用户标识且用户标识对应的灰度状态为未开启,在系统确定用户标识对应的灰度状态为开启的情况下,将灰度表中用户标识对应的数据回迁至生产表。由此,在灰度发布的过程中,系统对该用户标识对应的数据进行实时迁移和回迁,不仅确保了生产数据库中数据的一致性,还解决了灰度发布后生产数据库中的某些功能受限的问题。
[0006] 为达到上述目的,本申请采用如下技术方案:
[0007] 第一方面,本申请实施例提供一种灰度发布方法,应用于灰度发布系统,系统包括电子设备,网关,数据库服务器,业务服务器和灰度服务器,该灰度方法包括:网关接收到电子设备发送的第一业务请求,第一业务请求中携带有用户标识;在网关确定用户标识满足预设条件的情况下,网关向灰度服务器发送数据迁移请求,数据迁移请求中携带有用户标识;灰度服务器根据数据迁移请求,将用户标识对应的数据从生产表中迁移到灰度表,生产表为业务服务器对应的数据表,灰度表为灰度服务器对应的数据表,灰度表为对生产表的表结构进行复制得到的数据表,或对生产表的表结构进行复制后的数据表进行升级后得到的数据表;在网关确定数据迁移成功的情况下,网关将第一业务请求发送至灰度服务器,以使得灰度服务器根据第一业务请求执行对应的响应操作。
[0008] 可见,与现有技术中灰度发布时直接将对应的数据写入生产数据库中,其中,生产数据库为应用的数据库。本申请实施例中,通过在生产数据库中新增加与生产表的表结构相同的灰度表,在灰度发布的过程中,系统对该用户标识对应的数据进行实时迁移,不仅确保了生产数据库中数据的一致性,还解决了灰度发布后生产数据库中的某些功能受限的问题。
[0009] 在一些实施例中,灰度表是仅对生产表的表结构进行复制得到的一个空表,系统将发送的第一业务请求的电子设备的用户标识对应的数据迁移至灰度表时,不影响其它用户的数据,在数据迁移时,避免了数据的丢失。
[0010] 在另一些实施例中,在灰度发布过程中,在数据库服务器的生产数据库中增加灰度表,该灰度表为对生产表的表结构进行复制,并对复制后的数据表进行升级后得到的数据表。比如,灰度表为对生产表的表结构进行复制后,对复制后得到的数据表增加一个表结构字段得到的数据表。
[0011] 用户标识可以为第一业务请求的业务键值,用于唯一标记发起第一业务请求的电子设备对应的用户。
[0012] 在一种可能的实现方式中,预设条件包括用户标识为预设用户的用户标识,且用户标识对应的灰度状态为未开启。
[0013] 可以理解为,开发人员可以预先设定某些用户可以开启灰度,比如,预先设定某一年龄段的用户开启灰度,或者,可以预先设定某一地区的用户开启灰度。
[0014] 在另一种可能的实现方式中,网关接收到电子设备发送的第一业务请求之前,方法还包括:响应于用户的操作,在数据库服务器的生产数据库中增加灰度表;响应于用户的操作,网关开启灰度总开关。
[0015] 在另一种可能的实现方式中,灰度服务器根据第一业务请求执行对应的响应操作,包括:灰度服务器执行第一业务请求对应的灰度业务,将灰度业务对应的数据写入灰度表。
[0016] 也就是说,灰度服务器将生产表中用户标识对应的数据迁移至灰度表后,灰度服务器可以执行第一业务请求对应的灰度业务,并将对应的数据写入灰度表,从而实现在灰度表中对该用户标识对应的数据进行修改。比如,灰度服务器在灰度表中对该用户标识对应的数据进行增加、删除、修改等操作。
[0017] 在另一种可能的实现方式中,该灰度发布方法还包括:在网关确定用户标识不为预设用户的用户标识的情况下,网关将第一业务请求发送至业务服务器,以使得业务服务器根据第一业务请求执行对应的响应操作。
[0018] 在另一种可能的实现方式中,业务服务器根据第一业务请求执行对应的响应操作,包括:业务服务器执行第一业务请求对应的生产业务,将生产业务对应的数据写入生产表。
[0019] 也就是说,网关确定该用户标识对应的用户并未开启灰度发布时,业务服务器执行第一业务请求对应的生产业务,并将对应的数据写入生产表,从而实现了在生产表中对给用户标识对应的数据进行修改。比如,业务服务器在生产表中对该用户标识对应的数据进行增加、删除、修改等操作。
[0020] 在另一种可能的实现方式中,该灰度发布方法还包括:在网关确定数据迁移成功的情况下,网关将用户标识对应的灰度状态设置为开启;在网关确定数据迁移未成功的情况下,网关将用户标识对应的灰度状态设置为失败,并通知灰度服务器对灰度表中用户标识对应的数据进行回滚删除操作。
[0021] 其中,回滚删除操作,是指将灰度表中该用户标识对应的数据删除,以将灰度表中该用户标识对应的数据恢复到数据迁移之前的状态的操作。
[0022] 可以理解的是,由于数据迁移未成功,生产表中还包括有该用户标识对应的数据,灰度表中可能包括该用户标识对应的部分数据。这种情况下,灰度服务器可以将灰度表中该用户标识对应的数据删除,以使得灰度表恢复到迁移数据前的状态。
[0023] 在另一种可能的实现方式中,该灰度发布方法还包括:响应于用户的操作,网关关闭灰度发布总开关;网关接收到电子设备发送的第二业务请求,第二业务请求中携带有用户标识;在网关确定用户标识对应的灰度状态为开启的情况下,网关向灰度服务器发送数据回迁请求;灰度服务器根据数据回迁请求,将用户标识对应的数据从灰度表中回迁到生产表;在网关确定数据回迁成功的情况下,网关将第二业务请求发送至业务服务器,以使得业务服务器根据第二业务请求执行对应的响应操作。
[0024] 可以理解为,灰度决策引擎确定该用户已经完成灰度发布验证的情况下,灰度数据引擎将灰度表中该用户的数据进行实时回迁,不仅确保了生产表中用户数据的一致性,还避免了灰度数据引擎将该用户的数据从灰度表回迁至生产表时,出现数据丢失的情况。
[0025] 在另一种可能的实现方式中,将用户标识对应的数据从灰度表中回迁到生产表之前,方法还包括:灰度服务器删除生产表中用户标识对应的数据。
[0026] 也就是说,灰度服务器将用户标识对应的数据从灰度表中回迁到生产表时,灰度服务器首先删除生产表中用户标识对应的数据,再将灰度表中的该用户标识对应的数据复制到生产表,不仅避免了生产表中重复存储该用户的数据,在数据回迁的过程中,还避免了数据丢失的情况。
[0027] 在另一种可能的实现方式中,该灰度发布方法还包括:在网关确定数据回迁未成功的情况下,网关提示运维人员进行人工处理。
[0028] 第二方面,本申请提供了另一种灰度发布方法,应用于网关,方法包括:接收第一业务请求,第一业务请求中携带有用户标识;在确定用户标识满足预设条件的情况下,向灰度服务器发送数据迁移请求,数据迁移请求中携带有用户标识,其中,灰度服务器用于根据数据迁移请求,将用户标识对应的数据从生产表中迁移到灰度表,生产表为业务服务器对应的数据表,灰度表为灰度服务器对应的数据表,灰度表为对生产表的表结构进行复制得到的数据表,或对生产表的表结构进行复制后的数据表进行升级后得到的数据表;在确定数据迁移成功的情况下,将第一业务请求发送至灰度服务器。
[0029] 在一种可能的实现方式中,预设条件包括用户标识为预设用户的用户标识,且用户标识对应的灰度状态为未开启。
[0030] 在另一种可能的实现方式中,接收第一业务请求之前,该灰度发布方法还包括:开启灰度发布总开关。
[0031] 在另一种可能的实现方式中,该灰度发布方法还包括:在确定用户标识不为预设用户的用户标识的情况下,将第一业务请求发送至业务服务器。
[0032] 在另一种可能的实现方式中,该灰度发布方法还包括:在确定数据迁移成功的情况下,将用户标识对应的灰度状态设置为开启;在确定数据迁移未成功的情况下,将用户标识对应的灰度状态设置为失败,并通知灰度服务器对灰度表中用户标识对应的数据进行回滚删除操作。
[0033] 在另一种可能的实现方式中,该灰度发布方法还包括:接收第二业务请求,第二业务请求中携带有用户标识;在确定用户标识对应的灰度状态为开启的情况下,向灰度服务器发送数据回迁请求;在确定数据回迁成功的情况下,将第二业务请求发送至业务服务器。
[0034] 在另一种可能的实现方式中,该灰度发布方法还包括:在确定数据回迁未成功的情况下,提示运维人员进行人工处理。
[0035] 第三方面,本申请提供又一种灰度发布方法,应用于灰度服务器,方法包括:
[0036] 接收网关发送的数据迁移请求,数据迁移请求中携带有用户标识,数据迁移请求为网关接收到电子设备发送的第一业务请求后,确定用户标识满足预设条件的情况下向灰度服务器发送的,第一业务请求中携带有用户标识;根据数据迁移请求,将用户标识对应的数据从生产表中迁移到灰度表,生产表为业务服务器对应的数据表,灰度表为灰度服务器对生产表的表结构进行复制,并对复制后的数据表进行升级后得到的数据表;接收到网关发送的第一业务请求后,根据第一业务请求执行对应的响应操作,第一业务请求为网关确定数据迁移成功的情况下向灰度服务器发送的。
[0037] 在一种可能的实现方式中,预设条件包括用户标识为预设用户的用户标识,且用户标识对应的灰度状态为未开启。
[0038] 在另一种可能的实现方式中,根据第一业务请求执行对应的响应操作,包括:执行第一业务请求对应的灰度业务,将灰度业务对应的数据写入灰度表。
[0039] 在另一种可能的实现方式中,该灰度发布方法还包括:接收到网关发送的回滚删除操作后,对灰度表中用户标识对应的数据进行回滚删除操作。
[0040] 在另一种可能的实现方式中,该灰度发布方法还包括:接收网关发送的数据回迁请求,数据回迁请求为网关接收到电子设备发送的第二业务请求后,确定用户标识对应的灰度状态为开启的情况下发送的,第二业务请求中携带有用户标识;根据数据回迁请求,将用户标识对应的数据从灰度表中回迁到生产表。
[0041] 在另一种可能的实现方式中,将用户标识对应的数据从灰度表中回迁到生产表之前,方法还包括:删除生产表中用户标识对应的数据。
[0042] 第四方面,本申请提供一种灰度发布系统,包括:
[0043] 网关,网关用于执行第二方面的灰度发布方法;
[0044] 灰度服务器,灰度服务器用于执行上述第三方面的灰度发布方法;
[0045] 业务服务器,业务服务器用于在网关确定用户标识不为预设用户的用户标识的情况下,接收到网关发送的第一业务请求后,根据第一业务请求执行对应的响应操作。
[0046] 在一种可能的实现方式中,业务服务器还用于在网关确定数据回迁成功的情况下,接收到网关发到的第二业务请求后,根据第二业务请求执行对应的响应操作。
[0047] 第五方面,本申请提供一种电子设备,包括:一个或多个处理器;存储器;其中,存储器中存储有一个或多个计算机程序,一个或多个计算机程序包括指令,当指令被电子设备执行时,使得电子设备执行如上述第一方面中任一项所述的灰度发布方法。
[0048] 第六方面,本申请提供一种网关,包括:一个或多个处理器;存储器;其中,存储器中存储有一个或多个计算机程序,一个或多个计算机程序包括指令,当指令被电子设备执行时,使得电子设备执行如上述第二方面中任一项所述的灰度发布方法。
[0049] 第七方面,本申请提供一种服务器,包括:一个或多个处理器;存储器;其中,存储器中存储有一个或多个计算机程序,一个或多个计算机程序包括指令,当指令被电子设备执行时,使得电子设备执行如上述第三方面中任一项所述的灰度发布方法。
[0050] 第八方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在处理器上运行时,执行如第一方面中任一项所述的灰度发布方法,执行如第二方面中任一项所述的灰度发布方法,执行如第三方面中任一项所述的灰度发布方法。
[0051] 第九方面,本申请提供一种计算机程序产品,计算机程序产品包括计算机指令,当计算机指令在处理器上运行时,执行如第一方面中任一项所述的灰度发布方法,执行如第二方面中任一项所述的灰度发布方法,执行如第三方面中任一项所述的灰度发布方法。
[0052] 上述其他方面对应的有益效果,可以参见关于方法方面的有益效果的描述,此处不予赘述。

附图说明

[0053] 图1为本申请实施例提供的一种灰度发布系统的架构图;
[0054] 图2为本申请实施例提供的一种灰度发布系统的结构示意图;
[0055] 图3为本申请实施例提供的一种电子设备的硬件结构示意图;
[0056] 图4为本申请实施例提供的一种灰度发布方法的应用场景示意图;
[0057] 图5为本申请实施例提供的一种灰度发布方法的流程示意图;
[0058] 图6为本申请实施例提供的一种提示应用升级的示例图;
[0059] 图7为本申请实施例提供的另一种灰度发布方法的流程示意图;
[0060] 图8为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

[0061] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
[0062] 以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0063] 在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0064] 相关技术中,在开发人员对应用进行版本升级时,通常需要对应用的代码和数据均进行升级。其中,应用的数据中包括应用内容数据,缓存数据,配置数据以及用户数据等。可见,在开发人员对应用进行升级的过程中,存在对应用的数据库中的表结构进行变更(如,表字段的删除、新增或重命名等)的场景。目前,开发人员可以通过灰度发布的方式对应用的版本进行更新,其中,灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。
即开发人员首先让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对产品特性B没有反对意见,再逐步扩大范围,把所有用户都迁移到产品特性B上面来。
[0065] 目前,相关技术中对应用进行灰度发布时,对应用的数据进行升级时采用的方法及存在的问题包括如下几种情况。
[0066] 在一种方案中,开发人员对待升级应用进行灰度发布时,业务服务器和灰度服务器共用同一个数据库,并未对该应用的数据库进行拆分,而是直接在生产数据库中对该应用的数据表结构进行升级操作。这种情况下,可能存在版本未升级的应用与升级后的数据表结构不匹配,导致应用的代码存在不兼容等问题,从而导致生产数据库的某些功能受限。例如,灰度发布后的代码无法对生产数据库中的表字段进行删除、修改名称等操作。其中,生产数据库用于存储应用在生产环境中的数据。
[0067] 比如,假设生产数据库中订单表的某字段名称为“商品名称”,灰度发布时数据库服务器响应于用户的操作,将生产数据库中订单表的该字段名称修改为“商品名称列表”,使得修改后的字段名称满足版本升级后的应用的需求。然而,版本未升级的应用发起业务时,无法在生产数据库中查询到字段名称为“商品名称”的订单表。版本未升级的应用与升级后的数据表结构不匹配,导致应用的代码存在不兼容的问题。
[0068] 其中,业务服务器的环境为生产环境,其中包括的是一些成熟,无需测试的服务或应用。即业务服务器中配置的服务或应用无需进行灰度分布。灰度环境和生产环境分布配置了各自环境对应的服务或应用。
[0069] 在另一种方案中,开发人员对待升级应用进行灰度发布时,将该应用的生产数据库中的所有数据复制一份作为灰度数据库。待升级的应用在生产和灰度发布时,生产数据库和灰度数据库独立,灰度发布系统对应用进行灰度发布时,仅对灰度数据库中的数据进行更新。然而,灰度发布系统对应用进行灰度发布的过程中,存在生产数据库和灰度数据库中均有数据写入的情况。
[0070] 比如,假设待升级应用为购物类应用,该购物类应用升级前的版本为V1版本,升级后的版本为V2版本,灰度发布系统对该购物类应用进行灰度发布的过程中,一部分用户(比如,一千万个用户)使用V1版本时的数据被添加至生产数据库,一部分用户(比如,十万个用户)使用V2版本时的数据被添加至灰度数据库,即生产数据库和灰度数据库中均出现数据频繁变化的表(比如,订单表、用户表等)。在灰度发布结束后,开发人员将该应用升到一定版本时,需要将生产数据库和灰度数据库中的数据进行统一。由于生产数据库和灰度数据库中的同一个数据表可能被大量用户写入了数据,并且,无法停止用户向生产数据库和灰度数据库中写入数据,从而导致对生产数据库和灰度数据库进行统一时,可能存在数据丢失,生产数据库和灰度数据库中的数据不同步的问题。此外,还存在对数据库中的数据的正确性进行维护的成本高的问题。
[0071] 在又一种方案中,开发人员对待升级应用进行灰度发布时,将一部分用户的数据存储在生产数据库中,一部分用户的数据存储在灰度数据库中。灰度发布系统对应用进行灰度发布时,当应用的待升级版本出现问题时,灰度发布系统无法实时的关闭灰度环境,从而导致数据存储在灰度数据库中的用户的业务受到影响。
[0072] 针对上述问题,本申请实施例提供一种灰度发布方法,应用于灰度发布系统,该方法通过在灰度发布开启后,系统确定发送业务请求的电子设备的用户标识满足预设条件的情况下,将生产表中用户标识对应的数据迁移到灰度表,其中,预设条件为用户标识为预设用户的用户标识且用户标识对应的灰度状态为未开启,系统确定数据迁移成功后,将业务请求发送至灰度服务器进行相应处理。在系统确定用户标识对应的灰度状态为开启的情况下,将灰度表中用户标识对应的数据回迁至生产表。
[0073] 上述方法在灰度发布的过程中,通过在生产数据库中增加了与生产表的表结构相同的灰度表,将灰度发布过程中该用户标识对应的数据写入灰度表,并对灰度表中用户标识对应的数据进行实时的迁移和回迁,解决了相关技术中生产和灰度发布的数据写入同一个数据库时,灰度发布时对数据库的表结构进行升级操作后,导致生产的应用与升级后的数据表结构不匹配导致应用的代码存在不兼容等问题。此外,相较于相关技术中,在灰度发布的过程中,不同的用户分别对生产数据库和灰度数据库写入数据,导致对应用的版本进行升级,对生产数据库和灰度数据库进行数据统一时,存在数据丢失的问题,本申请实施例中,将灰度发布过程中该用户标识对应的数据写入灰度表,并对灰度表中用户标识对应的数据进行实时的迁移和回迁,避免了同时对大量的数据进行统一,导致数据容易丢失的问题,确保了生产和灰度发布后数据库中数据的一致性。
[0074] 此外,本申请实施例中,系统通过实时控制发送业务请求的电子设备的用户标识的灰度状态,即系统预先设定可以开启灰度的用户,或者,系统实时关闭已开启灰度的用户,实现了在灰度发布过程中,当应用的待升级版本出现问题时,通过实时关闭已开启灰度的用户,确保该用户的业务能够正常运行的目的。
[0075] 图1为本申请实施例提供的一种灰度发布系统的架构图。
[0076] 如图1所示,该系统可以包括:客户端110和服务端120。服务端中包括业务服务器121,灰度服务器122以及数据库服务器123。其中,灰度发布系统用于对待升级应用进行灰度发布。该待升级应用可以是购物类应用、阅读类应用、或游戏类应用等,此处对待升级应用不做限定。灰度发布系统可以包括安装在服务端的软件程序。服务端120可以是支持灰度发布的应用服务器。客户端110用于与用户进行交互。
[0077] 在一些实施例中,客户端110和服务端120之间可以通过应用编程接口(application programming interface,API)网关实现通信,以进行图片、视频、文本、音频或其他数据等信息的传输。客户端110可以是图1所示的各种终端设备(如终端设备111、112和113),比如,客户端110可以为手机、平板电脑、个人计算机(personal computer,PC)、个人数字助理(personal digital assistant,PDA)、智能手表、上网本、可穿戴电子设备、增强现实技术(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、车载设备、智能汽车、智能音响等电子设备,本申请实施例对此不做任何限制。
[0078] 其中,API网关作为灰度发布系统的后端总入口,用于为每个客户端110提供不同的API。当用户与客户端110进行交互时,比如,用户需要使用客户端110提供的某项服务(如,用户通过客户端发送信息),客户端110响应于用户的操作以生成相应的业务请求,客户端将该业务请求发送至API网关,API网关判断该客户端110能否访问灰度服务器122。若API网关确定该客户端110能够访问灰度服务器122,则将业务请求发送至灰度服务器122,以使得灰度服务器122进行相应的处理。若API网关确定客户端110不能够访问灰度服务器122,则将该业务请求发送至业务服务器121进行相应的处理。
[0079] 示例性的,如图2所示,图2为本申请实施例提供的一种灰度发布系统的结构示意图。
[0080] 如图2所示,该灰度发布系统可以包括API网关,数据库服务器,业务服务器以及灰度服务器。
[0081] 其中,API网关包括灰度决策引擎,该灰度决策引擎用于判断发起业务请求的用户是否满足灰度策略,或者,还用于判断该用户的灰度状态是否为开启状态。
[0082] 数据库服务器包括生产数据库。
[0083] 业务服务器包括生产业务服务模块,生产业务服务模块用于业务服务器接收到灰度决策引擎发送的业务请求后,对该业务请求进行相应的处理。
[0084] 灰度服务器包括灰度业务服务模块和灰度数据引擎。其中,灰度业务服务模块用于灰度服务器接收到灰度决策引擎发送的业务请求后,对该业务请求进行相应的处理。
[0085] 灰度数据引擎用于将生产数据库的生产表中的数据迁移至灰度表中,或者,用于将灰度表中的数据回迁至生产表中。其中,生产表用于存储应用在生产环境下的数据。灰度表用于存储应用在灰度环境下的数据。
[0086] 值得注意的是,图1和图2所示出的灰度发布系统仅为本实施例提供的一种示例,不应理解为对本申请的限定。
[0087] 示例性的,图3为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可以为上述客户端。如图3所示,电子设备100可以包括处理器101,外部存储器接口102,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达
191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器
180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器
180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
[0088] 可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0089] 处理器101可以包括一个或多个处理单元,例如:处理器101可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural‑network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0090] 其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0091] 处理器101中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器101中的存储器为高速缓冲存储器。该存储器可以保存处理器101刚用过或循环使用的指令或数据。如果处理器101需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器101的等待时间,因而提高了系统的效率。
[0092] 在一些实施例中,处理器101可以包括一个或多个接口。接口可以包括集成电路(inter‑integrated circuit,I2C)接口,集成电路内置音频(inter‑integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general‑purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
[0093] 可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0094] 充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。
[0095] 电源管理模块141用于连接电池142,充电管理模块140与处理器101。
[0096] 电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0097] 天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0098] 移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器101中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器101的至少部分模块被设置在同一个器件中。
[0099] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器101,与移动通信模块150或其他功能模块设置在同一个器件中。
[0100] 无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器101。无线通信模块160还可以从处理器101接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0101] 电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器101可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0102] 电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
[0103] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0104] 视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
[0105] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0106] 外部存储器接口102可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口102与处理器101通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0107] 内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0108] 按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
[0109] 马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
[0110] 指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0111] SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
[0112] 以下实施例中所涉及到的技术方案均可以在上述灰度发布系统中实现。以下以电子设备100为手机为例,对本申请实施例提供的灰度发布方法进行示例性说明。
[0113] 以对 应用进行灰度发布为例,假设淘宝的未升级版本为版本1,升级后版本为版本2,在灰度发布时,版本1的淘宝运行在业务服务器,版本2的淘宝运行在灰度服务器。响应于用户的操作,系统在生产数据库中增加与生产表的表结构相同的数据为空的灰度表后,对该灰度表进行升级操作。升级后的灰度表相较于生产表中可能增加一些字段,比如,假设生产表为订单表,该订单表中并未包括商品名称对应的字段,系统可以在灰度表中增加商品名称对应的字段。
[0114] 可以理解为,生产表和灰度表为同一个数据库中的表,生产表为业务服务器对应的数据表,灰度表为灰度服务器中对应的数据表。即在灰度发布的过程中,业务服务器执行的业务对应的数据写入生产表,灰度服务器执行的业务对应的数据写入灰度表。
[0115] 在本申请实施例中,参见图4,当用户使用手机中的应用办理某项业务时,手机响应于用户的操作,生成相应的业务请求。比如,手机中的 应用响应于用户的操作启动后,用户在手机中的淘宝应用创建新订单购买商品时,手机响应于用户的操作,生成创建新订单的业务请求。
[0116] 在本申请实施例中,用户可以通过多种方式指示打开淘宝,例如用户可以通过点击淘宝的图标的方式打开淘宝,可以通过语音指令的方式打开淘宝,或者还可以通过隔空手势指示打开淘宝等。
[0117] 示例性的,参见图4中的(a),用户打开淘宝的操作可以为用户点击淘宝图标401的操作。手机在检测到用户打开淘宝的操作后,手机的显示界面中显示淘宝对应的显示界面。
[0118] 在本申请实施例中,以用户在淘宝创建新订单为例,在手机检测到用户打开淘宝的操作后,手机响应于用户在淘宝创建新订单的操作,向灰度决策引擎发送创建新订单的业务请求。
[0119] 示例性的,如图4中的(a)所示,当手机检测到用户点击桌面上的淘宝的图标的操作后,可以启动淘宝,显示如图4中的(b)所示的界面。手机可以响应于用户在淘宝中创建新订单的操作,如图4中的(c)所示提交订单的操作,手机响应于用户的操作,生成创建新订单的业务请求。
[0120] 灰度决策引擎接收到创建新订单的业务请求后,灰度决策引擎判断该用户是否满足灰度策略,以及该用户对应的灰度状态是否开启,以确定将该业务请求发送至业务服务器进行处理,还是发送至灰度服务器进行处理。
[0121] 可以理解的是,手机响应于用户的操作创建新订单的业务请求时,其中,创建新订单的业务请求可以包括新订单创建请求、订单支付请求以及查看发货状态请求等,若灰度决策引擎确定该用户满足灰度策略,且确定该用户对应的灰度状态开启时,则灰度决策引擎将该业务请求发送至灰度服务器进行处理。若灰度决策引擎确定该用户对应的灰度状态并未开启,则灰度决策引擎将该业务请求发送至业务服务器进行处理。
[0122] 在一些实施例中,若灰度决策引擎确定该用户满足灰度策略,且该用户对应的灰度状态并未开启,则灰度决策引擎确定将该业务请求发送至灰度服务器进行处理。灰度决策引擎首先向灰度数据引擎发送数据迁移请求。灰度数据引擎将生产表中该用户的数据迁移至灰度表中后,向灰度决策引擎发送数据迁移结果。若灰度决策引擎根据数据迁移结果确定数据迁移成功,则将上述创建新订单的业务请求发送至灰度服务器进行相应的处理。
[0123] 灰度服务器中的灰度业务服务模块接收到创建新订单的业务请求后,根据该业务请求为该用户创建新订单,并返回相应的信息至手机的显示界面中进行显示,参见图4中的(d)。
[0124] 在另一些实施例中,若灰度决策引擎确定该用户不满足灰度策略,或该用户对应的灰度状态为开启,则灰度决策引擎将该业务请求发送至业务服务器进行处理。
[0125] 下面结合图5至图7对本申请实施例提供的灰度发布方法进行详细介绍。图5为本申请实施例提供的一种灰度发布方法的流程示意图。如图5所示,本申请实施例提供的灰度发布方法可以包括:
[0126] 步骤501,在手机检测到用户打开淘宝的操作后,手机响应于用户在淘宝创建新订单的操作,向灰度决策引擎发送创建新订单的业务请求1。
[0127] 步骤502,灰度决策引擎确定用户是否满足灰度策略。
[0128] 其中,灰度策略为预先设置的可以开启灰度的用户符合的条件。符合条件的用户可以为某一地区的用户,可以为某一年龄段的用户,或者,还可以为手机号码的尾号符合预设数字的用户。
[0129] 在一些实施例中,用户打开淘宝并登陆后,手机响应于用户在淘宝创建新订单的操作,向灰度决策引擎发送创建新订单的业务请求1。灰度决策引擎根据业务请求1的业务键值判断该用户是否满足灰度策略。
[0130] 可选地,业务请求1的业务键值用于唯一标识发送创建新订单的业务请求1的用户,比如,业务请求1的业务键值可以为该用户的用户标识。灰度决策引擎获取到业务请求1对应的用户标识后,根据用户标识判断该用户是否满足灰度策略。
[0131] 可以理解为,用户在淘宝注册后,系统为每一个用户分配一个唯一的用户标识,该用户标识用于识别用户的身份。比如,用户标识可以为用户的身份标识号(identity document,ID)。当用户登陆淘宝后,系统可以根据该用户的用户标识获取到该用户在淘宝注册的各种信息,比如,用户的年龄,地址等信息。用户标识可以是业务请求1中携带的,也可以是独立的,此处不做限定。
[0132] 示例性的,假设灰度策略为预设年龄段的用户开启灰度,若灰度决策引擎获取到创建新订单的用户的年龄未处于预设年龄段中,则灰度决策引擎确定该用户不符合灰度策略。若灰度决策引擎获取到创建新订单的用户的年龄处于预设年龄段中,则灰度决策引擎确定该用户符合灰度策略。比如,灰度策略为年龄在20岁至40岁的年龄段的用户开启灰度,若灰度决策引擎获取到创建新订单的用户的年龄为30岁,则灰度决策引擎确定该用户符合灰度策略。若灰度决策引擎获取到创建新订单的用户的年龄为55岁,则灰度决策引擎确定该用户不符合灰度策略。
[0133] 再示例性的,假设灰度策略为预设地区的用户开启灰度,若灰度决策引擎获取到创建新订单的用户的地址未处于预设地区中,则灰度决策引擎确定该用户不符合灰度策略。若灰度决策引擎获取到创建新订单的用户的地址处于预设地区中,则灰度决策引擎确定该用户符合灰度策略。比如,灰度策略为地理位置为北京的用户开启灰度,若灰度决策引擎获取到创建新订单的用户的地理位置为上海,则灰度决策引擎确定该用户不符合灰度策略。若灰度决策引擎获取到创建新订单的用户的地理位置为北京,则灰度决策引擎确定该用户符合灰度策略。在一些实施例中,若灰度决策引擎确定该用户不满足灰度策略,则执行步骤503‑步骤505。若灰度决策引擎确定该用户满足灰度策略,则执行步骤506。
[0134] 步骤503,若灰度决策引擎确定用户不满足灰度策略,则灰度决策引擎向生产业务服务模块发送创建新订单的业务请求1。
[0135] 可以理解为,该用户不属于对淘宝的新版本进行测试的用户,即灰度决策引擎确定用户不满足灰度策略,业务服务器对手机响应于该用户创建新订单的业务请求1进行相应的处理。
[0136] 步骤504,生产业务服务模块根据业务请求1创建新订单,并将对应的数据写入生产数据库中的生产表中。
[0137] 步骤505,生产业务服务模块通过API网关将新创建的订单发送至手机。
[0138] 在本申请实施例中,灰度决策引擎向生产业务服务模块发送创建新订单的业务请求1,生产业务服务模块接收到创建新订单的业务请求1后,可以根据该业务请求1创建新订单,并将对应的数据写入生产数据库中的生产表中。其中,新订单对应的数据包括淘宝用户名、订单数量、金额、收货地址、订单编号、交易时间等数据。生产业务服务模块完成新订单创建的业务后,通过API网关将该新创建的订单返回至手机进行显示。即手机中的淘宝可以显示生产业务服务模块创建的新订单。示例性的,如图4中的(d)所示,手机的界面中显示生产业务服务模块创建的新订单,即显示用户购买的童话书的订单。
[0139] 步骤506,若灰度决策引擎确定用户满足灰度策略,则灰度决策引擎判断该用户标识对应的灰度状态是否为开启。
[0140] 在一些实施例中,当灰度决策引擎确定用户满足灰度策略时,该用户的手机中的淘宝仍为版本1的情况下,灰度决策引擎可以提示该用户将淘宝的版本升级为版本2,进而,手机响应于用户的操作,将淘宝的版本升级为版本2。示例性的,如图6所示,手机的桌面中可以显示提示信息“淘宝新版本升级”。手机检测到用户对控件“是”的操作后,将淘宝的版本升级到版本2。
[0141] 步骤507,若灰度决策引擎确定该用户标识对应的灰度状态为开启,则灰度决策引擎将创建新订单的业务请求1发送至灰度业务服务模块。
[0142] 在一些实施例中,灰度决策引擎确定用户满足灰度策略时,灰度决策引擎确定该用户标识对应的灰度状态为开启。也就是说,灰度决策引擎确定该用户的数据已经从生产表中完全迁移至灰度表中。这种情况下,灰度决策引擎将创建新订单的业务请求1发送至灰度业务服务模块,灰度业务服务模块根据业务请求1创建新订单,并将对应的数据写入灰度表中。
[0143] 步骤508,若灰度决策引擎确定该用户标识对应的灰度状态为未开启,则灰度决策引擎将向灰度数据引擎发送迁移请求。
[0144] 其中,迁移请求中携带有用户标识,以使得灰度数据引擎根据用户标识从生产表中查询到该用户对应的数据。
[0145] 步骤509,灰度数据引擎进行数据迁移。
[0146] 需要解释的是,生产数据库的生产表中可以包括各用户对应的至少一个数据表。例如,各用户的数据表可以包括订单表、支付表、浏览记录表以及购物车表等。
[0147] 在本申请实施例中,灰度数据引擎根据用户标识从生产表中获取到该用户对应的数据后,灰度数据引擎将该用户对应的数据迁移至灰度表中。即灰度数据引擎将该用户对应的数据复制到灰度表中。
[0148] 其中,灰度表为对生产表的表结构进行复制得到的空表,其表结构与第一数据表的表结构完全相同,但数据为空。也就是说,在灰度数据引擎将用户的数据迁移至灰度表之前,该灰度表为一个空表。由于灰度表与生产表的表结构相同,从而在灰度数据引擎将用户的数据从生产表迁移至灰度表时,可以直接将该用户的数据从生产表复制到灰度表,避免了数据迁移时由于表结构不同导致数据丢失的情况。
[0149] 在一些实施例中,灰度表可以为对生产表的表结构进行复制,并对复制后的数据表进行升级得到的空表。比如,灰度表中包括生产表的表结构,并增加或修改了一些表结构。在后续步骤中灰度数据引擎根据业务请求1创建新订单,并将对应的数据写入灰度表时,在该业务请求1对应的数据增加了新字段的场景下,不会造成数据丢失。
[0150] 在一些实施例中,灰度数据引擎将用户的数据从生产表迁移至灰度表时,若该用户的数据为多个数据表,则灰度数据引擎可以采用多线程的数据迁移方法,将用户的多个数据同步迁移至灰度表中,从而提高了数据迁移的效率。
[0151] 示例性的,假设生产表中包括该用户对应的5条订单数据,灰度数据引擎将该用户的5条订单数据从生产表中复制到灰度表中。
[0152] 需要解释的是,灰度数据引擎接收到迁移请求后,仅将该用户的数据从生产表迁移至灰度表中,并不迁移其它用户的数据,从而避免了数据的丢失。
[0153] 步骤510,灰度数据引擎完成数据迁移后,向灰度决策引擎发送迁移结果。
[0154] 步骤511,灰度决策引擎判断是否迁移成功。
[0155] 若灰度决策引擎确定数据表迁移成功,则执行步骤512至步骤514,否则执行步骤515和步骤516。
[0156] 步骤512,若灰度决策引擎确定迁移结果为数据迁移成功,则记录该用户的灰度状态为开启。
[0157] 步骤513,灰度决策引擎向灰度业务服务模块发送创建新订单的业务请求1。
[0158] 在本申请实施例中,灰度决策引擎接收到灰度数据引擎发送的数据迁移完成的应答通知后,灰度决策引擎将该用户的灰度状态设置为开启。
[0159] 在一些实施例中,灰度决策引擎可以在灰度状态缓存中记录各用户的灰度状态。比如,灰度决策引擎可以在灰度状态缓存中记录该用户的灰度状态为开启。
[0160] 在上述步骤506中,灰度决策引擎确定用户满足灰度策略时,灰度决策引擎向灰度数据引擎发送迁移请求,并未发送创建新订单的业务请求1。当灰度决策引擎确定该用户的灰度状态为开启状态后,灰度决策引擎向灰度业务服务模块发送创建新订单的业务请求1。
[0161] 步骤514,灰度业务服务模块根据业务请求1创建新订单,并将对应的数据写入灰度表中。
[0162] 在本申请实施例中,灰度业务服务模块接收到创建新订单的业务请求1后,将创建新订单时的数据写入灰度表中,从而实现在灰度表中对该用户标识对应的数据进行修改。
[0163] 示例性的,假设灰度数据引擎已经将生产表中该用的5条订单数据迁移至灰度表中,灰度业务服务模块根据业务请求1创建新订单后,灰度业务服务模块在灰度表中的第6条订单数据中增加该新订单对应的数据。
[0164] 步骤515,若灰度决策引擎确定迁移结果为数据迁移失败,则记录该用户的灰度状态为失败。
[0165] 步骤516,灰度决策引擎通知灰度数据引擎对该用户标识对应的灰度表中的数据进行回滚删除操作。
[0166] 其中,回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。此处的回滚删除操作,是指将灰度表中该用户标识对应的数据删除,以将灰度表中该用户标识对应的数据恢复到数据迁移之前的状态的操作。
[0167] 如果灰度决策引擎根据接收到的迁移结果确定数据迁移失败或者数据迁移超时,则灰度决策引擎在灰度状态缓存中记录该用户的灰度状态为失败,并通知灰度数据引擎进行该用户标识对应的灰度表数据的回滚删除操作。
[0168] 在本申请实施例中,灰度决策引擎确定数据迁移失败后,灰度决策引擎接收到手机发送的新业务请求(比如,支付订单请求)后,灰度决策引擎将新业务请求发送至生产业务服务模块,生产业务服务模块根据接收到的新业务请求,将对应的数据写入生产数据库中的生产表中。也就是说,灰度决策引擎确定数据迁移失败后,后续的业务请求不进行数据迁移。
[0169] 可以理解为,业务服务器中的生产业务服务模块中创建新订单的操作为在淘宝的版本1中执行的操作,灰度服务器中的灰度业务服务模块中创建新订单的操作为在淘宝的版本2中执行的操作。在灰度发布系统进行灰度发布时,灰度决策引擎确定创建新订单的用户满足灰度策略,则创建新订单的业务由灰度业务服务模块执行。也就说,该用户的手机中运行的淘宝为版本2。
[0170] 在本申请实施例中,灰度发布系统确定对淘宝的版本2的验证满足预设条件后,灰度发布系统响应于用户的操作将淘宝的灰度发布的开关关闭。比如,灰度发布系统确定对淘宝的版本2的验证达到预设时长(比如,12小时,24小时等),开发人员将淘宝的灰度发布总开关关闭。或者,灰度发布系统确定预设数量的用户已经使用了淘宝的版本2,开发人员将淘宝的灰度发布总开关关闭。
[0171] 在手机中的淘宝的灰度发布总开关响应于用户操作关闭后,用户再次在该淘宝购买商品,即用户再次在淘宝创建新订单。手机响应于用户创建新订单的操作,向灰度决策引擎发送创建新订单的业务请求2。灰度决策引擎根据灰度状态缓存中记录的各用户的灰度状态,确定该用户的灰度状态为开启。即灰度数据引擎已经将该用户的数据从生产表中迁移至灰度表中,灰度表中存储有该用户的所有数据。这种情况下,灰度决策引擎通知灰度数据引擎将该用户对应的数据从灰度表中回迁至生产表中。灰度数据引擎将灰度表中该用户的数据回迁至生产表后,向灰度决策引擎发送回迁结果。灰度决策引擎根据回迁结果确定该用户的数据已经回迁至生产表中,则灰度决策引擎将创建新订单的业务请求2发送至生产业务服务模块,生产业务服务模块根据该业务请求2创建新订单,并将对应的数据写入生产表中。
[0172] 需要解释的是,上述手机响应于用户在淘宝购买商品的操作,触发灰度数据引擎将该用户对应的数据从灰度表中回迁至生产表仅作为示例性描述。在淘宝的灰度发布总开关响应于用户操作关闭后,用户再次打开淘宝,手机响应于用户的任意操作(比如,用户登陆淘宝、浏览商品、查看购买记录等)发起第一个业务请求后,灰度决策引擎根据灰度状态缓存中记录的各用户的灰度状态,确定该用户的灰度状态为开启的情况下,均可以触发灰度数据引擎将该用户对应的数据从灰度表中回迁至生产表。
[0173] 下面结合图7对上述过程进行详细介绍。如图7所示,本申请实施例提供的灰度发布方法还可以包括:
[0174] 步骤701,手机响应于用户在淘宝创建新订单的操作,向灰度决策引擎发送创建新订单的业务请求2。
[0175] 在本申请实施例中,在手机中的淘宝的灰度发布关闭后,用户再次在该淘宝购买商品,即用户再次在淘宝创建新订单,手机向灰度决策引擎发送创建新订单的业务请求2。
[0176] 步骤701的实现过程,可以参考上述步骤501的实现过程,此处不再赘述。
[0177] 步骤702,灰度决策引擎确定用户对应的灰度状态为开启。
[0178] 在本申请实施例中,灰度决策引擎接收到业务请求2后,灰度决策引擎根据该用户的用户标识,从灰度状态缓存中查询到该用户对应的灰度状态为开启。也就是说,该用户已经访问过灰度服务器,灰度发布系统已经对该用户进行了灰度发布验证。
[0179] 步骤703,灰度决策引擎向灰度数据引擎发送数据回迁请求。
[0180] 其中,数据回迁请求用于灰度数据引擎将生产数据库中灰度表中该用户对应的数据回迁至生产表中。数据回迁请求中携带有该用户的用户标识。
[0181] 在本申请实施例中,灰度决策引擎确定该用户对应的灰度流程已结束,灰度决策引擎向灰度数据引擎发送数据回迁请求,以使得灰度数据引擎将生产数据库中灰度表中该用户对应的数据回迁至生产表中。
[0182] 步骤704,灰度数据引擎将灰度表中该用户的数据回迁至生产表中。
[0183] 其中,灰度表中该用户的数据包括用户使用淘宝的版本2时存储的数据(比如,创建订单的数据,支付订单的数据等),以及灰度数据引擎在该用户进行灰度业务流程前从生产表中迁移至灰度表中的数据。
[0184] 在本申请实施例中,灰度数据引擎接收到数据回迁请求后,灰度数据引擎根据用户标识在灰度表中查询到该用户对应的数据。灰度数据引擎删除生产表中该用户的数据后,将灰度表中该用户的数据复制到生产表中。由此,灰度决策引擎确定该用户已经完成灰度发布验证,灰度数据引擎将灰度表中该用户的数据进行实时回迁,不仅确保了生产表中用户数据的一致性,还避免了灰度数据引擎将该用户的数据从灰度表回迁至生产表时,出现数据丢失的情况。
[0185] 示例性的,假设生产表中包括该用户的5条订单数据,灰度数据引擎将生产表中该用户的数据迁移至灰度表后,灰度表中包括该用户的5条订单数据。该用户使用淘宝的版本2时,灰度业务服务模块在灰度表中新增了2条订单数据。即灰度表中包括该用户的7条订单数据。灰度数据引擎接收到灰度决策引擎发送的数据回迁请求后,灰度数据引擎将生产表中该用户的5条订单数据删除后,将灰度表中该用户的7条订单数据复制到生产表中。由此,不仅避免了生产表中重复存储该用户的数据,在数据回迁的过程中,还避免了数据丢失的情况。
[0186] 在一种情况下,假设灰度表中存储有该用户的余额数据,当用户发起新的订单请求,手机响应于用户的支付操作付款后,灰度表中该用户的余额数据发生了改变。这种情况下,灰度数据引擎将灰度表中该用户的数据回迁至生产表时,灰度数据引擎删除生产表中该用户的数据后,将灰度表中该用户的数据复制到生产表中,可以避免数据回迁过程中出现丢失的情况。
[0187] 步骤705,灰度数据引擎向灰度决策引擎发送回迁结果。
[0188] 在本申请实施例中,灰度数据引擎将灰度表中该用户的数据回迁至生产表后,灰度数据引擎向灰度决策引擎发送回迁结果。
[0189] 步骤706,灰度决策引擎判断是否迁移成功。
[0190] 若灰度决策引擎根据接收到的回迁结果确定数据迁移成功,则执行步骤707和步骤708。否则,执行步骤709。
[0191] 步骤707,若灰度决策引擎确定数据迁移成功,则向生产业务服务模块发送创建新订单的业务请求2。
[0192] 步骤708,生产业务服务模块根据业务请求2创建新订单,并将对应的数据写入生产表中。
[0193] 若灰度决策引擎根据回迁结果确定数据回迁成功,则表明灰度数据引擎已经将灰度表中该用户的数据迁移至生产表中。即生产表中包括该用户的所有数据。灰度决策引擎向生产业务服务模块发送创建新订单的业务请求2,生产业务服务模块根据业务请求2创建新订单,并将对应的数据写入生产表中。
[0194] 若灰度决策引擎根据回迁结果确定数据回迁成功,则灰度决策引擎可以将灰度状态缓存中该用户的灰度状态删除。
[0195] 步骤709,灰度决策引擎提示运维人员人工处理。
[0196] 若灰度决策引擎根据回迁结果确定数据回迁失败,或者,确定数据回迁超时,则灰度决策引擎上报告警,以通知运维人员进行人工处理。
[0197] 在一些实施例中,灰度决策引擎可以通过发送提示信息的方式提示运维人员数据回迁失败,以提示运维人员进行人工处理。比如,灰度决策引擎向运维人员发送短信或邮件等信息,以提示运维人员进行人工处理。
[0198] 在另一些实施例中,灰度决策引擎可以触发灰度发布系统的报警灯,以通过报警灯提示运维人员进行人工处理。
[0199] 需要解释的是,上述灰度决策引擎提示运维人员的方式仅作为示例性描述,其它任何可以实现的方式也适用于本申请中,此处不做限定。比如,灰度决策引擎还可以触发声音提示的方式,提示运维人员进行人工处理,等等。
[0200] 由于灰度决策引擎确定该用户对应的数据回迁失败,运维人员接收到人工介入的提示后,可以将创建新订单的业务请求2分发至灰度环境中进行处理。即运维人员可以手动将创建新订单的业务请求2发送至灰度业务服务模块,以使得灰度业务服务模块根据业务请求2创建新订单,并将对应的数据写入灰度表中。
[0201] 在本申请实施例中,以淘宝的灰度发布过程作为示例,对灰度发布方法进行示例性介绍,在实际应用中,该灰度发布方法适用于任意应用的灰度发布,此处不做限定。
[0202] 在本申请实施例中,灰度决策引擎确定发起业务请求的用户是否满足灰度策略,以准确的确定处理该业务请求的服务器,从而提高了灰度发布的准确率。若灰度决策引擎确定发起业务请求的用户满足灰度策略,且该用户的灰度状态为未开启时,则灰度数据引擎将该用户的数据从生产表中迁移至灰度表中。灰度决策引擎确定数据迁移成功后,灰度决策引擎将该用户发起的业务请求发送至灰度业务服务模块进行相应的处理。若灰度数据引擎确定该用户已经完成灰度发布验证,则灰度数据引擎将该用户的数据从灰度表中回迁至生产表中。在灰度发布的过程中,灰度数据引擎对用户的数据进行迁移和回迁。由此,通过在生产数据库中增加了与生产的表结构相同的灰度表,将灰度发布过程中该用户标识对应的数据写入灰度表,并对灰度表中用户标识对应的数据进行实时的迁移和回迁,解决了相关技术中生产和灰度发布的数据写入同一个数据库后,灰度发布后的代码与灰度发布前的代码不兼容时,无法对数据库的表结构进行变更的问题,从而确保了灰度发布的场景不受限。
[0203] 此外,该灰度发布系统可以实时控制灰度发布总开关的开启和关闭,实现了在灰度发布过程中,当应用的待升级版本出现问题时,通过实时关闭灰度发布的开关,确保使用升级后的版本的用户的业务能够正常运行的目的。
[0204] 可见,与现有技术中业务服务器和灰度服务器共用同一个数据库,或者,业务服务器和灰度服务器的数据库独立,本申请实施例中通过在生产数据库中增加一个与生产表的表结构相同的灰度表,通过对发起业务请求的用户对应的数据进行迁移和回迁,不仅解决了业务服务器和灰度服务器共用同一个数据库时,存在需要版本代码进行兼容,且不支持表字段删除和改名的场景,导致灰度发布场景受限的问题,还解决了业务服务器和灰度服务器的数据库独立时,不同的用户分别对生产数据库和灰度数据库写入数据,导致对应用的版本进行升级,对生产数据库和灰度数据库进行数据统一时,存在数据丢失的问题。
[0205] 如图8所示,本申请实施例公开了一种电子设备,该电子设备可以为上述手机。该电子设备具体可以包括:触摸屏801,所述触摸屏801包括触摸传感器806和显示屏807;一个或多个处理器802;存储器803;一个或多个应用程序(未示出);以及一个或多个计算机程序804,上述各器件可以通过一个或多个通信总线805连接。其中,上述一个或多个计算机程序
804被存储在上述存储器803中并被配置为被该一个或多个处理器802执行,该一个或多个计算机程序804包括指令,该指令可以用于执行上述实施例中的相关步骤。
[0206] 可以理解的是,上述电子设备等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
[0207] 本申请实施例可以根据上述方法示例对上述电子设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0208] 在采用对应各个功能划分各个功能模块的情况下,上述实施例中涉及的电子设备的一种可能的组成示意图,该电子设备可以包括:显示单元、传输单元和处理单元等。需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0209] 本申请实施例还提供一种服务器,包括一个或多个处理器以及一个或多个存储器。该一个或多个存储器与一个或多个处理器耦合,一个或多个存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,使得服务器执行上述相关方法步骤实现上述实施例中的灰度发布方法。
[0210] 本申请的实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的灰度发布方法。
[0211] 本申请的实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的灰度发布方法。
[0212] 另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使装置执行上述各方法实施例中电子设备执行的灰度发布方法。
[0213] 其中,本实施例提供的服务器、计算机可读存储介质、计算机程序产品或装置均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0214] 通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0215] 在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0216] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0217] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。