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

文档序号:22845019发布日期:2020-11-06 16:49阅读:181来源:国知局
一种灰度发布的方法及装置与流程

本说明书涉及计算机技术领域,尤其涉及一种灰度发布的方法及装置。



背景技术:

当前,为了能够给用户提供更良好的业务体验,开发人员往往需要对业务的版本进行更新,然而,开发人员将线上的业务的版本进行更新或者上线新业务后,用户在执行业务的过程中时可能会出现一些问题。而为了避免这些问题给用户带来的影响,开发人员选择将新版本的业务代码先发布到特定灰度机器,让部分满足灰度条件的用户先体验新业务,试运行一段时间发现新版本的业务代码执行过程中没有出现问题后,再将新版本全面上线。



技术实现要素:

本说明书提供一种灰度发布的方法及装置,以用于对版本更新后的业务代码进行灰度发布。

本说明书采用下述技术方案:

本说明书提供了一种灰度发布的方法,包括:

业务平台接收用户发送的业务请求;

判断所述业务请求是否满足预设的灰度条件;

若确定所述业务请求满足所述灰度条件,获取携带有预设的灰度标识的灰度业务请求;

若确定所述业务请求对应的业务需要通过第三方平台执行,将所述灰度标识与所述灰度业务请求对应的请求标识进行对应保存,并将所述灰度业务请求发送给所述第三方平台;

接收所述第三方平台针对所述灰度业务请求返回的业务反馈信息;

通过所述业务反馈信息中携带的所述请求标识,查询出所述请求标识对应的所述灰度标识;

将所述灰度标识添加在所述业务反馈信息中,得到灰度反馈信息,并根据所述灰度反馈信息,执行针对所述业务请求对应灰度发布的验证。

可选地,确定所述业务请求满足所述灰度条件,具体包括:

确定所述业务平台为所述用户分配的用户id;

以设定数值对将所述用户id进行取模运算,得到取模结果;

若确定所述取模结果位于预设数值范围内,确定所述业务请求满足所述灰度条件。

可选地,所述业务平台包含有多个子系统,所述灰度业务请求对应有至少一个子灰度业务请求;

将预设的灰度标识添加在所述业务请求中,得到携带有所述灰度标识的灰度业务请求,具体包括:

针对每个子系统,按照所述业务请求对应的业务在所述多个子系统中的执行顺序,接收上一子系统发送的携带有所述灰度标识的子灰度业务请求;

从所述子灰度业务请求中提取出所述灰度标识,并执行所述子灰度业务请求,得到执行结果;

根据所述执行结果,确定向下一子系统发送的携带有所述灰度标识的子灰度业务请求,并发送给所述下一子系统。

可选地,从所述子灰度业务请求中提取出所述灰度标识,并执行所述子灰度业务请求,得到执行结果,具体包括:

将提取出的所述灰度标识作为线程变量,添加在该子系统用于处理所述业务请求对应业务的线程中,并通过添加所述线程变量的线程执行所述子灰度业务请求,得到执行结果。

可选地,根据所述灰度反馈信息,执行针对所述业务请求对应灰度发布的验证,具体包括:

若根据所述业务请求对应的业务类型,确定执行所述业务请求对应业务的至少部分子系统需要采用消息队列mq执行业务,将采用所述mq执行业务的子系统作为目标子系统;

针对每个目标子系统,按照所述业务请求对应的业务在各目标子系统中的执行顺序,从预设的灰度空间中获取下一目标子系统返回的灰度反馈结果,并根据所述灰度反馈结果执行针对所述业务请求对应灰度发布的验证,所述灰度反馈结果是所述下一目标子系统针对该目标子系统发送的子灰度业务请求向所述灰度空间返回的,所述灰度空间用于存储各灰度反馈结果。

可选地,若确定所述业务请求满足所述灰度条件,获取携带有预设的灰度标识的灰度业务请求,具体包括:

若确定所述业务请求满足所述灰度条件,向所述用户对应的终端返回灰度发布消息,以使所述终端根据所述灰度发布消息,将预设的灰度标识添加在所述业务请求中,得到所述灰度业务请求,并将所述灰度业务请求发送给所述业务平台,所述终端为所述用户发送所述业务请求所基于的终端。

