本发明涉及信息,尤其涉及一种实时业务系统间的异步解耦削峰实现方法及系统。
背景技术:
1、目前行内各业务服务由众多系统联合实现,各系统依赖关系盘根错节,系统间所有请求交互都是通过esb同步阻塞调用,导致下游系统服务繁忙时,上游系统资源大量浪费,严重时导致上游系统所有服务均不可用。
2、以会员日营销活动场景为例,客户通过直销银行参与商城活动,请求链路中大致包括直销、客经、营销、核心等业务系统。直销通过esb调用客经,获取客户相关信息,通过esb调用营销,获取活动相关系统,通过esb调用核心,完成密码校验、活动支付等。
3、在传统串行同步方案中,直销的商城功能直接依赖客经、营销、核心,处理时长为3者之和;在传统并行同步方案中,直销的线程数为3者之和。当会员日客户积极参与,系统流量陡增时,由于后端系统资源不足,导致直销大量线程阻塞,最终引发直销服务不可用。
4、虽然通过esb增加直销对后端系统的接口限流控制,缓解了后端系统的压力,同时及时释放了直销的阻塞线程,可以在当前业务流量下,保证直销的服务稳定。但是此方案在一定程度上牺牲了客户体验,并且不能保证参与活动客户的先后顺序。
5、为此本发明提供了一种实时业务系统间的异步解耦削峰装置及其实现方法及系统,用以解决当后端系统资源紧张,服务效率达到瓶颈时,上游系统大量线程阻塞,导致其它所有业务服务均不可用等问题。
技术实现思路
1、针对现有技术中存在的技术问题,本发明提供一种实时业务系统间的异步解耦削峰实现方法及系统,用以解决当后端系统资源紧张,服务效率达到瓶颈时,上游系统大量线程阻塞,导致其它所有业务服务均不可用等问题。
2、根据本发明的第一方面,本发明提供一种实时业务系统间的异步解耦削峰实现方法,包括以下步骤:
3、步骤1、各业务系统启动时,新建一个独立的后台线程用于持续监听本系统的消息队列,当消息到达时,根据消息类型、功能id,分别启动对应的业务线程执行相应功能;
4、步骤2、上游系统接收到客户请求时,根据当前系统服务id、当前业务请求上下文,生成请求id,系统将当前会话与此请求id关联保存;
5、步骤3、上游系统的业务线程根据具体业务功能,将业务请求发送到消息中间件,通过中间件的ack机制保证消息的发送成功,此业务线程结束;
6、步骤4、下游系统后台线程从消息中间件消费到业务请求时,通过中间件的ack机制保证消息的接收成功,启动业务线程按照步骤a执行;
7、步骤5、上游系统的后台线程从消息中间件收到业务响应后,通过中间件的ack机制保证消息的接收成功,启动业务线程按照步骤b执行。
8、在上述技术方案的基础上,本发明还可以作出如下改进。
9、可选的,所述步骤a包括:根据请求id进行幂校验,防止重复消费,并根据请求的功能id完成具体业务功能逻辑后,将业务响应发送到原请求系统的消息队列,通过中间件的ack机制保证消息的发送成功,此业务线程结束。
10、可选的,所述步骤b包括:上游系统业务线程根据请求id,恢复原会话上下文,根据请求的功能id,完成具体业务功能逻辑后,将业务响应返回到客户端。
11、可选的,步骤1中,消息类型包括请求/响应,将各系统间的交互从业务逻辑中剥离,通过消息中间件实现实时业务系统间的异步解耦和后台业务系统的流量削峰。
12、可选的,步骤2中,限制的每个系统每个实例每个请求的id全局唯一性。
13、可选的,步骤3-5和步骤a中,通过ack机制和业务请求幂,确保消息发送成功,且仅消费一次。
14、根据本发明的第二方面,提供一种实时业务系统间的异步解耦削峰系统,包括:
15、监听线程模块:用于新建一个独立的线程用于持续监听消息中间件当前系统的消息队列,当消息到达时,根据消息类型、功能id,分别启动对应的业务线程执行相应功能;
16、客户请求接收模块:用于在接收到客户请求时,启动业务线程,根据请求功能,执行本系统功能逻辑,根据当前系统服务id、当前业务请求上下文,生成请求id,以及相应的系统间请求报文,并调用公共会话管理模块,此线程结束;
17、系统间业务请求接收模块:用于在当前业务线程中根据请求id进行幂等校验,防止重复消费;并根据请求的功能id完成具体业务功能逻辑,生成相应业务功能的响应报文;
18、系统间业务响应发送模块:用于在当前业务线程中将业务响应发送到原请求系统的消息队列,通过中间件的ack机制保证消息的发送成功,此业务线程结束;
19、客户响应发送模块:用于在当前业务线程收到业务响应后,调用公共会话管理模块,恢复原会话上下文,根据请求的功能id,完成具体业务功能逻辑后,将业务响应返回到客户端;
20、公共会话管理模块:用于关联请求id与调用模块的上下文信息,包括客户请求连接、会话基础数据;对于系统间请求调用,保存请求上下文,发送请求报文至消息中间件的下游系统消息队列,对于系统间响应接收,恢复原请求上下文。
21、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述一种实时业务系统间的异步解耦削峰实现方法的步骤。
22、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述一种实时业务系统间的异步解耦削峰实现方法的步骤。
23、本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述一种实时业务系统间的异步解耦削峰实现方法的步骤。
24、本发明的技术效果和优点:
25、本发明提供了一种实时业务系统间的异步解耦削峰实现方法及系统,通过本发明方法,不仅可以使上游系统的系统间交互完全异步并发,并且与下游系统降低耦合,同时通过消息中间件的队列深度,使下游系统可以根据自身处理效率动态伸缩,不会出现流量陡增导致的服务不可用,也能在闲时节约服务器资源,同时还能满足业务场景的顺序要求。
26、本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书中所指出的结构来实现和获得。
1.一种实时业务系统间的异步解耦削峰实现方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种实时业务系统间的异步解耦削峰实现方法,其特征在于,所述步骤a包括:根据请求id进行幂校验,防止重复消费,并根据请求的功能id完成具体业务功能逻辑后,将业务响应发送到原请求系统的消息队列,通过中间件的ack机制保证消息的发送成功,此业务线程结束。
3.根据权利要求1所述的一种实时业务系统间的异步解耦削峰实现方法,其特征在于,所述步骤b包括:上游系统业务线程根据请求id,恢复原会话上下文,根据请求的功能id,完成具体业务功能逻辑后,将业务响应返回到客户端。
4.根据权利要求1所述的一种实时业务系统间的异步解耦削峰实现方法,其特征在于,步骤1中,消息类型包括请求/响应,将各系统间的交互从业务逻辑中剥离,通过消息中间件实现实时业务系统间的异步解耦和后台业务系统的流量削峰。
5.根据权利要求1所述的一种实时业务系统间的异步解耦削峰实现方法,其特征在于,步骤2中,限制的每个系统每个实例每个请求的id全局唯一性。
6.根据权利要求2所述的一种实时业务系统间的异步解耦削峰实现方法,其特征在于,步骤3-5和步骤a中,通过ack机制和业务请求幂,确保消息发送成功,且仅消费一次。
7.一种实时业务系统间的异步解耦削峰系统,其特征在于,包括:
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述一种实时业务系统间的异步解耦削峰实现方法。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述一种实时业务系统间的异步解耦削峰实现方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述一种实时业务系统间的异步解耦削峰实现方法。