实现业务降级的方法及装置和电子设备制造方法及图纸

技术编号:18444706 阅读:2 留言:0更新日期:2018-07-14 10:17
本说明书实施例提供一种实现业务降级的方法及装置和电子设备,拦截器在业务程序的任意代码执行前,可以拦截该待执行的当前代码的执行;对于不涉及业务程序基本功能的非关键代码,可以基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常,在所述当前代码存在异常时,直接跳过所述当前代码执行后一代码,从而实现业务降级。

Method and device for realizing business degradation and electronic equipment

This specification embodiment provides a method and a device and electronic device to implement a service degradation. The interceptor can intercept the execution of the current code to be executed before any code of the business program is executed; for non critical code that does not involve the basic functions of the business program, the current code can be collected based on the history. The execution result of the current code determines whether there is an exception in the current code, and when the current code has an exception, the post code is skipped directly over the current code to achieve the service demotion.

【技术实现步骤摘要】
实现业务降级的方法及装置和电子设备
本说明书实施例涉及互联网
,尤其涉及一种实现业务降级的方法及装置和电子设备。
技术介绍
业务程序通常可以是由一系列具有先后执行顺序的代码构成的。在业务程序运行时,实质是按照代码之间的先后顺序依次执行,从而实现业务提供的功能或者服务。业务降级是指业务程序中某代码出现异常无法解决的情况下,跳过该代码执行后续代码的机制。例如,提供数据查询服务的业务,该业务执行过程中会将查询结果进行缓存,以减轻数据库的压力。但是,缓存服务的可靠性一般是难以保障的,也就是说缓存服务偶尔会出现服务不可用的情况,从而导致数据查询失败。为了避免由于某个功能出现异常而导致整体功能不可用的情况,通常可以引入业务降级机制来保证业务基本功能依然可以实现。现有的业务降级,会在某个代码出现异常时,捕获异常代码,然后可以尝试去容错,即反复执行该代码。现有业务降级的方式,由于进行去容错,会导致过多的系统开销。需要提供一种更为节约开销地业务降级方案。
技术实现思路
本说明书实施例提供的一种实现业务降级的方法及装置和电子设备:根据本说明书实施例的第一方面,提供一种实现业务降级的方法,所述方法包括:拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能;在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常;在所述当前代码存在异常时,跳过所述当前代码执行后一代码。根据本说明书实施例的第二方面,提供一种实现业务降级的装置,所述装置包括:拦截单元,拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别单元,识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能;判断单元,在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常;执行单元,在所述当前代码存在异常时,跳过所述当前代码执行后一代码。根据本说明书实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能;在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常;在所述当前代码存在异常时,跳过所述当前代码执行后一代码。本说明书实施例,提供了一个可以对各个业务程序进行业务降级的拦截器;利用所述拦截器可以提前拦截将要执行的代码,并对代码执行分析;如果发现这个代码存在可用性问题,就跳过该代码执行后一代码。一方面由于可以不真正执行代码就可以确定代码是否异常,从而使得业务降级不仅不会出现额外开销,相对于正常情况下还减少了开销;另一方面,由于无需进行去容错,也就不会出现响应延迟,真正做到了用户无感知下的业务降级。附图说明图1是本说明书一实施例提供的实现业务降级的方法的流程图;图2是本说明书一实施例提供的业务降级过程的示意图;图3是本说明书一实施例提供的实现业务降级的装置的模块示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。如前所述,业务程序通常可以是由一系列具有先后执行顺序的代码构成的。在业务程序运行时,实质是按照代码之间的先后顺序依次执行,从而实现业务提供的功能或者服务。业务降级是指业务程序中某代码出现异常无法解决的情况下,跳过该代码执行后续代码的机制。例如,提供数据查询服务的业务,该业务执行过程中会将查询结果进行缓存,以减轻数据库的压力。但是,缓存服务的可靠性一般是难以保障的,也就是说缓存服务偶尔会出现服务不可用的情况,从而导致数据查询失败。为了避免由于某个功能出现异常而导致整体功能不可用的情况,通常可以引入业务降级机制来保证业务基本功能依然可以实现。现有的业务降级,会在某个代码出现异常时,捕获异常代码,然后可以尝试去容错,即反复执行该代码。现有业务降级的方式,由于进行去容错,会导致过多的系统开销。另一方面,由于去容错需要反复执行代码,可能导致响应用户请求出现延迟,容易让用户产生对异常状况的感知,有悖于业务降级对用户无感知的目标。以下可以结合图1所示的例子介绍本说明书一种实现业务降级的方法的实施例,如图1所示,该方法可以包括以下步骤:步骤110:拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成。本说明书提供了一个用于拦截业务程序待执行代码的拦截器。所述拦截器是提供有一种可以在代码执行前后执行其它操作的机制。以java里的拦截器为例,Java拦截器可以动态拦截action调用的对象。开发者可以在java拦截器中定义一个action执行前后执行的其它代码,使得Java拦截器可以在action执行前拦截其执行,并执行所定义的其它代码。简单来说,拦截器可以在任意代码执行器,转而执行自定义代码,来实现其它功能。在本说明书来说,上述自定义代码实现其它功能即为后续步骤。步骤120:识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能。所述非关键代码可以是指一些对业务程序优化的代码,不执行非关键代码并不会影响业务程序的基本功能。依然以前述数据查询业务为例,数据查询程序需要实现的基本功能就是数据查询;而为了减轻数据库的压力,在数据查询的基础上还提供有缓存功能,实现该缓存功能的代码即为非关键代码,实现数据查询的代码即为关键代码。在实际应用中,执行业务程序之前,可以根据业务执行逻辑,人工或者机器自动对业务程序中实现不同功能的代码进行打标。具体地,可以对非关键代码进行标记。如此,拦截器可以识别当前代码是否存在表示非关键代码的标记,从而确定当前代码是否为非关键代码。由于关键代码本文档来自技高网...