可选地,所述方法还包括:

若确定所述业务请求不满足所述灰度条件,且所述业务请求中携带有所述灰度标识,向所述用户对应的终端发送标识消除消息,以使所述终端根据所述标识消除消息,去除所述业务请求携带的所述灰度标识,并将去除所述灰度标识后的业务请求发送给所述业务平台,所述终端为所述用户发送所述业务请求所基于的终端。

本说明书提供了一种灰度发布的装置,包括:

第一接收模块,用于接收用户发送的业务请求;

判断模块,用于判断所述业务请求是否满足预设的灰度条件;

获取模块,用于若确定所述业务请求满足所述灰度条件,获取携带有预设的灰度标识的灰度业务请求;

发送模块,用于若确定所述业务请求对应的业务需要通过第三方平台执行,将所述灰度标识与所述灰度业务请求对应的请求标识进行对应保存,并将所述灰度业务请求发送给所述第三方平台;

第二接收模块,用于接收所述第三方平台针对所述灰度业务请求返回的业务反馈信息;

查询模块,用于通过所述业务反馈信息中携带的所述请求标识,查询出所述请求标识对应的所述灰度标识;

执行模块,用于将所述灰度标识添加在所述业务反馈信息中,得到灰度反馈信息,并根据所述灰度反馈信息,执行针对所述业务请求对应灰度发布的验证。

本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述灰度发布的方法。

本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述灰度发布的方法。

本说明书采用的上述至少一个技术方案能够达到以下有益效果:

在本说明书提供的灰度发布的方法中,业务平台接收用户发送的业务请求,并判断该业务请求是否满足预设的灰度条件,若确定该业务请求满足灰度条件,获取携带有预设的灰度标识的灰度业务请求。而后,若确定该业务请求对应的业务需要通过第三方平台执行,将灰度标识与灰度业务请求对应的请求标识进行对应保存,并将该灰度业务请求发送给第三方平台。之后,接收第三方平台针对该灰度业务请求返回的业务反馈信息,并通过该业务反馈信息中携带的请求标识,查询出该请求标识对应的灰度标识,将该灰度标识添加在业务反馈信息中,得到灰度反馈信息,并根据灰度反馈信息,执行针对该业务请求对应灰度发布的验证。

从上述方法中可以看出,本方法是通过对需要进行灰度发布的业务对应的业务请求添加灰度标识,进而执行针对该业务请求对应灰度发布的验证。若该业务需要第三方平台的协同执行,业务平台还可以对第三方平台返回的业务反馈信息添加上述灰度标识,由于,灰度标识是一直携带在业务平台用于执行该业务请求对应业务的数据中的,所以,业务平台根据该灰度标识能够将该业务请求对应的业务的全部业务环节进行有效地灰度验证,从而有效地验证了灰度发布的完整性和准确性。

附图说明

此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:

图1为本说明书中一种灰度发布的方法的流程示意图;

图2为本说明书提供的一种对接收到的业务请求进行判断的流程示意图;

图3为本说明书提供的一种灰度发布的装置的示意图;

图4为本说明书提供的对应于图1的电子设备示意图。

具体实施方式

为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。

在实际应用中,业务平台中包含有多个子系统,每个子系统可以负责至少一个业务环节的业务处理,子系统之间互相通信来对业务平台中的业务进行执行。例如,业务平台中包含有借贷处理子系统、信用审核子系统,借贷处理子系统以及信用审核子系统用于共同处理业务平台向用户提供的借贷业务。

借贷处理子系统接收用户发送的借贷请求并确定该用户的用户信息后,将向信用审核子系统发送针对该用户的审核请求,以从该信用审核子系统中获取针对该用户进行借贷的资格进行审核的审核结果。信用审核子系统将向各银行、信用服务机构等查询该用户的信用记录,并根据查询出的该用户的信用记录,对该用户的信用进行评估,以得到针对该用户借贷资格的审核结果。而后,信用审核子系统会将得到的审核结果返回给借贷处理子系统,借贷处理子系统将根据该用户的审核结果确定是否向用户进行贷款的发放以及发放贷款的额度。

