一种业务处理方法、网关、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种业务处理方法、网关、电子设备及存储介质。
背景技术
业务系统是提供给基础人员使用的,一种对业务处理过程进行针对性支持的信息系统,能够为某项工作的完成、对相关生产和采购等业务环节,基于某些功能模块提供很好的信息处理作用。
目前,限流、灰度发布等通用功能都由业务系统自身实现,对于业务系统来说,负担很重,并且不同的业务系统代码都会有相同的逻辑功能,代码冗余。
另外,如果有大量不同的业务系统,研发人员需要在每个业务系统都要进行相应的代码开发,工作量巨大,且需要花费大量的人力成本和时间成本对这些功能进行维护。例如,一般这些功能需要定期升级,如果一个个业务系统进行升级,效率较低,将会耗费大量时间,通常几个月都无法完成。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种业务处理方法、网关、电子设备及存储介质。
第一方面,本申请实施例提供了一种业务处理方法,应用于网关,所述网关包括至少一个拦截器,所述方法包括:
当接收到第一业务请求时,确定所述第一业务请求对应的拦截器;
调用所述拦截器对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求;
确定所述第二业务请求对应的业务处理器;
将所述第二业务请求发送到所述业务处理器。
可选的,所述确定所述第一业务请求对应的拦截器,包括:
当确定所述第一业务请求符合预设条件时,确定所述预设条件对应的拦截器以及所述第一业务请求对应的业务接口;
根据所述业务接口确定所述拦截器对应的属性信息;
根据所述属性信息重载所述拦截器。
可选的,所述符合预设条件包括以下至少一项:
所述第一业务请求的数量大于或等于第一预设阈值;
存在相同请求参数的所述第一业务请求的数量大于或等于第二预设阈值;
接收到所述第一业务请求的时间属于预设时间范围;
所述第一业务请求中包括预设标识。
可选的,当所述拦截器为并发拦截器时,所述调用所述拦截器对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求,包括:
调用所述并发拦截器;
当所述并发拦截器启用时,获取所述并发拦截器的第一属性信息,所述第一属性信息包括并发维度;
获取所述并发维度对应的所述第一业务请求的请求参数;
对相同请求参数的所述第一业务请求进行拦截处理,得到第二业务请求。
可选的,所述并发维度包括以下至少一项维度:用户标识、业务标识及时间信息。
可选的,当所述拦截器为队列拦截器时,所述调用所述拦截器对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求,包括:
调用所述队列拦截器;
当所述队列拦截器启用时,获取所述队列拦截器的第二属性信息,所述第二属性信息包括第一预设周期事务数阈值;
当接收到的所述第一业务请求的数量超过所述第一预设周期事务数阈值时,将超过所述第一预设周期事务数阈值的所述第一业务请求进行队列缓存,得到队列缓存中的第二业务请求;
所述将所述第二业务请求发送到所述业务处理器,包括:
将所述第二业务请求按照所述队列顺序依次发送到所述业务处理器。
可选的,当所述拦截器为限流拦截器时,所述调用所述拦截器对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求,包括:
调用所述限流拦截器;
当所述限流拦截器启用时,获取所述限流拦截器的第三属性信息,所述第三属性信息包括第二预设周期事务数阈值;
当接收到的所述第一业务请求的数量超过所述第二预设周期事务数阈值时,将超过所述第二预设周期事务数阈值的所述第一业务请求进行拦截。
可选的,当所述拦截器为分流拦截器时,所述调用所述拦截器对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求,包括:
获取所述第一业务请求对应的分流标识;
根据相同所述分流标识的第一业务请求得到所述第二业务请求。
第二方面,本申请实施例提供了一种网关,所述网关包括至少一个拦截器,所述网关还包括:
第一确定模块,用于当接收到第一业务请求时,确定所述第一业务请求对应的拦截器;
调用模块,用于调用所述第一业务请求对应的拦截器;
所述拦截器,用于对所述第一业务请求进行拦截处理,得到拦截处理后的第二业务请求;
第二确定模块,用于确定所述第二业务请求对应的业务处理器;
发送模块,用于将所述第二业务请求发送到所述业务处理器。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
网关中设有拦截器,对不同的业务请求进行相应的拦截处理,并将拦截处理后的业务请求发送到业务系统。这样,业务系统仅需执行业务相关的功能即可,由网关统一处理与业务逻辑无关的功能,大大降低了业务系统的负担。另外,将之前在业务系统中实现的通用功能转移到网关中同一实现,降低了业务系统的代码冗余,实现业务逻辑瘦身;同时也节约业务系统维护的人力成本和时间,降低了业务系统的维护成本。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种业务处理方法的流程图;
图2为本申请另一实施例提供的一种业务处理方法的流程图;
图3为本申请另一实施例提供的一种业务处理方法的流程图;
图4为本申请另一实施例提供的一种业务处理方法的流程图;
图5为本申请另一实施例提供的一种业务处理方法的流程图;
图6为本申请实施例提供的一种网关的框图;
图7为本申请实施例提供的一种业务处理系统的框图;
图8为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例将业务系统自身实现的一些通用功能集成到统一的网关实现。该网关连接调用方和业务系统对应的业务处理器。其中,每个网关可以对应多个业务处理器。
本申请实施例应用于网关,该网关包括但不限于以下至少一种拦截器:并发拦截器、队列拦截器、限流拦截器、分流拦截器等等。根据功能需要,可以在该网关中扩展相应的拦截器。通过这些拦截器,实现由各个业务系统实现的并发控制、限流、分流等通用功能。
下面首先对本发明实施例所提供的一种业务处理方法进行介绍。
图1为本申请实施例提供的一种业务处理方法的流程图。如图1所示,该方法包括以下步骤:
步骤S11,当接收到第一业务请求时,确定第一业务请求对应的拦截器。
其中,对于不同的业务请求及不同的业务系统,所需拦截器也不同。例如,各个业务系统处理能力存在差别,对于处理能力相对较低的业务系统,当网关接收到超过业务系统处理能力的业务请求时,需要对其进行拦截,而对于处理能力较强的业务系统,即便网关接收到较多的业务请求时,可以仅将超过业务系统处理能力的业务请求放入队列,按队列顺序处理。又例如,有的业务系统需要进行灰度分流验证,网关对于该业务系统的业务请求,需要进行分流处理。
因此,在接收到业务请求后,网关首先要确定该业务请求对应的拦截器。
步骤S12,调用拦截器对第一业务请求进行拦截处理,得到拦截处理后的第二业务请求。
网关调用业务请求对应的拦截器对该业务请求进行相应的拦截处理。例如,调用并发拦截器对具有至少一项相同参数的多个第一业务请求进行拦截,仅保留其中一个第一业务请求作为第二业务请求,而删除掉其他业务具有相同参数的第一业务请求。又例如,调用限流拦截器,将超过每秒事务数(TransactionsPerSecond,以下简称TPS)阈值的业务请求进行拦截。
步骤S13,确定第二业务请求对应的业务处理器。
对于拦截处理后得到的第二业务请求,网关确定其对应的业务处理器,也即业务系统。
步骤S14,将第二业务请求发送到业务处理器。
网关会将不同的第二业务请求分别发送到其相应的业务处理器,由业务处理器根据第二业务请求进行相应的处理。但此时,业务处理器仅需执行业务相关的功能即可,大大降低了业务系统的负担。
本实施例中,网关中设有拦截器,对不同的业务请求进行相应的拦截处理,并将拦截处理后的业务请求发送到业务系统。这样,业务系统仅需执行业务相关的功能即可,由网关统一处理与业务逻辑无关的功能,大大降低了业务系统的负担。另外,将之前在业务系统中实现的通用功能转移到网关中统一实现,降低了业务系统的代码冗余,实现业务逻辑瘦身;同时也节约业务系统维护的人力成本和时间,降低了业务系统的维护成本。
图2为本申请另一实施例提供的一种业务处理方法的流程图。如图2所示,步骤S11中,确定第一业务请求对应的拦截器包括以下步骤:
步骤S21,当确定第一业务请求符合预设条件时,确定预设条件对应的拦截器以及第一业务请求对应的业务接口。
可选的,符合预设条件包括以下至少一项:
(1)第一业务请求的数量大于或等于第一预设阈值。
例如,在秒杀、促销等活动期间,业务请求的数量超过某个业务系统的处理能力,则可以对业务请求进行限流或队列拦截处理。
(2)存在相同请求参数的第一业务请求的数量大于或等于第二预设阈值。
例如,对于同一订单的多次业务请求,当调用方出现操作异常,对于同一订单发送了3次以上的业务请求,则网关侧可以对这些业务请求进行并发拦截。
(3)接收到第一业务请求的时间属于预设时间范围。
例如,业务系统进行更新等维护的时间,如夜间0:00~4:00等,可以开启对于业务请求的限流拦截器,避免业务系统处理大量业务请求而影响对业务系统的维护。
(4)第一业务请求中包括预设标识。
例如,第一业务请求中包括分流标识,当网关识别到业务请求中包括分流标识时,对该业务请求进行分流拦截处理。
在一个可选实施例中,当第一业务请求符合多项预设条件时,则分别调用每项预设条件对应的拦截器进行拦截处理。例如,当第一业务请求同时满足上述(2)和(4)条件时,可以调用并发拦截器及分流拦截器进行处理。
在另一可选实施例中,可以预先设定各个预设条件的优先级,例如,可以优先确定第一业务请求是否符合上述(1)或(3)条件,即当业务系统接收到大量的第一业务请求时,为避免对业务系统的冲击,优先确定是否对大量的第一业务请求进行限流或队列处理。
在另一个可选实施例中,可以预先设定拦截器的优先级,即当第一业务请求满足多个预设条件时,虽然调用多个拦截器进行处理,但按照拦截器的优先级顺序依次进行处理。例如,当第一业务请求同时满足上述4个条件时,调用限流拦截器、队列拦截器、并发拦截器和分流拦截器,则按照限流拦截器—队列拦截器—并发拦截器—分流拦截器的顺序依次进行拦截处理。
步骤S22,根据业务接口确定拦截器对应的属性信息。
不同业务系统的业务接口对应的拦截器属性可能不同,例如,业务接口A对应的限流拦截器TPS为3000,业务接口B对应的并发拦截器属性中并发维度为业务标识,如订单维度。
另外,拦截器还可设置启用/关闭属性。对应不同的业务接口,可设定是否启用该拦截器。
或者,拦截器还可设有默认属性。对于没有特殊要求的业务接口,可使用拦截器的默认属性。
可选的,在网关中,可以预先存储不同业务接口的标识及其对应拦截器属性设置信息。当接收到第一业务请求后,根据第一业务请求对应的业务接口标识查询其对应的拦截器属性信息。
步骤S23,根据属性信息重载拦截器。
本实施例中,不同的业务请求对应于不同业务接口,而不同业务接口对于拦截器的属性要求可能不同,因此,当网关需要处理不同的业务请求时,可以根据业务接口要求重载(overload)拦截器属性,从而使得网关内同一拦截器可以根据不同业务接口的需求对业务请求进行拦截处理。
其中,重载是指预先定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,虚拟机就会根据不同的参数样式,来选择合适的方法执行。本实施例中,根据业务接口要求重载拦截器属性,即根据业务接口所要求的参数确定拦截器的属性。
下面对网关中几种拦截器的拦截处理过程进行详细描述。
(一)并发拦截器
当网关接收到相同请求参数的第一业务请求的数量大于或等于第二预设阈值时,确定该第一业务请求对应的拦截器为并发拦截器。例如,当网关接收到同一订单的多次第一业务请求时,需要调用并发拦截器对这些第一业务请求进行处理。
图3为本申请另一实施例提供的一种业务处理方法的流程图。如图3所示,上述步骤S12,并发拦截器对第一业务请求的拦截处理包括以下步骤:
步骤S31,调用并发拦截器;
步骤S32,当并发拦截器启用时,获取并发拦截器的第一属性信息,第一属性信息包括并发维度;
步骤S33,获取并发维度对应的第一业务请求的请求参数;
步骤S34,对相同请求参数的第一业务请求进行拦截处理,得到第二业务请求。
本实施例中,并发拦截器有两个属性:一个是启用/关闭属性,即用于控制是否启用该并发拦截器,可以默认为开启;另一个是并发维度,即判断出现并发请求的请求参数。如同一业务的多次第一业务请求可以被确定为并发请求,则此时的并发维度为订单号(业务标识);又例如,同一用户的多次第一业务请求也可被确定为并发请求,此时并发维度为用户标识;或者,同一时间点的多个第一业务请求也可被确定为并发请求,此时并发维度为时间信息。
可选的,并发维度包括以下至少一项维度:用户标识、业务标识及时间信息。
可选的,并发维度可以同时包括用户标识和业务标识,例如,同一用户对同一业务的多次业务请求可以被确定为并发请求,如同一订单的多次请求。
具体的,并发拦截器可以通过底层Redis并发锁或zookeeper并发锁实现。
在步骤S34中,对于出现并发的多个第一业务请求进行拦截,可以根据预设的规则拦截掉其中的部分请求。例如,对于同一订单的多次第一业务请求,仅保留其中的一个。
(二)队列拦截器
当网关接收到业务请求的数量较多时,如第一业务请求的数量超过预设阈值,则可确定该第一业务请求对应的拦截器为队列拦截器。
图4为本申请另一实施例提供的一种业务处理方法的流程图。如图4所示,上述步骤S12,队列拦截器对业务请求的拦截处理包括以下步骤:
步骤S41,调用队列拦截器。
步骤S42,当队列拦截器启用时,获取队列拦截器的第二属性信息,第二属性信息包括第一预设周期事务数阈值。
其中,该第一预设周期事务数阈值为在预设周期内事务数的上限值。预设周期可以根据需要设定,如1秒,即第一预设周期事务数阈值为第一每秒事务数阈值。
步骤S43,当接收到的第一业务请求的数量超过第一预设周期事务数阈值时,将超过第一预设周期事务数阈值的第一业务请求进行队列缓存,得到队列缓存中的第二业务请求。
步骤S14包括:将第二业务请求按照队列顺序依次发送到业务处理器。
其中,队列拦截器有两个属性:一个是启用/关闭属性,即用于控制是否启用该队列拦截器,可以默认为开启;另一个是第一预设周期事务数阈值,如TPS(每秒事务数阈值),可根据业务接口的业务流量设定拦截器的TPS。
队列拦截器基于Redis的分布式计算做累加,若当前业务请求的计数超过设定的TPS,则当前业务请求将被放入队列中,网关会根据队列顺序依次将队列中的业务请求发送到业务处理器。
由此可见,队列拦截器可以实现对业务接口的保护,避免过多业务请求涌入业务接口导致接口堵塞,影响业务处理器的处理。
(三)限流拦截器(也称削峰拦截器)
当网关接收到业务请求的数量较多时,如第一业务请求的数量超过预设阈值,则可确定该业务请求对应的拦截器为限流拦截器。
图5为本申请另一实施例提供的一种业务处理方法的流程图。如图5所示,上述步骤S12,限流拦截器对业务请求的拦截处理包括以下步骤:
步骤S51,调用限流拦截器;
步骤S52,当限流拦截器启用时,获取限流拦截器的第三属性信息,第三属性信息包括第二预设周期事务数阈值;
步骤S53,当接收到的第一业务请求的数量超过第二预设周期事务数阈值时,将超过第二预设周期事务数阈值的第一业务请求进行拦截。
其中,限流拦截器有两个属性:一个是启用/关闭属性,即用于控制是否启用该限流拦截器,可以默认为开启;另一个是第二预设周期事务数阈值,如TPS,可根据业务接口的业务流量设定拦截器的TPS。限流拦截器的TPS可设置与队列拦截器的TPS相同或不同。
由此可见,限流拦截器也可以实现对业务接口的保护,避免过多业务请求涌入业务接口导致接口堵塞,影响业务处理器的处理。
(四)分流拦截器
当业务系统需要进行灰度发布或A/B test时,可以使用分流拦截器对业务请求进行分流。
上述步骤S12,分流拦截器对业务请求的拦截处理包括以下步骤:
获取第一业务请求对应的分流标识;
根据相同分流标识的第一业务请求得到第二业务请求。
在步骤S13中,根据分流标识确定第二业务请求对应的业务处理器。
可选的,分流标识可以包括以下至少一项:业务接口标识、业务标识、用户标识等等。网关根据分流标识,选择对应的业务处理器。
本实施例中,通过网关中的分流拦截器,可以实现业务系统的灰度发布或A/Btest。
本实施例中,由网关集中对业务请求进行并发、队列、限流、分流等拦截处理,减少代码开发的工作量,降低对业务系统的维护成本,提高对于业务系统的维护效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。
图6为本申请实施例提供的一种网关的框图,该网关可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6所示,该网关包括至少一个拦截器63,该网关还包括:
第一确定模块61,用于当接收到第一业务请求时,确定第一业务请求对应的拦截器;
调用模块62,用于调用第一业务请求对应的拦截器;
拦截器63,用于对第一业务请求进行拦截处理,得到拦截处理后的第二业务请求;
第二确定模块64,用于确定第二业务请求对应的业务处理器;
发送模块65,用于将第二业务请求发送到业务处理器。
可选的,网关中可以包括多种拦截器,每种拦截器的个数可以为多个。调用模块可以同时调用多种拦截器,或调用同一种的多个拦截器。例如,调用3个限流拦截器对业务请求进行并行的限流处理。
图7为本申请实施例提供的一种业务处理系统的框图,如图7所示,该业务处理系统包括:网关71及多个业务处理器72a、72b……,网关71包括至少一个拦截器。
网关71,用于当接收到第一业务请求时,确定第一业务请求对应的拦截器;调用拦截器对第一业务请求进行拦截处理,得到拦截处理后的第二业务请求;确定第二业务请求对应的业务处理器;将第二业务请求发送到业务处理器。
业务处理器72a、72b……,用于对第二业务请求进行处理。
可选的,该业务处理系统中也可包括多个网关,每个网关均对应所有的业务处理器,或者,不同的网关对应不同的业务处理器。
本申请实施例还提供一种电子设备,如图8所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以下上述方法实施例的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(PeripheralComponentInterconnect,P C I)总线或扩展工业标准结构(Extended IndustryStandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下上述方法实施例的步骤。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。