CN110825441B - 异步系统的实现方法、计算机设备和存储介质 - Google Patents

异步系统的实现方法、计算机设备和存储介质 Download PDF

Info

Publication number
CN110825441B
CN110825441B CN201910897237.7A CN201910897237A CN110825441B CN 110825441 B CN110825441 B CN 110825441B CN 201910897237 A CN201910897237 A CN 201910897237A CN 110825441 B CN110825441 B CN 110825441B
Authority
CN
China
Prior art keywords
asynchronous
thread
callback
node
processing
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
Application number
CN201910897237.7A
Other languages
English (en)
Other versions
CN110825441A (zh
Inventor
王耀民
许涛涛
汤士伟
张丽
潘宁
徐奎东
沈欢
杨秋芬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WONDERS INFORMATION CO Ltd
Original Assignee
WONDERS INFORMATION CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by WONDERS INFORMATION CO Ltd filed Critical WONDERS INFORMATION CO Ltd
Priority to CN201910897237.7A priority Critical patent/CN110825441B/zh
Publication of CN110825441A publication Critical patent/CN110825441A/zh
Application granted granted Critical
Publication of CN110825441B publication Critical patent/CN110825441B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

本发明提供了一种异步系统的实现方法、计算机设备和存储介质,所述方法包括:当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;执行所述异步非阻塞调用;当所述异步非阻塞调用执行完成时,释放当前线程,异步非阻塞方法异步回调时重新申请线程并恢复线程上下文进行回调处理。通过本发明提供的异步系统的实现方法、计算机设备和存储介质,能够提高工作流引擎的并发处理性能,特别地,当流程节点存在的外部调用耗时越长,并发处理的性能提升越明显。

Description

异步系统的实现方法、计算机设备和存储介质
技术领域
本发明涉及异步系统技术领域,尤指异步系统的实现方法、计算机设备和存储介质。
背景技术
目前,无论商业还是开源的工作流都是基于同步阻塞模式执行流程,也就是说每个流程实例的执行过程中都需要占用一个或多个线程,如图1所示,只有该流程节点实例执行结束才能释放该相关线程资源。
但是通常情况下,处理流程节点的操作都会存在一些外部调用等操作,虽然这些外部调用操作的主要计算过程由外部服务提供,但流程节点的操作实例线程会一直阻塞以等待服务计算结果,从而导致线程资源的利用率低下,系统的并发处理性能较差。
发明内容
本发明的目的是提供一种异步系统的实现方法、计算机设备和存储介质,以提高工作流引擎的并发处理性能。
本发明提供的技术方案如下:
第一方面,本发明提供一种异步系统的实现方法,包括步骤:
当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;
所述异步非阻塞被调用,释放当前线程;
重新申请回调处理时的线程,并恢复所述线程上下文进行回调处理。
进一步的,所述方法还包括:
当所述异步非阻塞调用收到响应时,从所述全局缓存列表中查找所述异步回调处理。
进一步的,所述方法还包括:
当查找到所述异步回调处理时,从工作流线程池中申请线程资源,并还原已保存的线程上下文,使用申请到的线程资源执行异步回调处理。
进一步的,所述方法还包括:
在所述异步回调处理结束前,判断是否存在可执行流程节点,若是,则流程引擎调用下节点逻辑,所述下节点为同步执行节点,回调时重新申请的线程继续执行下节点逻辑。
进一步地,所述方法还包括:
当所述下节点逻辑执行完成时,继续判断是否存在后续可执行节点,若否,则流程节点实例执行完成,释放所述流程节点实例相关的线程资源。
第二方面,本发明实施例还提供了一种用于实现异步系统的计算机设备,所述计算机设备包括:
一个或更多个处理器;
一个或更多个存储器;
一个或更多个模块,其被存在存储器中且能够由所述一个或更多个处理器中的至少一个处理器以执行第一方面异步系统实现方法的步骤。
第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如第一方面所述异步系统实现方法的步骤。
通过本发明提供的异步系统的实现方法和装置、计算机设备和存储介质,能够提高工作流引擎的并发处理性能,特别地,当流程节点存在的外部调用耗时越长,并发处理的性能提升越明显。因为并发处理的工作流引擎能够提供固定数量的线程处理多个流程节点,在流程节点的线程执行过程中,当发生异步非阻塞调用时,能够直接释放当前流程节点的线程资源,当本次异步非阻塞调用响应时,重新获取当前流程节点释放的线程上下文并继续处理该流程节点,从而线程资源的利用率得到大大增加,进而提高了工作流引擎并发处理性能。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对异步系统的实现方法、计算机设备和存储介质的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是现有技术中同步阻塞模式下的工作流实例的示意图;
图2是本发明实施例中一种异步系统实现方法的流程图;
图3是本发明实施例一种实现异步系统的计算机设备的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
本发明的一个实施例,如图2所示,本发明实施例提供一种异步系统的实现方法,包括步骤:
S1.当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;
S2.所述异步非阻塞被调用,释放当前线程;
S3.重新申请回调处理时的线程,并恢复所述线程上下文进行回调处理。
本发明该实施例中,对工作流引擎中流程节点的执行的改进采用基于状态机的工作流引擎改进,因为状态变化的相关逻辑不存在异步处理,需要进行异步非阻塞处理的逻辑大都存在于节点执行逻辑代码内,所以,在本发明实施例中,对工作流的改进点聚焦于节点执行异步非阻塞处理的后续处理。
由于流程节点执行完异步非阻塞逻辑后,当前线程会被立即释放,所以,在当前执行线程释放前,需要在全局缓存列表里注册该异步逻辑的回调方法、异步非阻塞调用之前的线程的上下文信息,当异步回调执行时申请到新的线程资源后执行回调方法,后续执行逻辑以此类推。
进一步的,本发明实施例中,所述方法还包括:
当所述异步非阻塞调用收到响应时,从所述全局缓存列表中查找所述异步回调处理。
异步非阻塞调用发生后,当收到响应时,将执行线程异步回调,所述回调处理依据之前缓存在全局缓存列表中的异步回调处理进行,使得当本次异步非阻塞调用响应时,重新获取当前流程节点释放的线程上下文并继续处理该流程节点,使得线程资源的利用率得到大大增加,进而提高了工作流引擎并发处理性能。
进一步的,本发明实施例中,所述方法还包括:
当查找到所述异步回调处理时,从工作流线程池中申请线程资源,并还原已保存的线程上下文,使用申请到的线程资源执行异步回调处理。
当查找到所述异步回调处理时,异步回调处理开始执行,这时,从工作流线程池中申请线程资源,并还原已保存的线程上下文,使用申请到的线程资源执行异步回调处理,使得线程资源的利用率得到大大增加,提高了系统的并发处理性能。
例如,在并发系统中,包含一客户端,一移动设备,一网络、网络服务器、数据库和客户端设备。客户端可以包括如下设备,用户通过这些设备在网络上向服务器发起网络I/O访问请求,客户端可以包括网络浏览器并且可以实现为计算机设备,例如笔记本电脑、台式机、工作站等等,网络浏览器可以是用于向应用服务器发送连接请求和查询、并且查看由应用服务器提供的内容的客户端应用。客户端设备可以包括被配置成服务由网络服务器提供的网络服务的硬件或者软件。移动设备可以实现为便携式设备,例如移动电话、智能手机、平板电脑等,网络可以被用于接收和处理通信连接,包括在客户端、移动设备和网络服务器之间的连接请求和响应,网络服务器可以接受并处理通过网络从客户端和移动设备接受的连接和访问请求。
这时会发生并行I/O访问。当发生多个网络I/O访问请求时,若采用阻塞模式处理,则大量的处理工作流会被阻塞。一个简单的客户端-服务器网络通讯所需要的ServerSocketChannel(等待客户端的连接)、SocketChannel(与客户端通信)、Buffer的流程节点实例:
Figure BDA0002210672990000051
Figure BDA0002210672990000061
新的线程需要将请求数据读入Buffer中,响应客户端,即来一个新的请求,我们就新开一个线程来处理这个请求,之后的操作全部由那个线程来完成。那么,这个模式下的瓶颈在于:首先,每次来一个连接都开一个新的线程,当活跃连接数是几万几十万的时候,这么多线程明显就不行了。每个线程都需要一部分内存,内存会被迅速消耗,同时,线程切换的开销非常大,资源利用率很低。
其次,阻塞操作accept()的问题。当accept()响应的时候,代表有一个连接可以使用了,马上就新建线程来处理SocketChannel(与客户端通信)了,但是,但是这里不代表客户端就将数据传输过来了。所以,SocketChannel#read方法将阻塞,等待数据,同理,SocketChannel#write方法也需要等待通道可写才能执行写入操作,因此,会发生阻塞。
但是本发明改进了I/O访问模式,采用异步非阻塞I/O访问模式执行调用任务,调用后立即返回,然后释放当前线程,不必等到任务真正完成。当异步非阻塞调用完成后,会收到一个异步消息,收到消息后,从全局缓存列表查询该任务的回调函数及线程上下文,然后调用回调处理函数。在本方面实施例模式下,线程只需要发起一个I/O操作然后立即返回,等I/O操作真正的完成以后,应用程序会得到I/O操作完成的通知,此时用户线程只需要对数据进行处理就好了,不需要进行实际的IO读写操作。从而控制了线程数量,减少过多的线程带来的内存消耗和CPU在线程调度上的开销,提高了并行处理性能。
进一步的,所述方法还包括:
在所述异步回调处理结束前,判断是否存在可执行流程节点,若是,则流程引擎调用下节点逻辑,所述下节点为同步执行节点,该线程继续执行下节点逻辑。当异步非阻塞节点回调执行结束后,继续按照原来工作流执行的逻辑继续执行该流程。
进一步地,所述方法还包括:
当所述下节点逻辑执行完成时,继续判断是否存在后续可执行节点,若否,则流程节点实例执行完成,释放所述流程节点实例相关的线程资源。
图3为本发明实施例提供的计算机设备的实体结构示意图,如图3所示,该服务器可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行如下方法:当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;执行所述异步非阻塞调用;当所述异步非阻塞调用执行完成时,释放当前线程。
通信总线940是连接所描述的元素的电路并且在这些元素之间实现传输。例如,处理器910通过通信总线940从其它元素接收到命令,解密接收到的命令,根据解密的命令执行计算或数据处理。存储器930可以包括程序模块,例如内核(kernel),中间件(middleware),应用程序程序编程接口(Application Programming Interface,API)和应用程序。该程序模块可以是有软件、固件或硬件、或其中的至少两种组成。通信接口920将该计算机设备与其它网络设备、客户端、移动设备、网络进行连接。例如,通信接口920可以通过有线或无线连接到网络以连接到外部其它的网络设备或用户设备。无线通信可以包括以下至少一种:无线保真(WiFi),蓝牙(BT),近距离无线通信技术(NFC),全球卫星定位系统(GPS)和蜂窝通信等等。有线通信可以包括以下至少一种:通用串行总线(USB),高清晰度多媒体接口(HDMI),异步传输标准接口(RS-232)等等。网络可以是电信网络和通信网络。通信网络可以为计算机网络、因特网、物联网、电话网络。计算机设备可以通过通信接口920连接网络,计算机设备和其它网络设备通信所用的协议可以被应用程序、应用程序程序编程接口(API)、中间件、内核和通信接口920至少一个支持。
进一步地,本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;执行所述异步非阻塞调用;当所述异步非阻塞调用执行完成时,释放当前线程。
进一步地,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文;执行所述异步非阻塞调用;当所述异步非阻塞调用执行完成时,释放当前线程。
本领域普通技术人员可以理解:此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制,上述实施例均可根据需要自由组合;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (5)

1.一种异步系统的实现方法,其特征在于,所述方法包括:
预先在全局缓存列表里注册异步逻辑的回调方法、异步非阻塞调用之前的线程的上下文信息,当异步回调执行时申请到新的线程资源后执行回调方法;
当流程节点的执行存在异步非阻塞调用时,预备异步回调处理,所述异步回调处理被缓存至全局缓存列表中,并保存当前流程节点的线程上下文,其中,对工作流引擎中所述流程节点的执行的改进采用基于状态机的工作流引擎改进;
所述异步非阻塞被调用,释放当前线程;
重新申请回调处理时的线程,并恢复所述线程上下文进行回调处理;当所述异步非阻塞调用收到响应时,从所述全局缓存列表中查找所述异步回调处理;
当查找到所述异步回调处理时,从工作流线程池中申请线程资源,并还原已保存的线程上下文,使用申请到的线程资源执行异步回调处理。
2.根据权利要求1所述的异步系统实现方法,其特征在于,所述方法还包括:
在所述异步回调处理结束前,判断是否存在可执行流程节点,若是,则流程引擎调用下节点逻辑,所述下节点为同步执行节点,回调时重新申请的线程继续执行下节点逻辑。
3.根据权利要求2所述的异步系统实现方法,其特征在于,所述方法还包括:
当所述下节点逻辑执行完成时,继续判断是否存在后续可执行节点,若否,则流程节点实例执行完成,释放所述流程节点实例相关的线程资源。
4.一种用于实现异步系统的计算机设备,其特征在于,所述计算机设备包括:
一个或更多个处理器;
一个或更多个存储器;
一个或更多个模块,其被存在存储器中且能够由所述一个或更多个处理器中的至少一个处理器以执行如权利要求1至3任一所述异步系统实现方法的步骤。
5.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至3任一所述异步系统实现方法的步骤。
CN201910897237.7A 2019-09-23 2019-09-23 异步系统的实现方法、计算机设备和存储介质 Active CN110825441B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910897237.7A CN110825441B (zh) 2019-09-23 2019-09-23 异步系统的实现方法、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910897237.7A CN110825441B (zh) 2019-09-23 2019-09-23 异步系统的实现方法、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN110825441A CN110825441A (zh) 2020-02-21
CN110825441B true CN110825441B (zh) 2021-11-02

Family

ID=69548174

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910897237.7A Active CN110825441B (zh) 2019-09-23 2019-09-23 异步系统的实现方法、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN110825441B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111556503A (zh) * 2020-03-30 2020-08-18 沈阳通用软件有限公司 一种基于Windows操作系统的个人WIFI热点管理方法
CN111506368B (zh) * 2020-04-21 2023-09-22 北京同邦卓益科技有限公司 对异步调用转同步调用的方法、装置、设备及存储介质
CN112306695A (zh) * 2020-11-19 2021-02-02 中国民航信息网络股份有限公司 数据的处理方法、装置、电子设备及计算机存储介质
CN115658242B (zh) * 2022-10-21 2024-04-26 芯华章科技股份有限公司 逻辑系统设计的任务处理方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108055255A (zh) * 2017-12-07 2018-05-18 华东师范大学 一种事件库、可扩展数据管理系统及其管理方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213562B2 (en) * 2010-12-17 2015-12-15 Oracle International Corporation Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed
CN106250559A (zh) * 2016-08-17 2016-12-21 浪潮电子信息产业股份有限公司 网络io的异步非阻塞应用于数据库中间件的方法
CN106406991B (zh) * 2016-08-30 2019-12-17 西安航天华迅科技有限公司 一种ThreadX操作系统在ARM处理器上的运行方法
CN107329838A (zh) * 2017-05-23 2017-11-07 努比亚技术有限公司 一种业务交互方法、终端和计算机可读存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108055255A (zh) * 2017-12-07 2018-05-18 华东师范大学 一种事件库、可扩展数据管理系统及其管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Controlling Multi Thread Execution using Single Thread Event Loop;R. P. Srivastava;《2017 International Conference on Innovations in Control, Communication and Information Systems (ICICCI)》;20190307;1-7 *

Also Published As

Publication number Publication date
CN110825441A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110825441B (zh) 异步系统的实现方法、计算机设备和存储介质
US10454795B1 (en) Intermediate batch service for serverless computing environment metrics
CN111277639B (zh) 一种保持数据一致性的方法和装置
CN111538605B (zh) 一种分布式数据访问层中间件及命令执行方法和装置
CN112486074B (zh) 数据处理系统、方法及装置
CN106202082B (zh) 组装基础数据缓存的方法及装置
US20220394209A1 (en) Multimedia conference data processing method and apparatus, and electronic device
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
CN114358921A (zh) 系统切换方法、装置、设备、介质和程序产品
US10613992B2 (en) Systems and methods for remote procedure call
CN111782473A (zh) 分布式日志数据处理方法、装置及系统
CN111290842A (zh) 一种任务执行方法和装置
WO2017157009A1 (zh) 集群全网呼叫控制方法及装置
CN112689012A (zh) 跨网络的代理通讯方法及装置
CN111913792A (zh) 一种业务处理方法和装置
US20230281187A1 (en) Method for keeping data consistent across different storage systems, computing device, and storage medium
CN113596328B (zh) 摄像头调用方法、装置和电子设备
CN114374657A (zh) 一种数据处理方法和装置
CN112688982B (zh) 一种用户请求处理方法和装置
CN113760487A (zh) 一种业务处理方法和装置
CN116010126B (zh) 一种服务聚合方法、装置及系统
CN111782366A (zh) 一种分布式任务调度方法及装置
CN107193989B (zh) 一种nas集群缓存处理方法和系统
CN113301104B (zh) 数据处理系统及方法
CN113132480B (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