在现有技术中,业务平台对更新了版本的业务或是新业务进行灰度发布时,由于该业务可能涉及多个子系统,并且该业务可能还会涉及第三方平台的协同执行,因此在执行灰度发布的过程中可能会出现该业务的部分业务环节没有得到有效灰度验证的情况。

为了解决上述问题,本说明书提供了一种灰度发布的方法,该方法通过在业务请求中添加灰度标识,对该业务请求分发到相应灰度服务器进行灰度验证。若该业务需要第三方平台的协同执行,业务平台还可以对第三方平台返回的业务反馈信息添加上述灰度标识。通过该灰度标识,可以保证涉及灰度发布的业务在各业务环节上均能得到有效地灰度验证,从而有效地验证了灰度发布的完整性和准确性。

以下结合附图,详细说明本说明书各实施例提供的技术方案。

图1为本说明书中一种灰度发布的方法的流程示意图,具体包括以下步骤:

s101:业务平台接收用户发送的业务请求。

s102:判断所述业务请求是否满足预设的灰度条件。

在实际应用中,当业务平台对业务的更新后版本进行上线前,需要对该更新后版本进行灰度发布。例如,业务平台可以选择一部分用户,使这部分用户按照该业务的更新后版本进行业务执行,以对该业务所涉及的各个业务环节进行灰度验证。若确定该业务的更新后版本通过灰度验证,则可以将该更新后版本上线,以供所有用户使用。当然,对于新业务来说,也需要对其进行灰度发布,以保证上线后的新业务能够进行有效地执行。为了便于描述,下面将仅以现有业务的更新后版本需要进行灰度发布,来对本说明书提供的灰度发布的方法进行说明。

当业务平台需要对业务进行灰度发布时,可以根据预设的灰度条件,各用户发送的业务请求进行筛选,以筛选出需要执行灰度验证的业务请求。其中,用户可以通过持有的终端或是终端中安装的客户端,向业务平台发送业务请求。业务平台接收到该业务请求后,可以判断该业务请求是否满足预设的灰度条件。这里提到的终端可以是指用户持有的笔记本电脑、手机、平板电脑等设备。

对于用户发送的业务请求,若是该业务请求满足灰度条件,则业务平台可以按照需要进行灰度发布的更新后版本,对该业务请求进行执行,当然,对于不满足灰度条件的业务请求,业务平台依然会使用线上当前的业务版本执行该业务请求对应的业务。这里提到的灰度条件可以根据实际的灰度发布需求而设置。

在本说明书中,灰度条件可以有多种形式。具体的,业务平台可以确定出发送该业务请求的用户的用户id,并以设定数值对该用户id进行取模运算得到取模结果,若确定该取模结果位于预设数值范围内,则该业务请求满足上述灰度条件。

例如,假设设定数值为10000,预设数值范围为1~4。当业务平台接收到的业务请求所对应的用户的用户id为10001(这里提到的用户id可以是用户在业务平台上进行账号注册时业务平台为该用户分配的),则以10000作为除数,对该用户id的进行取模,得到的取模结果为1。由于取模结果:1落入到预设数值范围,则可以确定该业务请求满足灰度条件。若接收到的业务请求所对应的用户的用户id为10005,则依然以10000作为除数,对该用户id的进行取模,得到的取模结果为5。由于取模结果:5未落入到预设数值范围,则可以确定该业务请求不满足灰度条件。

业务平台还可以将灰度条件设定为:从执行灰度发布开始,若接收到的业务请求所对应的序号是指定数值的倍数,则确定该业务请求符合灰度条件。例如,假设指定数值为20,若从进行灰度发布开始,业务平台接收到的业务请求a所对应的序号为40(即表明从进行灰度发布开始,该业务请求a是业务平台接收到的第40个业务请求),由于40是20的倍数,因此确定业务请求a符合灰度条件。这里提到的指定数值可以是根据实际需求进行设定的。而灰度条件的其他形式在此就不一一举例了。

