CN110737548B - 数据请求方法和服务器 - Google Patents
数据请求方法和服务器 Download PDFInfo
- Publication number
- CN110737548B CN110737548B CN201911030495.1A CN201911030495A CN110737548B CN 110737548 B CN110737548 B CN 110737548B CN 201911030495 A CN201911030495 A CN 201911030495A CN 110737548 B CN110737548 B CN 110737548B
- Authority
- CN
- China
- Prior art keywords
- service data
- server
- terminal
- sending
- service
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1487—Generic software techniques for error detection or fault masking using N-version programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种数据请求方法和服务器,属于通信技术领域。所述方法包括:接收终端发送的服务数据获取请求;将该服务数据获取请求分别发送给第一服务器和第二服务器,第一服务器用于提供原始版本的服务数据,第二服务器用于提供升级版本的服务数据;当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验;当第二服务数据的合法性校验失败时,将第一服务数据发送给终端。本申请可以当第二服务数据异常时向终端发送第一服务数据,从而可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种数据请求方法和服务器。
背景技术
随着通信技术的快速发展,互联网服务处于快速迭代升级的状态。互联网服务的升级可以包括修复原始版本中的漏洞或错误、对原始版本的功能进行优化或发布新功能等。为了降低在服务升级过程中可能会出现的新旧版本兼容、用户流失、***崩溃等风险,一般在服务升级时采用灰度发布方法。
灰度发布方法中,一部分用户继续使用服务的原始版本,而另一部分用户使用服务的升级版本,如果该另一部分用户对升级版本没有反对意见,则可以逐步扩大升级版本的使用范围,直至最终将所有用户都迁移到升级版本。具体地,将一部分终端发送的服务数据获取请求分配给原始版本服务器,由原始版本服务器返回原始服务数据;将另一部分终端发送的服务数据获取请求分配给升级版本服务器,由升级版本服务器返回升级服务数据。
然而,升级版本的稳定性往往不可预知,升级版本在实际运行过程中可能会出现各种各样的问题,如超时无响应、返回错误数据等,从而会导致服务数据获取请求被分配到升级版本服务器的终端无法正常获取到服务数据,影响终端对服务的正常使用。
发明内容
本申请提供了一种数据请求方法和服务器,可以解决相关技术中终端无法正常使用服务的问题。所述技术方案如下:
一方面,提供了一种数据请求方法,所述方法包括:
接收终端发送的服务数据获取请求;
将所述服务数据获取请求分别发送给第一服务器和第二服务器,所述第一服务器用于提供原始版本的服务数据,所述第二服务器用于提供升级版本的服务数据;
当接收到所述第一服务器返回的第一服务数据和所述第二服务器返回的第二服务数据时,对所述第二服务数据的合法性进行校验;
当所述第二服务数据的合法性校验失败时,将所述第一服务数据发送给所述终端。
一方面,提供了一种服务器,所述服务器包括:
接收模块,用于接收终端发送的服务数据获取请求;
发送模块,用于将所述服务数据获取请求分别发送给第一服务器和第二服务器,所述第一服务器用于提供原始版本的服务数据,所述第二服务器用于提供升级版本的服务数据;
处理模块,用于当接收到所述第一服务器返回的第一服务数据和所述第二服务器返回的第二服务数据时,对所述第二服务数据的合法性进行校验;
所述发送模块,还用于当所述第二服务数据的合法性校验失败时,将所述第一服务数据发送给所述终端。
一方面,提供了一种计算机设备,其特征在于,所述计算机设备包括处理器、通信接口、存储器和通信总线,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的程序,以实现上述的数据请求方法的步骤。
一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据请求方法的步骤。
一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的数据请求方法的步骤。
本申请提供的技术方案至少可以带来以下有益效果:
接收终端发送的服务数据获取请求后,将该服务数据获取请求分别发送给第一服务器和第二服务器。之后,当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验。当第二服务数据的合法性校验失败时,表明第二服务数据异常,因而将第一服务数据发送给终端。如此,可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种数据请求方法的流程图;
图3是本申请实施例提供的另一种数据请求方法的流程示意图;
图4是本申请实施例提供的一种服务器的结构示意图;
图5是本申请实施例提供的另一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及的应用场景进行介绍。
本申请实施例提供的数据请求方法可以应用于服务升级时的灰度发布场景中。例如,在采用灰度发布方法对应用、***或产品等服务进行升级时,终端可以通过本申请实施例提供的数据请求方法来获取服务数据。当然,本申请实施例提供的数据请求方法也可以应用于其他灰度发布场景中,本申请实施例对此不作限定。
接下来对本申请实施例涉及的实施环境进行介绍。
图1是本申请实施例提供的一种实施环境的示意图。如图1所示,该实施环境可以包括多个终端101、代理服务器102、灰度控制服务器103、第一服务器104和第二服务器105。
其中,多个终端101中的每个终端101和代理服务器102可以通过有线网络或无线网络进行通信。代理服务器102和灰度控制服务器103可以通过有线网络或无线网络进行通信,代理服务器102和第一服务器104可以通过有线网络或无线网络进行通信。灰度控制服务器103和第一服务器104可以通过有线网络或无线网络进行通信,灰度控制服务器103和第二服务器105可以通过有线网络或无线网络进行通信。
多个终端101中的每个终端101可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(Personal Computer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、掌上电脑PPC(Pocket PC)、平板电脑、智能车机、智能电视、智能音箱等。代理服务器102、灰度控制服务器103、第一服务器104和第二服务器105均可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。
需要说明的是,代理服务器102具有反向代理和负载均衡的特性。其中,反向代理是指多个终端101中的每个终端101可以通过代理服务器102间接访问后端不同的服务器(如灰度控制服务器103、第一服务器104等)。负载均衡是指代理服务器102可以将多个终端101发来的服务数据获取请求平均分摊到后端的服务器上。
另外,灰度控制服务器103可以将代理服务器102发送的服务数据获取请求复制成两份,其中一份发送给第一服务器104,另一份发送给第二服务器105。并且灰度控制服务器103可以根据第一服务器104返回的响应和第二服务器105返回的响应向代理服务器102返回响应。本申请实施例中所说的响应是指服务数据。
再者,第一服务器103是服务的稳定代码所在的服务器,第一服务器103可以提供原始版本的服务数据。第二服务器104是服务的灰度代码所在的服务器,第二服务器104可以提供升级版本的服务数据。
这种情况下,多个终端101向代理服务器102发送服务数据获取请求,代理服务器102将这些服务数据获取请求平均分摊到灰度控制服务器103和第一服务器104中。之后,当灰度控制服务器103接收到代理服务器102发送的服务数据获取请求时,可以通过本申请实施例提供的数据请求方法来向代理服务器102返回服务数据。
接下来对本申请实施例提供的数据请求方法进行详细地解释说明。
图2是本申请实施例提供的一种数据请求方法的流程图。该方法可以应用于图1所示的灰度控制服务器103中。参见图2,该方法包括以下步骤:
步骤201:接收终端发送的服务数据获取请求。
需要说明的是,终端是正在使用服务的设备,如终端可以是电脑、手机等,本申请实施例对此不作限定。例如,用户可以在手机上使用应用软件、操作***等服务。
另外,服务数据是指终端正在使用的服务的相关数据,服务数据可以由服务器提供。例如,服务数据可以为应用软件的首页数据、操作***的功能数据等,本申请实施例对此不作限定。
再者,服务数据获取请求用于请求获取服务数据。实际应用中,终端可以直接向灰度控制服务器发送该服务数据获取请求;或者,终端可以将该服务数据获取请求先发送至代理服务器,再由代理服务器将该服务数据获取请求发送至灰度控制服务器。
进一步地,在步骤201之后,可以直接执行步骤202,或者,可以执行如下步骤(1)或步骤(2):
(1)判断升级版本异常次数是否小于异常次数阈值;当升级版本异常次数大于或等于异常次数阈值时,将该服务数据获取请求发送给第一服务器,当接收到第一服务器返回的第一服务数据时,将第一服务数据发送给终端;当升级版本异常次数小于异常次数阈值时,继续执行如下步骤202来将该服务数据获取请求分别发送给第一服务器和第二服务器。
需要说明的是,第一服务器是服务的稳定代码所在的服务器,用于提供原始版本的服务数据。第二服务器是服务的灰度代码所在的服务器,用于提供升级版本的服务数据。
另外,升级版本异常次数是升级版本的服务数据此前发生异常的次数。
再者,异常次数阈值可以预先进行设置,且异常次数阈值可以设置的较大,如异常次数阈值可以为1000、2000等。
这种情况下,当升级版本异常次数大于或等于异常次数阈值时,表明升级版本的服务数据此前发生异常的次数较多,因而可以确定服务的升级版本异常,所以灰度控制服务器可以熔断升级版本,即仅将该服务数据获取请求发送给第一服务器,以从第一服务器中获取第一服务数据并发送给终端。此时灰度控制服务器无需将该服务数据获取请求发送给第二服务器,从而在节省发送资源的同时,可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
当升级版本异常次数小于异常次数阈值时,表明升级版本的服务数据此前发生异常的次数较少,因而可以确定服务的升级版本较为正常,所以灰度控制服务器可以继续执行如下步骤202来将该服务数据获取请求分别发送给第一服务器和第二服务器。
(2)将升级版本异常次数除以请求发送数量,得到升级版本异常比例;当升级版本异常比例大于或等于异常比例阈值时,将该服务数据获取请求发送给第一服务器,当接收到第一服务器返回的第一服务数据时,将第一服务数据发送给终端;当升级版本异常比例小于异常比例阈值时,继续执行如下步骤202来将该服务数据获取请求分别发送给第一服务器和第二服务器。
需要说明的是,请求发送数量是灰度控制服务器此前向第二服务器发送的服务数据获取请求的总数量。
另外,升级版本异常比例是升级版本的服务数据的异常占比,即是升级版本的服务数据此前发生异常的次数的相对大小。
再者,异常比例阈值可以预先进行设置,且异常比例阈值可以设置的较大,如异常比例阈值可以为70%、80%等。
这种情况下,当升级版本异常比例大于或等于异常比例阈值时,表明升级版本的服务数据的异常占比较大,因而可以确定服务的升级版本异常,所以灰度控制服务器可以熔断升级版本,即仅将该服务数据获取请求发送给第一服务器,以从第一服务器中获取第一服务数据并发送给终端。此时灰度控制服务器无需将该服务数据获取请求发送给第二服务器,从而在节省发送资源的同时,可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
当升级版本异常比例小于异常比例阈值时,表明升级版本的服务数据的异常占比较小,因而可以确定服务的升级版本较为正常,所以灰度控制服务器可以继续执行如下步骤202来将该服务数据获取请求分别发送给第一服务器和第二服务器。
值得注意的是,灰度控制服务器也可以结合步骤(1)和步骤(2)来确定是否对升级版本进行熔断,以提高熔断时的准确度。也即是,如果升级版本异常次数大于或等于异常次数阈值且升级版本异常比例大于或等于异常比例阈值,则将该服务数据获取请求发送给第一服务器,当接收到第一服务器返回的第一服务数据时,将第一服务数据发送给终端;否则,继续执行如下步骤202来将该服务数据获取请求分别发送给第一服务器和第二服务器。
步骤202:将该服务数据获取请求分别发送给第一服务器和第二服务器。
值得说明的是,灰度控制服务器具有请求复制的能力,即可以将终端或代理服务器发送的服务数据获取请求复制成两份,其中一份发送给第一服务器,另一份发送给第二服务器,以同时从第一服务器和第二服务器中获取服务数据。
进一步地,在步骤202之后,可以直接执行步骤203。或者,可以当在发送该服务数据获取请求后最近的预设时长内,接收到第一服务器返回的第一服务数据,未接收到第二服务器返回的第二服务数据时,将第一服务数据发送给终端;或者,当接收到第一服务器返回的第一服务数据,且接收到第二服务器返回的错误消息时,将第一服务数据发送给终端;或者,当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务器数据时,执行如下步骤203。
需要说明的是,预设时长可以预先进行设置,且预设时长可以设置的较短,如预设时长可以为1秒等。
另外,错误消息用于表示第二服务器对该服务数据获取请求响应错误,可能是因内部处理逻辑异常、数据采集异常等原因导致的。错误消息中可以携带错误代码,如可以携带200、404、500等错误代码。
由于服务的升级版本的稳定性是不可预知的,所以可能会发生第二服务器无法正常返回第二服务数据的情况,即可能会发生超时无响应或响应错误的情况。
当在发送该服务数据获取请求后最近的预设时长内,灰度控制服务器接收到第一服务器返回的第一服务数据,但未接收到第二服务器返回的第二服务数据时,表明第二服务器对该服务数据获取请求超时无响应,因而此时灰度控制服务器可以将接收到的第一服务数据发送给终端,以此保证终端可以正常获取到服务数据,保证终端对服务的正常使用。
或者,当灰度控制服务器接收到第一服务器返回的第一服务数据,但接收到第二服务器返回的错误消息时,表明第二服务器对该服务数据获取请求响应错误,因而此时灰度控制服务器可以将接收到的第一服务数据发送给终端,以此保证终端可以正常获取到服务数据,保证终端对服务的正常使用。
值得说明的是,当第二服务器对该服务数据获取请求超时无响应,或当第二服务器对该服务数据获取请求响应错误时,表明升级版本的服务数据发生异常。在此情况下,灰度控制服务器可以将第一服务数据发送给终端,从而使得即使在升级版本的服务数据发生异常的情况下,也可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
值得注意的是,当第二服务器对该服务数据获取请求超时无响应,或当第二服务器对该服务数据获取请求响应错误时,表明升级版本的服务数据发生异常,因而此时灰度控制服务器可以将升级版本异常次数加1,以更新该升级版本异常次数。如此,可以保证统计的升级版本异常次数的准确性,以便后续可以根据该升级版本异常次数准确确定是否熔断升级版本。
此外,当第二服务器对该服务数据获取请求超时无响应,或当第二服务器对该服务数据获取请求响应错误时,灰度控制服务器还可以生成升级异常提醒消息,并将该升级异常提醒消息发送给监控***,以对服务的升级版本的异常情况进行提醒。
需要说明的是,监控***是用于监控服务的升级版本的***。当监控***接收到灰度控制服务器发送的升级异常提醒消息时,监控***可以直接显示该升级异常提醒消息,以提醒技术人员服务的升级版本发生异常;或者,监控***可以根据该升级异常提醒消息对服务的升级版本的异常情况进行整理和分析,然后将分析结果展示给技术人员,以便于技术人员后续据此优化服务的灰度代码。当然,监控***也可以根据该升级异常提醒消息进行其他操作,本申请实施例对比不作限定。
步骤203:当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验。
需要说明的是,第一服务数据是第一服务器返回的响应,即是原始版本的服务数据。第二服务数据是第二服务器返回的响应,即是升级版本的服务数据。
另外,服务数据是否具有合法性一般是指服务数据是否符合预设的规则。由于服务的升级版本的稳定性往往不可预知,因此需要对第二服务数据的合法性进行校验。
其中,对第二服务数据的合法性进行校验的操作可以为:当第二服务数据的格式是预设格式时,确定第二服务数据的合法性校验成功;当第二服务数据的格式不是预设格式时,确定第二服务数据的合法性校验失败。
需要说明的是,预设格式可以预先进行设置。当第二服务数据的格式符合预设格式时,表明第二服务数据具有合法性,因而可以确定第二服务数据的合法性校验成功。当第二服务数据的格式不符合预设格式时,表明第二服务数据不具有合法性,因而可以确定第二服务数据的合法性校验失败。
值得注意的是,由于服务的原始版本往往比较稳定,因此第一服务数据通常是具有合法性的。因而当灰度控制服务器接收到第一服务器返回的第一服务数据时,可以不对第一服务数据的合法性进行校验。当然,为了保证返回给终端的服务数据是绝对正常的,也可以对第一服务数据的合法性进行校验。
需要说明的是,对第一服务数据的合法性进行校验的操作与上述对第二服务数据的合法性进行校验的操作类似,本申请实施例对此不再赘述。
进一步地,灰度控制服务器在得到第二服务数据的合法性校验结果后,可以将第二服务数据的合法性校验结果上报至监控***。同样,灰度控制服务器在得到第一服务数据的合法性校验结果后,也可以将第一服务数据的合法性校验结果上报至监控***。例如,灰度控制服务器可以将第一服务数据和第二服务数据的合法性校验结果写入日志,再将该日志发送至监控***,当然,灰度控制服务器也可以使用其它方式将第一服务数据和第二服务数据的合法性校验结果上报至监控***,本申请实施例对此不作限定。
此外,当监控***接收到灰度控制服务器发送的第一服务数据和第二服务数据的合法性校验结果时,监控***可以根据该合法性校验结果对服务的升级版本的异常情况进行整理和分析,然后将分析结果展示给技术人员,以便于技术人员后续据此优化服务的灰度代码。当然,监控***也可以根据该合法性校验结果进行其他操作,本申请实施例对比不作限定。
需要说明的是,当第二服务数据的合法性校验失败时,可以继续执行如下步骤204来向终端返回服务数据;当第二服务数据的合法性校验成功时,可以继续执行如下步骤205或执行如下步骤206-步骤208来向终端返回服务数据。
步骤204:当第二服务数据的合法性校验失败时,将第一服务数据发送给终端。
当第二服务数据的合法性校验失败时,表明第二服务数据异常,因而可以确定服务的升级版本异常,这种情况下,如果将不具有合法性的第二服务数据发送给终端,可能会导致终端无法正常使用服务,因此此时灰度控制服务器可以直接将第一服务数据发送给终端,从而可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
值得注意的是,当第二服务数据的合法性校验失败时,表明第二服务数据异常,因而此时灰度控制服务器可以将升级版本异常次数加1,以更新该升级版本异常次数。如此,可以保证统计的升级版本异常次数的准确性,以便后续可以根据该升级版本异常次数确定是否熔断升级版本。
步骤205:当第二服务数据的合法性校验成功时,将第二服务数据发送给终端。
当第二服务数据的合法性校验成功时,表明第二服务数据较为正常,终端根据第二服务数据应该可以正常使用服务,因而此时灰度控制服务器可以直接将第二服务数据发送给终端,如此,不仅保证了终端可以正常获取到服务数据,还提高了灰度控制服务器对服务数据获取请求的响应速度。
进一步地,在步骤205之后,可以直接结束操作。或者,可以对第二服务数据与第一服务数据的一致性进行比对,将第二服务数据与第一服务数据的一致性比对结果发送给监控***。
步骤206:当第二服务数据的合法性校验成功时,对第二服务数据与第一服务数据的一致性进行比对。
需要说明的是,两个服务数据是否具有一致性是指两个服务数据中相同参数的值是否相同,也即是,对第二服务数据与第一服务数据的一致性进行比对,是比对第二服务数据与第一服务数据中相同参数的值是否相同。
当第二服务数据与第一服务数据的一致性比对成功时,表明服务的升级版本与原始版本较为一致,此时服务的升级版本较为稳定;当第二服务数据与第一服务数据的一致性比对失败时,表明服务的升级版本与原始版本不太一致,此时服务的升级版本不太稳定。
其中,对第二服务数据与第一服务数据的一致性进行比对的操作可以为:去除第二服务数据中预设参数的值,得到目标数据;当目标数据与第一服务数据相同时,确定第二服务数据与第一服务数据的一致性比对成功;当目标数据与第一服务数据不同时,确定第二服务数据与第一服务数据的一致性比对失败。
需要说明的是,预设参数可以预先进行设置,预设参数可以是升级版本的服务数据相比于原始版本的服务数据所增加的参数,灰度服务控制器可以事先获知此预设参数。
例如,如果服务数据获取请求是请求获取应用软件的首页数据,应用软件的升级版本中的首页相比于应用软件的原始版本中的首页增加了一个图标或弹窗,则预设参数就是用于表示该图标或弹窗的参数,预设参数的值就是该图标或弹窗的相关数据,如预设参数的值可以是该图标或弹窗的位置、大小、点击后所能触发的跳转指令等数据。
值得注意的是,本申请实施例中,当第二服务数据的合法性校验成功时,可以直接对第二服务数据与第一服务数据的一致性进行比对。或者,当指定时长内同时有多个第二服务数据的合法性校验成功时,可以按照预设比例从该多个第二服务数据中选取至少一个第二服务数据来与其对应的第一服务数据进行一致性比对,而将该多个第二服务数据中除该至少一个第二服务数据之外的第二服务数据直接发送给终端。
需要说明的是,一个第二服务数据与一个第一服务数据对应是指这个第二服务数据和这个第一服务数据是根据相同的服务数据获取请求返回的。也即是,在将一个服务数据获取请求分别发送给第一服务器和第二服务器后,第一服务器在接收到这个服务数据获取请求后返回的第一服务数据和第二服务器在接收到这个服务数据获取请求后返回的第二服务数据对应。
另外,指定时长可以预先进行设置,如指定时长可以为30秒、1分钟等。例如,当前时间为2:00,当指定时长为1分钟时,灰度控制服务器就可以从2:00-2:01内合法性校验成功的多个第二服务数据中选取至少一个第二服务数据来与其对应的第一服务数据进行一致性比对,而将该多个第二服务数据中除该至少一个第二服务数据之外的第二服务数据直接发送给终端。
再者,预设比例可以预先进行设置,且预设比例可以设置得较小,如预设比例可以为1/10。例如,在2:00-2:01内合法性校验成功的多个第二服务数据的数量为600,灰度控制服务器就可以按照预设比例从600个第二服务数据中选取60个第二服务数据来与其对应的第一服务数据进行一致性比对,而将该600个第二服务数据中除该60个第二服务数据之外的540个第二服务数据直接发送给终端。
值得说明的是,当在指定时长内同时有多个第二服务数据的合法性校验成功时,如果对这多个第二服务数据都进行一致性比对,则会消耗大量时间,增加对终端返回响应的时延。因此本申请实施例中可以按照预设比例从该多个第二服务数据中仅选取至少一个第二服务数据进行一致性比对,以此提高灰度控制服务器对服务数据获取请求的响应速度。
进一步地,灰度控制服务器对第二服务数据与第一服务数据的一致性进行比对后,可以将一致性比对结果上报至监控***。例如,灰度控制服务器可以将第二服务数据与第一服务数据的一致性比对结果写入日志,再将该日志发送至监控***。当然,灰度控制服务器也可以使用其它方式将该一致性比对结果上报至监控***,本申请实施例对此不作限定。
此外,当监控***接收到灰度控制服务器发送的第二服务数据与第一服务数据的一致性比对结果时,监控***可以根据该一致性比对结果对服务的升级版本的异常情况进行整理和分析,然后将分析结果展示给技术人员,以便于技术人员后续据此优化服务的灰度代码。当然,监控***也可以根据该一致性比对结果进行其他操作,本申请实施例对比不作限定。
需要说明的是,当第二服务数据与第一服务数据的一致性比对成功时,可以继续执行如下步骤207;当第二服务数据与第一服务数据的一致性比对失败时,可以继续执行如下步骤208。
步骤207:当第二服务数据与第一服务数据的一致性比对成功时,将第二服务数据发送给终端。
当第二服务数据与第一服务数据的一致性比对成功时,可以确定第二服务数据与第一服务数据具有一致性,表明服务的升级版本与原始版本较为一致,因此可以将第二服务数据发送给终端,如此,可以提高向终端返回的服务数据的准确度,保证了终端对服务的正常使用。
步骤208:当第二服务数据与第一服务数据的一致性比对失败时,将第一服务数据发送给终端。
当第二服务数据与第一服务数据的一致性比对失败时,可以确定第二服务数据与第一服务数据不具有一致性,表明服务的升级版本与原始版本不太一致。这种情况下,如果将与第一服务数据不一致的第二服务数据发送给终端,可能会导致终端无法正常使用服务。因此此时灰度控制服务器可以直接将第一服务数据发送给终端,从而可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
值得注意的是,当第二服务数据与第一服务数据的一致性比对失败时,表明服务的升级版本与原始版本不太一致,因而此时灰度控制服务器可以将升级版本异常次数加1,以更新该升级版本异常次数。如此,可以保证统计的升级版本异常次数的准确性,以便后续可以根据该升级版本异常次数确定是否熔断升级版本。
为了便于理解,下面结合图3来对本申请实施例提供的数据请求方法进行举例说明。
参见图3,第一步,终端向灰度控制服务器发送服务数据获取请求。第二步,灰度控制服务器将该服务数据获取请求复制成两份,并分别发送给第二服务器和第一服务器。第三步,第二服务器向灰度控制服务器返回第二服务数据,灰度控制服务器对第二服务数据的合法性进行校验,并将合法性校验结果上报至监控***。第四步,第一服务器向灰度控制服务器返回第一服务数据,灰度控制服务器对第一服务数据的合法性进行校验,并将合法性校验结果上报至监控***。第五步,灰度控制服务器在第二服务数据的合法性校验成功后,对第二服务数据与第一服务数据的一致性进行比对,并将一致性比对结果上报至监控***。第六步,当第二服务数据与第一服务数据的一致性比对失败时,灰度控制服务器将第一服务数据发送给终端,结束操作。
在本申请实施例中,接收终端发送的服务数据获取请求后,将该服务数据获取请求分别发送给第一服务器和第二服务器。之后,当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验。当第二服务数据的合法性校验失败时,表明第二服务数据异常,因而将第一服务数据发送给终端。当第二服务数据的合法性校验成功时,对第二服务数据与第一服务数据的一致性进行比对,当第二服务数据与第一服务数据的一致性比对失败时,表明第二服务数据与第一服务数据不太一致,因而将第一服务数据发送给终端。如此,可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
图4是本申请实施例提供的一种服务器的结构示意图。参考图4,该服务器包括:接收模块401、发送模块402和处理模块403。
接收模块401,用于接收终端发送的服务数据获取请求;
发送模块402,用于将该服务数据获取请求分别发送给第一服务器和第二服务器,第一服务器用于提供原始版本的服务数据,第二服务器用于提供升级版本的服务数据;
处理模块403,用于当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验;
发送模块402,还用于当第二服务数据的合法性校验失败时,将第一服务数据发送给终端。
可选地,处理模块403还用于:
当第二服务数据的格式是预设格式时,确定第二服务数据的合法性校验成功;当第二服务数据的格式不是预设格式时,确定第二服务数据的合法性校验失败。
可选地,发送模块402还用于:
当在发送该服务数据获取请求后最近的预设时长内,接收到第一服务器返回的第一服务数据,未接收到第二服务器返回的第二服务数据时,将第一服务数据发送给终端;或者,当接收到第一服务器返回的第一服务数据,且接收到第二服务器返回的错误消息时,将第一服务数据发送给终端。
可选地,发送模块402还用于:
当第二服务数据的合法性校验成功时,将第二服务数据发送给终端;或者,当第二服务数据的合法性校验成功时,对第二服务数据与第一服务数据的一致性进行比对,当第二服务数据与第一服务数据的一致性比对成功时,将第二服务数据发送给终端,当第二服务数据与第一服务数据的一致性比对失败时,将第一服务数据发送给终端。
可选地,发送模块402还用于:
去除第二服务数据中预设参数的值,得到目标数据;当目标数据与第一服务数据相同时,确定第二服务数据与第一服务数据的一致性比对成功;当目标数据与第一服务数据不同时,确定第二服务数据与第一服务数据的一致性比对失败。
可选地,处理模块403还用于:
判断升级版本异常次数是否小于异常次数阈值;当升级版本异常次数小于异常次数阈值时,触发发送模块402将服务数据获取请求分别发送给第一服务器和第二服务器。
可选地,处理模块403还用于:
将升级版本异常次数加1,以更新升级版本异常次数。
可选地,发送模块402还用于:
当升级版本异常次数大于或等于异常次数阈值时,将服务数据获取请求发送给第一服务器;当接收到第一服务器返回的第一服务数据时,将第一服务数据发送给终端。
在本申请实施例中,接收终端发送的服务数据获取请求后,将该服务数据获取请求分别发送给第一服务器和第二服务器。之后,当接收到第一服务器返回的第一服务数据和第二服务器返回的第二服务数据时,对第二服务数据的合法性进行校验。当第二服务数据的合法性校验失败时,表明第二服务数据异常,因而将第一服务数据发送给终端。如此,可以保证终端正常获取到服务数据,保证终端对服务的正常使用。
需要说明的是:上述实施例提供的服务器在请求数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器与数据请求方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本申请实施例提供的一种服务器的结构示意图。参见图5,服务器500可以是后台服务器集群中的服务器。具体来讲:
服务器500包括CPU(Central Processing Unit,中央处理器)501、包括RAM(Random Access Memory,随机存取存储器)502和ROM(Read-Only Memory,只读存储器)503的***存储器504,以及连接***存储器504和中央处理单元501的***总线505。服务器500还包括帮助计算机内的各个器件之间传输信息的基本I/O(Input/Output,输入/输出)***506,和用于存储操作***513、应用程序514和其他程序模块515的大容量存储设备507。
基本输入/输出***506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中显示器508和输入设备509都通过连接到***总线505的输入/输出控制器510连接到中央处理单元501。基本输入/输出***506还可以包括输入/输出控制器510以用于接收和处理来自键盘、鼠标或电子触控笔等多个其他设备的输入。类似地,输入/输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备507通过连接到***总线505的大容量存储控制器(未示出)连接到中央处理单元501。大容量存储设备507及其相关联的计算机可读介质为服务器500提供非易失性存储。也就是说,大容量存储设备507可以包括诸如硬盘或CD-ROM(Compact DiscRead-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Electrically Erasable Programmable Read-Only Memory,可擦可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存或其他固态存储其技术,以及包括CD-ROM、DVD(Digital VersatileDisc,数字通用光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。***存储器504和大容量存储设备507可以统称为存储器。
根据本申请的各种实施例,服务器500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器500可以通过连接在***总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机***(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。该一个或者一个以上程序包含用于进行图2实施例提供的数据请求方法的指令。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中数据请求方法的步骤。例如,该计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的数据请求方法的步骤。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种数据请求方法,其特征在于,所述方法包括:
接收终端发送的服务数据获取请求;
判断升级版本异常次数是否小于异常次数阈值,所述升级版本异常次数是所述升级版本的服务数据此前发生异常的次数;
当所述升级版本异常次数大于或等于异常次数阈值时,将所述服务数据获取请求发送给第一服务器;当接收到所述第一服务器返回的第一服务数据时,将所述第一服务数据发送给所述终端;
当所述升级版本异常次数小于异常次数阈值时,将所述服务数据获取请求分别发送给第一服务器和第二服务器,所述第一服务器用于提供原始版本的服务数据,所述第二服务器用于提供升级版本的服务数据;
当接收到所述第一服务器返回的第一服务数据和所述第二服务器返回的第二服务数据时,对所述第二服务数据的合法性进行校验;
当所述第二服务数据的合法性校验失败时,将所述第一服务数据发送给所述终端,并将所述升级版本异常次数加1,以更新所述升级版本异常次数。
2.如权利要求1所述的方法,其特征在于,所述对所述第二服务数据的合法性进行校验,包括:
当所述第二服务数据的格式是预设格式时,确定所述第二服务数据的合法性校验成功;
当所述第二服务数据的格式不是预设格式时,确定所述第二服务数据的合法性校验失败。
3.如权利要求1所述的方法,其特征在于,所述将所述服务数据获取请求分别发送给第一服务器和第二服务器之后,还包括:
当在发送所述服务数据获取请求后最近的预设时长内,接收到所述第一服务器返回的第一服务数据,未接收到所述第二服务器返回的第二服务数据时,将所述第一服务数据发送给所述终端;或者
当接收到所述第一服务器返回的第一服务数据,且接收到所述第二服务器返回的错误消息时,将所述第一服务数据发送给所述终端。
4.如权利要求1所述的方法,其特征在于,所述对所述第二服务数据的合法性进行校验之后,还包括:
当所述第二服务数据的合法性校验成功时,将所述第二服务数据发送给所述终端;或者
当所述第二服务数据的合法性校验成功时,对所述第二服务数据与所述第一服务数据的一致性进行比对;当所述第二服务数据与所述第一服务数据的一致性比对成功时,将所述第二服务数据发送给所述终端;当所述第二服务数据与所述第一服务数据的一致性比对失败时,将所述第一服务数据发送给所述终端。
5.如权利要求4所述的方法,其特征在于,所述对所述第二服务数据与所述第一服务数据的一致性进行比对,包括:
去除所述第二服务数据中预设参数的值,得到目标数据;
当所述目标数据与所述第一服务数据相同时,确定所述第二服务数据与所述第一服务数据的一致性比对成功;
当所述目标数据与所述第一服务数据不同时,确定所述第二服务数据与所述第一服务数据的一致性比对失败。
6.一种服务器,其特征在于,所述服务器包括:
接收模块,用于接收终端发送的服务数据获取请求;
发送模块,用于将所述服务数据获取请求分别发送给第一服务器和第二服务器,所述第一服务器用于提供原始版本的服务数据,所述第二服务器用于提供升级版本的服务数据;
处理模块,用于当接收到所述第一服务器返回的第一服务数据和所述第二服务器返回的第二服务数据时,对所述第二服务数据的合法性进行校验;
所述发送模块,还用于当所述第二服务数据的合法性校验失败时,将所述第一服务数据发送给所述终端;
所述处理模块还用于:
判断升级版本异常次数是否小于异常次数阈值,所述升级版本异常次数是所述升级版本的服务数据此前发生异常的次数;当所述升级版本异常次数小于异常次数阈值时,触发所述发送模块将所述服务数据获取请求分别发送给第一服务器和第二服务器;
所述处理模块还用于:
将所述升级版本异常次数加1,以更新所述升级版本异常次数;
所述发送模块还用于:
当所述升级版本异常次数大于或等于异常次数阈值时,将所述服务数据获取请求发送给所述第一服务器;
当接收到所述第一服务器返回的第一服务数据时,将所述第一服务数据发送给所述终端。
7.如权利要求6所述的服务器,其特征在于,所述处理模块用于:
当所述第二服务数据的格式是预设格式时,确定所述第二服务数据的合法性校验成功;当所述第二服务数据的格式不是预设格式时,确定所述第二服务数据的合法性校验失败。
8.如权利要求6所述的服务器,其特征在于,所述发送模块还用于:
当在发送所述服务数据获取请求后最近的预设时长内,接收到所述第一服务器返回的第一服务数据,未接收到所述第二服务器返回的第二服务数据时,将所述第一服务数据发送给所述终端;或者,当接收到所述第一服务器返回的第一服务数据,且接收到所述第二服务器返回的错误消息时,将所述第一服务数据发送给所述终端;
所述发送模块还用于:
当所述第二服务数据的合法性校验成功时,将所述第二服务数据发送给所述终端;或者,当所述第二服务数据的合法性校验成功时,对所述第二服务数据与所述第一服务数据的一致性进行比对,当所述第二服务数据与所述第一服务数据的一致性比对成功时,将所述第二服务数据发送给所述终端,当所述第二服务数据与所述第一服务数据的一致性比对失败时,将所述第一服务数据发送给所述终端;
所述发送模块还用于:
去除所述第二服务数据中预设参数的值,得到目标数据;当所述目标数据与所述第一服务数据相同时,确定所述第二服务数据与所述第一服务数据的一致性比对成功;当所述目标数据与所述第一服务数据不同时,确定所述第二服务数据与所述第一服务数据的一致性比对失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911030495.1A CN110737548B (zh) | 2019-10-28 | 2019-10-28 | 数据请求方法和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911030495.1A CN110737548B (zh) | 2019-10-28 | 2019-10-28 | 数据请求方法和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737548A CN110737548A (zh) | 2020-01-31 |
CN110737548B true CN110737548B (zh) | 2022-06-10 |
Family
ID=69271693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911030495.1A Active CN110737548B (zh) | 2019-10-28 | 2019-10-28 | 数据请求方法和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110737548B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112636954B (zh) * | 2020-12-11 | 2023-10-31 | 车主邦(北京)科技有限公司 | 一种服务器升级方法及装置 |
CN113434187B (zh) * | 2021-06-18 | 2022-10-28 | 聚好看科技股份有限公司 | 服务器及白板版本兼容方法 |
CN114710550A (zh) * | 2022-03-18 | 2022-07-05 | 中国建设银行股份有限公司 | 请求响应方法、装置、设备及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036706A (zh) * | 2012-11-26 | 2013-04-10 | 青岛海信传媒网络技术有限公司 | 应用升级异常的本地处理方法 |
CN109391655A (zh) * | 2017-08-09 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 服务灰度发布方法、装置、***及存储介质 |
CN110138837A (zh) * | 2019-04-15 | 2019-08-16 | 平安科技(深圳)有限公司 | 请求处理方法、装置、计算机设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104901936B (zh) * | 2014-10-17 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 一种业务处理方法、装置、终端及服务器 |
CN106533812B (zh) * | 2016-12-30 | 2020-01-14 | 重庆腾帆科技有限公司 | 一种应用服务器 |
CN108574720B (zh) * | 2017-05-09 | 2021-07-20 | 北京金山云网络技术有限公司 | 一种服务上线方法及装置 |
CN109842640B (zh) * | 2017-11-24 | 2020-10-16 | 华为技术有限公司 | 切换服务器的方法、装置和通信*** |
-
2019
- 2019-10-28 CN CN201911030495.1A patent/CN110737548B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036706A (zh) * | 2012-11-26 | 2013-04-10 | 青岛海信传媒网络技术有限公司 | 应用升级异常的本地处理方法 |
CN109391655A (zh) * | 2017-08-09 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 服务灰度发布方法、装置、***及存储介质 |
CN110138837A (zh) * | 2019-04-15 | 2019-08-16 | 平安科技(深圳)有限公司 | 请求处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110737548A (zh) | 2020-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11016878B2 (en) | System and method for data collection and analysis of information relating to mobile applications | |
CN110737548B (zh) | 数据请求方法和服务器 | |
CN112684982B (zh) | 一种数据迁移方法、***、设备及计算机可读存储介质 | |
WO2014153311A1 (en) | Automatic version management | |
CN105468302A (zh) | 一种处理数据的方法、装置及*** | |
CN110688305B (zh) | 测试环境同步方法、装置、介质、电子设备 | |
US10432490B2 (en) | Monitoring single content page application transitions | |
CN108280024B (zh) | 流量分配策略测试方法、装置及电子设备 | |
CN112650689A (zh) | 测试方法、装置、电子设备及存储介质 | |
CN112598529A (zh) | 数据处理方法及装置、计算机可读存储介质、电子设备 | |
CN114968644A (zh) | ***软件转储方法、装置、电子设备及可读存储介质 | |
US11429537B2 (en) | Method, device, and computer program product for managing storage system | |
CN113867778A (zh) | 一种镜像文件的生成方法、装置、电子设备及存储介质 | |
CN110474787B (zh) | 一种节点故障检测方法和装置 | |
CN113609168A (zh) | 数据导出方法、装置、终端以及可读存储介质 | |
CN111857736A (zh) | 云计算产品的生成方法、装置、设备及存储介质 | |
CN111741046A (zh) | 数据上报方法、获取方法、装置、设备及介质 | |
CN109814911A (zh) | 用于管理脚本程序的方法、装置、计算机设备及存储介质 | |
CN111078718B (zh) | 频率控制方法、装置、设备以及计算机存储介质 | |
CN113626409B (zh) | 一种测试资料处理方法、装置、设备及存储介质 | |
CN118245140A (zh) | 接口调用示例生成方法和装置、电子设备和存储介质 | |
CN116360823A (zh) | 云手机中应用程序更新方法和装置 | |
CN114691466A (zh) | 一种模拟响应方法以及相关设备 | |
CN115914053A (zh) | 基于mqtt协议的接口测试方法及装置 | |
CN116149967A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |