掌桥专利:专业的专利平台
掌桥专利
首页

一种异步线程处理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 18:37:28


一种异步线程处理方法、装置、电子设备及存储介质

技术领域

本申请涉及后端技术领域,具体而言,涉及一种异步线程处理方法、装置、电子设备及计算机存储介质。

背景技术

随着云原生的快速发展,目前银行内部采用传统的SOA架构模式正逐步转型到微服务架构模式,但是微服务方式调用关系基本都是同步方式,但也可以采用应用内异步线程或者MQ解耦方式进行。

但是,若采用应用内异步线程的方式处理,对应用本身耦合深入无法做到高内聚、低耦合。通过MQ解耦应用需要同步知晓下游接入的渠道,同步MQ也会存在消息丢失的应用场景出现,导致消息无法到达下游渠道。还有可能如果渠道业务消息处理失败则无法知晓,而且这样处理也是针对具体的应用场景,无法抽离出公共业务组件来实现事件驱动型架构模式。

发明内容

本申请实施例的目的在于提供一种异步线程处理方法、装置、电子设备及存储介质,可以在应用内进行异步线程处理的同时实现高内聚、低耦合,避免出现消息丢失,使得消息可以顺利的到达下游渠道。

第一方面,本申请实施例提供了一种异步线程处理方法,所述方法包括:

获取异步线程对应的事件消息;

对所述事件消息进行监听并转发,得到反馈消息;

根据所述反馈消息获得本地日志;

根据所述本地日志对所述反馈消息进行消息重投。

在上述实现过程中,通过对异步线程的事件消息进行监听、转发,使得到的反馈消息可以被合理的处理,并进行重投,避免反馈消息丢失,可以在应用内进行异步线程处理的同时实现高内聚、低耦合,使得事件消息可以顺利的到达下游渠道。

进一步地,所述对所述事件消息进行监听并转发,得到反馈消息的步骤,包括:

根据所述事件消息设置事件编号;

根据所述事件编号对所述事件消息进行监听并转发,得到所述反馈消息。

在上述实现过程中,根据事件编号对事件消息进行监听和转发,保证监听和转发对准确性,使得监听效率更高,缩短得到反馈效率的的事件,使得反馈消息可以迅速被传递。

进一步地,所述根据所述事件编号对所述事件消息进行监听并转发,得到所述反馈消息的步骤,包括:

获取包含所述事件编号的监听方;

通过所述监听方对所述事件消息进行监听并转发,得到所述反馈消息。

在上述实现过程中,通过包含事件编号的监听方对事件消息进行监听转发,提高了对事件消息对监听效率,确保反馈消息对准确性。

进一步地,所述根据所述反馈消息获得本地日志的步骤,包括:

判断对所述事件消息进行转发是否成功;

若否,获得所述本地日志。

在上述实现过程中,对事件消息是否转发成功进行判断,可以进一步地监听事件消息,确保事件消息对传递流程准确无误,避免事件消息无法被正常转发。

进一步地,所述获得所述本地日志的步骤,包括:

通过守护线程读取失败消息;

根据所述失败消息获得所述本地日志。

在上述实现过程中,通过守护线程读取失败消息,使得本地日志可以完整地记录失败消息,提高后续重投对效率,避免失败消息无法被获取到,缩短重投事件。

进一步地,在所述获取异步线程对应的事件消息的步骤之后,还包括:

对所述事件消息进行展示。

在上述实现过程中,对事件消息进行展示,使得事件消息更加清晰、明确,提高处理效率,缩短处理流程。

第二方面,本申请实施例还提供了一种异步线程处理装置,所述装置包括:

获取模块,用于获取异步线程对应的事件消息;

监听转发模块,用于对所述事件消息进行监听并转发,得到反馈消息;

数据获得模块,用于根据所述反馈消息获得本地日志;

重投模块,用于根据所述本地日志对所述反馈消息进行消息重投。

在上述实现过程中,通过对异步线程的事件消息进行监听、转发,使得到的反馈消息可以被合理的处理,并进行重投,避免反馈消息丢失,可以在应用内进行异步线程处理的同时实现高内聚、低耦合,使得事件消息可以顺利的到达下游渠道。

进一步地,所述监听转发模块还用于:

根据所述事件消息设置事件编号;

根据所述事件编号对所述事件消息进行监听并转发,得到所述反馈消息。

在上述实现过程中,根据事件编号对事件消息进行监听和转发,保证监听和转发对准确性,使得监听效率更高,缩短得到反馈效率的的事件,使得反馈消息可以迅速被传递。

第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。

第四方面,本申请实施例提供的一种计算机可读存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。

第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。

本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