s103:若确定所述业务请求满足所述灰度条件,获取携带有预设的灰度标识的灰度业务请求。

业务平台若确定该业务请求满足该灰度条件,可以获取携带有预设的灰度标识的灰度业务请求,进而基于该灰度业务请求,对该业务的更新后版本进行灰度验证。这里提到的灰度标识可以通过指定形式的字段进行表示,如,gray、graykey等。

其中,添加灰度标识的方式可以有多种,例如,当业务平台确定该业务请求满足预设的灰度条件后,可以向用户终端安装的客户端发送灰度发布消息,该灰度发布消息可以使客户端确定需要在该业务请求中添加灰度标识。客户端接收到该灰度发布消息可以将预设的灰度标识添加在业务请求中,得到灰度业务请求并发送给业务平台。

其中,该灰度标识可以是业务平台携带在灰度发布消息中发送给客户端,客户端需要提取出该灰度标识添加在业务请求中,得到灰度业务请求,并将该灰度业务请求发送给业务平台。当然,该灰度标识也可以是预先保存在客户端中的,客户端接收到灰度发布消息后,确定需要将保存的灰度标识添加在业务请求中,得到灰度业务请求,并将该灰度业务请求发送给该业务平台。

而无论是这里提到的哪一种方式,客户端均需要发送两次业务请求,第一次发送的是未添加灰度标识的业务请求,第二次发送的是添加了灰度标识的灰度业务请求。

当然,在本说明书中,业务平台在确定出该业务请求满足上述灰度条件时,也可以主动将灰度标识添加在业务请求中,直接得到该灰度业务请求,这种方式不需要客户端再次发送灰度业务请求。

需要说明的是,对于需要客户端向业务平台发送灰度业务请求的情况来说,客户端还未将该灰度业务请求发送到业务平台之前,根据实际的灰度发布需求,业务平台中设置的灰度条件可能会发生改变。

例如,更新版本后的业务a以及业务b的业务逻辑是由同一服务器执行的,因此业务a以及业务b对应的灰度业务请求均由该服务器来处理,若是需要扩大对业务a进行灰度发布的用户数量,则该服务器的负载较重,因此,业务平台改变了针对业务b的灰度条件,来减少业务b的灰度业务请求,以保证该服务器的稳定运行。

然而,对于业务b来说,原先符合该业务b的灰度条件的业务请求已经被添加上了灰度标识,并且相应的灰度业务请求已经被发送给业务平台,业务平台接收到该灰度业务请求后,依然会对其执行灰度发布所需的灰度验证。因此,即使更改了业务b的灰度条件,事先已经添加上灰度标识的针对业务b的灰度业务请求依然会对服务器造成较大的运行压力,从而可能会导致该服务器出现宕机等情况。

为了避免上述情况的发生,在本说明书中,业务平台在判断业务请求是否满足预设的灰度条件时,若确定该业务请求不满足灰度条件,并且该业务请求中携带了灰度标识,则业务平台可以向用户终端中安装的客户端发送标识消除消息。客户端接收到该标识消除消息,可以去除该业务请求中携带的灰度标识,并将去除了灰度标识的业务请求发送给业务平台。这样可以使去除灰度标识的业务请求将按照线上的业务版本进行执行,从而有效地保证了用于执行灰度发布的服务器的稳定运行。

在实际应用中,业务平台中可以包含有多个子系统,对于一项业务来说,一个业务所涉及的各子系统,负责对该业务所涉及的各业务环节进行处理,换句话说,对于一项业务,一个子系统负责处理该业务的至少一个业务环节。而在进行灰度发布之前,需要为各子系统申请相应灰度服务器,以使子系统可以通过该子系统对应的灰度服务器,对该子系统所负责的业务环节进行灰度发布所需的灰度验证。这里提到的灰度服务器用于运行该更新版本后中该子系统所负责的业务环节的业务逻辑。相应的,上述提到的灰度业务请求也应包含有至少一个子灰度业务请求,子灰度业务请求是指各子系统共同进行业务执行时所产生的内部调用的请求,换句话说,一个子系统在执行业务的过程中向下一个子系统发送的用于灰度发布所需的灰度验证的请求,可以称之为子灰度业务请求。