【技术保护点】
1.一种实现业务降级的方法,所述方法包括:拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能;在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常;在所述当前代码存在异常时,跳过所述当前代码执行后一代码。

【技术特征摘要】
1.一种实现业务降级的方法,所述方法包括:拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别所述当前代码是否存在表示非关键代码的标记;其中,所述非关键代码不涉及业务程序的基本功能;在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常;在所述当前代码存在异常时,跳过所述当前代码执行后一代码。2.根据权利要求1所述的方法,所述方法还包括:在所述当前代码不存在异常时,执行所述当前代码;在执行完所述当前代码后,采集所述当前代码的执行结果。3.根据权利要求2所述的方法,所述在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常,具体包括:在所述当前代码为非关键代码时,获取历史采集到的所述当前代码的执行结果;判断所述执行结果中执行失败的比例是否达到阈值;在所述执行结果中执行失败的比例达到阈值时,确定所述当前代码存在异常。4.根据权利要求2所述的方法,所述在所述当前代码为非关键代码时,基于历史采集到的所述当前代码的执行结果判断所述当前代码是否存在异常,具体包括:在所述当前代码为非关键代码时,获取历史采集到的所述当前代码的执行结果;根据每个执行结果的时间戳,将所述执行结果划分若干时间段;在所述时间段内的执行结果均为执行失败时,将所述时间段标记为不可用;在连续N个时间段均标记为不可用时,确定所述当前代码存在可用性问题。5.根据权利要求4所述的方法,所述N,根据如下方式确定:将所划分的时间段的数量乘以预设比例,得到N;所述预设比例的范围为(0,100%];或者,将预设数值确定为N;所述预设数值小于等于所划分时间段的数量。6.根据权利要求1所述的方法,所述方法还包括:在所述当前代码存在异常时,标记所述当前代码异常,使得后续执行该代码前,当识别存在异常标记时,直接跳过该代码执行后一代码。7.根据权利要求6所述的方法,所述方法还包括:当获取到针对代码的重置指令后,删除所述代码的异常标记,删除历史采集到的该代码的执行结果;所述重置指令在排除代码异常时生成。8.一种实现业务降级的装置,所述装置包括:拦截单元,拦截器在业务程序的任意代码执行前,拦截该待执行的当前代码的执行;其中,所述业务程序由若干具有先后执行顺序的代码构成;识别单元,识别所述当前代码是否存在表示非关键代码的标记;其中,...

【专利技术属性】
技术研发人员:仲良骏
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1