并可依照说明书的内容予以实施,以下以本申请的较佳实施例并配合附图详细说明如后。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围值的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的异步线程处理方法的流程示意图;

图2为本申请实施例提供的异步线程处理装置的结构组成示意图;

图3为本申请实施例提供的另一种异步线程处理装置的结构组成示意图;

图4为本申请实施例提供的电子设备的结构组成示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面结合附图和实施例,对本申请的具体实施方式作进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围值。

实施例一

图1是本申请实施例提供的异步线程处理方法的流程示意图,如图1所示,该方法包括:

S1,获取异步线程对应的事件消息;

S2,对事件消息进行监听并转发,得到反馈消息;

S3,根据反馈消息获得本地日志;

S4,根据本地日志对反馈消息进行消息重投。

在上述实现过程中,通过对异步线程的事件消息进行监听、转发,使得到的反馈消息可以被合理的处理,并进行重投,避免反馈消息丢失,可以在应用内进行异步线程处理的同时实现高内聚、低耦合,使得事件消息可以顺利的到达下游渠道。

本申请实施例可以通过银行内部基于Rocketmq保证消息不丢失的方式进行服务之间进行异步解耦来实现电子设计自动化(Electronic DesignAutomation,EDA)架构。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

EDA工具软件可大致可分为芯片设计辅助软件、可编程芯片辅助设计软件、系统设计辅助软件等三类。