对于同一业务,各子系统执行该业务时具有一定业务逻辑顺序,最初进行业务执行的子系统为接收用户发送的业务请求的子系统,当该子系统接收到上述灰度业务请求并对其进行处理后,可以根据处理该灰度业务请求所得到的执行结果,向下一个子系统发送子灰度业务请求。以此类推,直到各子系统执行完所有的业务环节。

对于每个发送给子系统的子灰度业务请求,都需要在该子灰度业务请求中添加上述灰度标识,这样一来,各子系统接收到子灰度业务请求后,能够通过该灰度标识,确定该子灰度业务请求由相应的灰度服务器进行执行,从而完成相应的灰度验证。

具体的,针对每个子系统,业务平台可以按照上述业务请求对应的业务在各子系统中的执行顺序,接收上一个子系统发送的携带有该灰度标识的子灰度业务请求,并从该子灰度业务请求中提取出灰度标识。该子系统执行子灰度业务请求得到执行结果后,根据该执行结果向下一个子系统发送携带有灰度标识的子灰度业务请求。

例如,业务平台的在线购物业务涉及订单处理子系统以及订单支付子系统,订单处理子系统接收用户发送的下单请求并生成相应的订单。生成相应的订单后,该订单处理子系统通过该订单对应的订单数据,向订单支付子系统发送结算订单请求,以使支付子系统通过该订单数据对用户的订单进行结算。若订单处理子系统接收到的下单请求为携带有灰度标识的灰度业务请求,则订单处理子系统将通过该订单处理子系统对应的灰度服务器执行该灰度业务请求,并生成相应的订单。而后,订单处理子系统将向订单支付子系统发送携带有灰度标识的结算订单请求(即,该结算订单请求为子灰度业务请求),相应的,支付子系统根据该灰度标识,也将通过该支付子系统所对应的灰度服务器处理该结算订单请求。

在实际应用中,各子系统在执行业务请求对应的业务时,可以对应有执行该业务的线程,子系统执行子灰度业务请求时可以将提取出的灰度标识作为线程变量,添加在针对该业务的线程中,该线程执行子灰度业务请求后,得到包含有灰度标识的执行结果,并根据该执行结果向下一个子系统发送子灰度业务请求。

当然,业务平台也可以在各子系统接收到子灰度业务请求时,将该子灰度业务请求对应的灰度标识进行对应保存。在向下一个子系统发送子灰度业务请求时,可以将保存的灰度标识添加至向下一个子系统发送的子业务请求中,得到相应的子灰度业务请求,并将该子灰度业务请求发送给下一个子系统。其他的方式在此就不详细举例说明了。

在本说明书中,用户的客户端与业务平台之间可以通过超文本传输协议(hypertexttransferprotocol,http)进行信息传输,相应的,客户端向业务平台发送的业务请求,可以是指http请求。而业务平台中各子系统之间可以通过远程过程调用(remoteprocedurecall,rpc)的通信方式进行信息传输。相应的,一个子系统向另一个子系统发送的业务请求(或子业务请求)可以是指rpc请求。

s104:若确定所述业务请求对应的业务需要通过第三方平台执行,将所述灰度标识与所述灰度业务请求对应的请求标识进行对应保存,并将所述灰度业务请求发送给所述第三方平台。

s105:接收所述第三方平台针对所述灰度业务请求返回的业务反馈信息。

s106:通过所述业务反馈信息中携带的所述请求标识,查询出所述请求标识对应的所述灰度标识。

在实际应用中,业务平台中的某些业务可能是涉及第三方平台的,例如,对于用户进行订单支付的业务场景,若是用户选择使用第三方支付平台的账户对订单进行支付,业务平台需要向第三方支付平台发送用户使用在第三方支付平台的账户进行订单支付的支付请求,以使第三方支付平台返回针对该支付请求的支付结果(这里的支付结果可以称之为是第三方支付平台返回的业务反馈信息),进而对用户的订单进行结算。

由于第三方平台所返回的业务反馈信息的数据形式是由第三方平台自行设定的,因此即使业务平台向第三方平台发送的灰度业务请求中携带了灰度标识,第三方平台向业务平台所返回的数据可能也不会包含有灰度标识。而对于业务平台来说,当接收到的数据是包含有灰度标识的,业务平台或是该业务平台中包含的子系统才能够根据该灰度标识,确定需要对接收到的数据继续进行灰度发布所需的灰度验证。而若是接收到的数据不包含有灰度标识,则业务平台无法保证能够根据接收到的数据继续执行后续的灰度验证。

基于此,业务平台向第三方平台发送灰度业务请求时可以先将该灰度业务请求对应的请求标识与灰标识进行对应保存。当接收第三方平台针对灰度业务请求返回的业务反馈信息时,业务平台可以判断该业务反馈信息中是否携带有上述灰度标识,若是未携带上述灰度标识,业务平台可以根据预先保存的各请求标识与灰度标识之间的对应关系(如果灰度标识为一个统一的标识,则各请求标识与灰度标识之间的对应关系,实际上是不同请求标识与相同标识之间的对应关系),查询出该业务反馈信息中包含的请求标识是否对应有灰度标识。若是,则业务平台可以在返回的业务反馈信息中添加灰度标识。这样一来,即使第三方平台返回的业务反馈信息中未携带有灰度标识,业务平台也能根据添加了灰度标识的业务反馈信息继续执行后续的灰度验证。

上述提到的请求标识可以有多种形式,例如,该请求标识可以是用户执行灰度业务请求对应的业务时,业务平台为此次业务请求所分配的业务流水号;再例如,该请求标识可以是发送灰度业务请求的用户的用户id与该用户发送灰度业务请求时所产生的时间戳的组合,其他的形式在此就不一一举例说明了。

需要说明的是,由于业务平台中包含有多个子系统,所以,接收第三方平台返回的业务反馈信息也可能是业务平台中的一个子系统。相应的,上述提到的向业务反馈信息中添加灰度标识的过程,可以是与第三方平台进行信息交互的子系统来完成的。

s107:将所述灰度标识添加在所述业务反馈信息中,得到灰度反馈信息,并根据所述灰度反馈信息,执行针对所述业务请求对应灰度发布的验证。

业务平台查询出该业务反馈信息携带的请求标识对应的灰度标识,并将该灰度标识添加在该业务反馈信息中,可以得到灰度反馈信息。而后,可以根据该灰度反馈信息,对上述用户发送业务请求所需执行的业务继续进行后续的灰度验证。所以,所谓的执行针对所述业务请求对应灰度发布的验证,实际上是指对需要灰度发布的该业务请求对应的业务执行所需的灰度验证。

在实际应用中,业务平台中某些业务类型的业务所需的即时性较低,例如,若业务过程中需要对用户进行信用评估,其过程往往需要获取到用户的多方面信息,并结合获取到的多方面信息来进行信用评估,因此确定出用户的信用评估结果需要耗费较多时间。也就是说,该信用评估结果可能需要过一段时间才会返回给用户。对于执行这样的业务的子系统,子系统之间的信息通信可以采用消息队列(messagequeue,mq)的方式,进行业务执行。

对于采用mq方式的子系统来说,两个子系统之间通信的信息通常会放在一个公共空间存储。例如,假设有采用mq方式进行通信的两个子系统:a和b,子系统a向子系统b发送业务请求,子系统b会根据该业务请求,确定出相应的反馈结果,子系统b可以将该反馈结果放在该公共空间中,待子系统a从该公共空间中捞取该反馈结果。在执行灰度发布时也同样如此,子系统b需要将子系统a用于灰度发布所需灰度验证的灰度反馈结果放置在该公共空间中,待子系统a从该公共空间中捞取该灰度反馈结果,并继续执行相应的灰度验证。

然而,由于该公共空间中即会存储用于灰度发布所需灰度验证的灰度反馈结果,也会存储线上正常业务(即,未进行灰度发布,按照线上版本执行的业务)的业务反馈结果,则就可能导致子系统a误将灰度反馈结果从公共空间中捞取出来,用于执行后续的线上正常业务,或是误将线上正常业务的业务反馈结果从该公共空间中捞取出来,用于继续执行后续的灰度验证的情况,从而会给线上正常业务的执行或是后续的灰度验证带来不利的影响。