目前,具有广泛影响的EDA软件是系统设计软件辅助类和可编程芯片辅助设计软件:Protel、Altium Designer、PSPICE、multiSIM10(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,可输出多种网表文件与第三方软件接口。

可以应用于事件发布方、事件接收方提供软件开发工具包(SoftwareDevelopment Kit,SDK)接口,减少接入方的开发难度,并提供事件发布,回执、事件的查询,以及失败事件的重投等功能或服务。

软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。

软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK。可以简单的为某个程序设计语言提供应用程序接口应用程序接口(Application Program Interface,API)的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。一般的工具包括用于调试和其他用途的实用工具。SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

API其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令。在Windows中,系统API是以函数调用的方式提供的。同样是取得操作系统的版本号,在Windows中所要做的就是调用函数。

本申请实施例可以提供可靠性消息服务(支持顺序消息、条件消息),保证事件消息不丢失。并通过分布式架构解耦、实现EDA异步架构,最终实现一致性的分布式事务。

进一步地,S2包括:

根据事件消息设置事件编号;

根据事件编号对事件消息进行监听并转发,得到反馈消息。

在上述实现过程中,根据事件编号对事件消息进行监听和转发,保证监听和转发对准确性,使得监听效率更高,缩短得到反馈效率的的事件,使得反馈消息可以迅速被传递。

在事件消息中,设置事件编号,事件发布方通过发送某一个事件编号的事件消息,通过事件接收方去找到事件监听方有多少该事件编号,并进行事件消息的转发,事件监听方只需要绑定该事件编号就可以实现对事件的监听。

进一步地,根据事件编号对事件消息进行监听并转发,得到反馈消息的步骤,包括:

获取包含事件编号的监听方;

通过监听方对事件消息进行监听并转发,得到反馈消息。

在上述实现过程中,通过包含事件编号的监听方对事件消息进行监听转发,提高了对事件消息对监听效率,确保反馈消息对准确性。

进一步地,S3包括:

判断对事件消息进行转发是否成功;

若否,获得本地日志。

在上述实现过程中,对事件消息是否转发成功进行判断,可以进一步地监听事件消息,确保事件消息对传递流程准确无误,避免事件消息无法被正常转发。

进一步地,获得本地日志的步骤,包括:

通过守护线程读取失败消息;

根据失败消息获得本地日志。

在上述实现过程中,通过守护线程读取失败消息,使得本地日志可以完整地记录失败消息,提高后续重投对效率,避免失败消息无法被获取到,缩短重投事件。

本申请实施例可以解决事件发布方丢失消息的问题使得不丢失消息的能力的增强,同时实现了失败重投,但是只保证3秒内重投3次的能力,不能100%保证消息一定会发送到指定节点,采用发送失败消息写本地日志进行重投的方式来实现。原理是事件发布方发送事件消息到指定节点时收到失败消息,或者异常场景下,获得本地日志,并同步有一个守护线程会读取失败消息,进行重新投递保证消息送达到指定节点。

进一步地,获取异步线程对应的事件消息的步骤,包括:

对事件消息进行展示。

在上述实现过程中,对事件消息进行展示,使得事件消息更加清晰、明确,提高处理效率,缩短处理流程。

本申请实施例可以造事件中台的能力,将所有事件在事件市场进行展示出来,每个业务子系统只需要订阅自己感兴趣的事件,得到事件发布方的授权即可。同时该子系统也可以发布相应的事件到事件市场。

本申请实施例解决了以前面向服务的结构(Service-Oriented Architecture,SOA)臃肿的构建方式,SOA将应用程序的不同功能单元(服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。还可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。

SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。

但是,SOA的构建方式太过复杂、臃肿,无法解决分布式、异步事件。

本申请实施例采用EDA异步解耦,提升了系统的高可用性,同时接入方便,事件发布方不需要关注接入方,只需要把自己需要暴露的事件投递到事件市场即可。事件接入方只需要监听该事件进行绑定即可。

还可以实现全面自助化,提升了开发效率解决了系统之间分布式事务,采用事件服务通过最终一致性解决。

实施例二

为了执行上述实施例一对应的方法,以实现相应的功能和技术效果,下面提供一种异步线程处理装置,如图2所示,该装置包括:

获取模块1,用于获取异步线程对应的事件消息;

监听转发模块2,用于对事件消息进行监听并转发,得到反馈消息;

数据获得模块3,用于根据反馈消息获得本地日志;

重投模块4,用于根据本地日志对反馈消息进行消息重投。

在上述实现过程中,通过对异步线程的事件消息进行监听、转发,使得到的反馈消息可以被合理的处理,并进行重投,避免反馈消息丢失,可以在应用内进行异步线程处理的同时实现高内聚、低耦合,使得事件消息可以顺利的到达下游渠道。

进一步地,监听转发模块2还用于:

根据事件消息设置事件编号;

根据事件编号对事件消息进行监听并转发,得到反馈消息。

在上述实现过程中,根据事件编号对事件消息进行监听和转发,保证监听和转发对准确性,使得监听效率更高,缩短得到反馈效率的的事件,使得反馈消息可以迅速被传递。

进一步地,监听转发模块2还用于:

获取包含事件编号的监听方;

通过监听方对事件消息进行监听并转发,得到反馈消息。

在上述实现过程中,通过包含事件编号的监听方对事件消息进行监听转发,提高了对事件消息对监听效率,确保反馈消息对准确性。

进一步地,数据获得模块3还用于:

判断对事件消息进行转发是否成功;

若否,获得本地日志。

在上述实现过程中,对事件消息是否转发成功进行判断,可以进一步地监听事件消息,确保事件消息对传递流程准确无误,避免事件消息无法被正常转发。

进一步地,获取模块1还用于:

通过守护线程读取失败消息;

根据失败消息获得本地日志。

在上述实现过程中,通过守护线程读取失败消息,使得本地日志可以完整地记录失败消息,提高后续重投对效率,避免失败消息无法被获取到,缩短重投事件。

进一步地,如图3所示,该装置还包括展示模块5,用于:

对事件消息进行展示。

在上述实现过程中,对事件消息进行展示,使得事件消息更加清晰、明确,提高处理效率,缩短处理流程。

上述的异步线程处理装置可实施上述实施例一的方法。上述实施例一中的可选项也适用于本实施例,这里不再详述。

本申请实施例的其余内容可参照上述实施例一的内容,在本实施例中,不再进行赘述。

实施例三

本申请实施例提供一种电子设备,包括存储器及处理器,该存储器用于存储计算机程序,该处理器运行计算机程序以使电子设备执行实施例一的异步线程处理方法。

可选地,上述电子设备可以是服务器。

请参见图4,图4为本申请实施例提供的电子设备的结构组成示意图。该电子设备可以包括处理器41、通信接口42、存储器43和至少一个通信总线44。其中,通信总线44用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口42用于与其他节点设备进行信令或数据的通信。处理器41可以是一种集成电路芯片,具有信号的处理能力。

上述的处理器41可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器41也可以是任何常规的处理器等。

存储器43可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。存储器43中存储有计算机可读取指令,当计算机可读取指令由所述处理器41执行时,设备可以执行上述图1方法实施例涉及的各个步骤。

可选地,电子设备还可以包括存储控制器、输入输出单元。存储器43、存储控制器、处理器41、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线44实现电性连接。处理器41用于执行存储器43中存储的可执行模块,例如设备包括的软件功能模块或计算机程序。

输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。输入输出单元可以是,但不限于,鼠标和键盘等。

可以理解,图4所示的结构仅为示意,电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。

另外,本申请实施例还提供一种计算机可读存储介质,其存储有计算机程序,该计算机程序被处理器执行时实现实施例一的异步线程处理方法。

本申请实施例还提供一种计算机程序产品,该计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的装置来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围值,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围值之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围值并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围值内,可轻易想到变化或替换,都应涵盖在本申请的保护范围值之内。因此,本申请的保护范围值应所述以权利要求的保护范围值为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术分类

06120115631618