为了避免上述情况的发生,在本说明书中,业务平台若是根据上述业务请求对应业务的业务类型,确定执行该业务的至少部分子系统需要采用mq执行业务,可以将这些子系统作为目标子系统。业务平台可以针对每个目标子系统,按照该业务请求对应的业务在各目标子系统中的执行顺序,从预设的灰度空间中获取到下一个目标子系统返回的灰度反馈结果,并根据该灰度反馈结果执行灰度发布所需的灰度验证。

上述提到的灰度空间用于存储灰度反馈结果,也就是说,目标子系统在执行灰度发布时所需的灰度反馈结果,只会从灰度空间中捞取。即,下一个目标子系统是接收该目标子系统发送的子灰度业务请求的系统,下一个目标子系统接收到子灰度业务请求后,将针对该子灰度业务请求确定出相应的灰度反馈结果,并发送到灰度空间中存储,该子目标系统则将会从该灰度空间中捞取出该灰度反馈结果,进而继续执行后续的灰度验证。

需要说明的是,灰度反馈结果与灰度反馈信息的区别在于,灰度反馈信息是第三方平台返回给业务平台的,若是下一个目标子系统执行该子灰度业务请求时涉及第三方平台,则该灰度反馈结果是下一个目标子系统将灰度反馈信息进行处理得到的。若是下一个目标子系统执行该子灰度业务请求时不涉及第三方平台,则该灰度反馈结果仅是下一个目标子系统针对该子灰度业务请求向该目标子系统返回的数据。

与灰度空间相对应的则是非灰度空间,该非灰度空间中用于存储线上正常业务所需的业务反馈结果。也就是说,通过灰度空间和非灰度空间,可以将用于灰度发布所需灰度验证的灰度反馈结果,和线上正常业务的业务反馈结果进行有效地隔离区分。这样可以有效地保证在执行灰度发布的过程中,采用mq的子系统(即子目标系统)不会捞取到线上正常业务的业务反馈结果,从而有效地保证了后续灰度验证的顺利进行。

下面以一个完整的例子来说明,业务平台在接收到业务请求时会如何对该业务请求进行判断,确定该业务请求是否为添加灰度标识的业务请求,如图2所示。

图2为本说明书提供的一种对接收到的业务请求执行灰度验证的流程示意图。

在图2中可以看出,当业务平台接收到业务请求后,先确定该业务请求是否为该业务请求对应的业务的初始请求,若该业务请求不为初始请求,则业务平台可以直接接收该业务请求,这是因为只要将一项业务中用户最开始发起的业务请求中添加了灰度标识,该业务后续的业务请求均会携带有该灰度标识。所以,后续判断是否需要添加灰度标识,针对的是用户执行业务时一开始通过客户端向业务平台发送的业务请求,即,初始请求。

若业务平台确定该业务请求为业务的初始请求,可以确定当前是否需要灰度验证,若是当前需要进行灰度验证,可以确定该业务请求是否为满足灰度条件的业务请求,若是该业务请求满足灰度条件,并且该业务请求中不包含灰度标识,可以返回灰度发布消息以使客户端对该业务请求添加灰度标识,若该业务请求中已经携带了灰度标识,那么业务平台可以对该业务请求对应的业务进行灰度发布所需的灰度验证。

若是业务平台确定当前不需要进行灰度发布但是该业务请求中携带了灰度标识,或者业务平台确定该业务请求不满足灰度条件但是该业务请求中携带了灰度标识,则业务平台可以向发送该业务请求的客户端返回标识消除消息,以使客户端将该业务请求中的灰度标识去除,再将灰度标识去除后的业务请求发送到业务平台。

从上述方法中可以看出,本说明书提供了一种灰度发布的方法,该方法是通过对需要进行灰度发布的业务请求标识灰度标识,进而对该业务请求执行相应灰度发布的灰度验证。若该业务需要第三方平台的协同执行,业务平台还可以对第三方平台返回的业务反馈信息添加上述灰度标识。即,通过本方法可以保证灰度发布所涉及的各业务环节,均能获取到添加有灰度标识的业务请求以及反馈结果,这能有效地保证各业务环节均能得到有效地灰度验证,从而有效地验证了灰度发布的完整性和准确性。

以上为本说明书的一个或多个实施例提供的灰度发布的方法,基于同样的思路,本说明书还提供了相应的灰度发布的装置,如图3所示。

图3为本说明书提供的一种灰度发布的装置示意图,具体包括:

第一接收模块301,用于接收用户发送的业务请求;

判断模块302,用于判断所述业务请求是否满足预设的灰度条件;

获取模块303,用于若确定所述业务请求满足所述灰度条件,获取携带有预设的灰度标识的灰度业务请求;

发送模块304,用于若确定所述业务请求对应的业务需要通过第三方平台执行,将所述灰度标识与所述灰度业务请求对应的请求标识进行对应保存,并将所述灰度业务请求发送给所述第三方平台;

第一接收模块305,用于接收所述第三方平台针对所述灰度业务请求返回的业务反馈信息;

查询模块306,用于通过所述业务反馈信息中携带的所述请求标识,查询出所述请求标识对应的所述灰度标识;

执行模块307,用于将所述灰度标识添加在所述业务反馈信息中,得到灰度反馈信息,并根据所述灰度反馈信息,执行针对所述业务请求对应灰度发布的验证。

可选地,所述发送模块304具体用于,确定所述业务平台为所述用户分配的用户id;以设定数值对将所述用户id进行取模运算,得到取模结果;若确定所述取模结果位于预设数值范围内,确定所述业务请求满足所述灰度条件。

可选地,所述业务平台包含有多个子系统,所述灰度业务请求对应有至少一个子灰度业务请求;

所述获取模块303具体用于,针对每个子系统,按照所述业务请求对应的业务在所述多个子系统中的执行顺序,接收上一子系统发送的携带有所述灰度标识的子灰度业务请求;从所述子灰度业务请求中提取出所述灰度标识,并执行所述子灰度业务请求,得到执行结果;根据所述执行结果,确定向下一子系统发送的携带有所述灰度标识的子灰度业务请求,并发送给所述下一子系统。

可选地,所述获取模块303具体用于,将提取出的所述灰度标识作为线程变量,添加在该子系统用于处理所述业务请求对应业务的线程中,并通过添加所述线程变量的线程执行所述子灰度业务请求,得到执行结果。

可选地,所述执行模块307具体用于,若根据所述业务请求对应的业务类型,确定执行所述业务请求对应业务的至少部分子系统需要采用消息队列mq执行业务,将采用所述mq执行业务的子系统作为目标子系统;针对每个目标子系统,按照所述业务请求对应的业务在各目标子系统中的执行顺序,从预设的灰度空间中获取下一目标子系统返回的灰度反馈结果,并根据所述灰度反馈结果执行针对所述业务请求对应灰度发布的验证,所述灰度反馈结果是所述下一目标子系统针对该目标子系统发送的子灰度业务请求向所述灰度空间返回的,所述灰度空间用于存储各灰度反馈结果。

可选地,所述获取模块303具体用于,若确定所述业务请求满足所述灰度条件,向所述用户对应的终端返回灰度发布消息,以使所述终端根据所述灰度发布消息,将预设的灰度标识添加在所述业务请求中,得到所述灰度业务请求,并将所述灰度业务请求发送给所述业务平台,所述终端为所述用户发送所述业务请求所基于的终端。

可选地,所述装置还包括:

返回模块308,用于若确定所述业务请求不满足所述灰度条件,且所述业务请求中携带有所述灰度标识,向所述用户对应的终端发送标识消除消息,以使所述终端根据所述标识消除消息,去除所述业务请求携带的所述灰度标识,并将去除所述灰度标识后的业务请求发送给所述业务平台,所述终端为所述用户发送所述业务请求所基于的终端。

本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的灰度发布的方法。

本说明书还提供了图4所示的电子设备的示意结构图。如图4所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的灰度发布的方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1