CN112256444B - 基于dag的业务处理方法、装置、服务器及存储介质 - Google Patents
基于dag的业务处理方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN112256444B CN112256444B CN201910663151.8A CN201910663151A CN112256444B CN 112256444 B CN112256444 B CN 112256444B CN 201910663151 A CN201910663151 A CN 201910663151A CN 112256444 B CN112256444 B CN 112256444B
- Authority
- CN
- China
- Prior art keywords
- node
- dag
- information
- interface
- online service
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于DAG的业务处理方法、装置、服务器及存储介质,属于互联网技术领域。所述方法包括:接收客户端发送的在线业务处理请求,在线业务处理请求包括目标操作信息和目标系统版本信息;根据操作信息、系统版本信息及DAG之间的对应关系,确定目标操作信息和目标系统版本信息对应的目标DAG;执行目标DAG中各个节点的在线业务逻辑,以处理客户端所请求的在线业务。本发明预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种基于DAG的业务处理方法、装置、服务器及存储介质。
背景技术
DAG(Directed Acyclic Graph,有向无环图)是指由若干个节点和有向边组成的非闭环的图像。DAG作为一种基础的数据结构,可用于处理复杂的业务逻辑。
目前,在离线业务场景下,相关技术基于DAG处理复杂的离线业务逻辑时,可将复杂的离线业务逻辑拆分为多个简单的离线业务逻辑,将每个简单的离线业务逻辑赋予一个节点上,通过采用有向边连接具有依赖关系的简单的离线业务逻辑所在的节点,可以生成DAG,进而基于所生成的DAG,处理离线业务。
然而,相关技术只能处理离线业务,无法处理不同场景的在线业务,因此,亟需提供一种基于DAG图的业务处理方法,以处理不同场景的在线业务。
发明内容
本发明实施例提供了一种基于DAG的业务处理方法、装置、服务器及存储介质。所述技术方案如下:
一方面,提供了一种基于DAG的业务处理方法,所述方法包括:
接收客户端发送的在线业务处理请求,所述在线业务处理请求包括登录所述客户端的用户所输入的目标操作信息和所述客户端的目标系统版本信息;
根据操作信息、系统版本信息及有向无环图DAG之间的对应关系,确定所述目标操作信息和目标系统版本信息对应的目标DAG,所述DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接;
执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务。
另一方面,提供了一种基于DAG的业务处理装置,所述装置包括:
接收模块,用于接收客户端发送的在线业务处理请求,所述在线业务处理请求包括登录所述客户端的用户所输入的目标操作信息和所述客户端的目标系统版本信息;
确定模块,用于根据操作信息、系统版本信息及有向无环图DAG之间的对应关系,确定所述目标操作信息和目标系统版本信息对应的目标DAG,所述DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接;
执行模块,用于执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务。
另一方面,提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现基于DAG的业务处理方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现基于DAG的业务处理方法。
本发明实施例提供的技术方案带来的有益效果是:
预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于DAG的业务处理方法所涉及的实施环境;
图2是本发明实施例提供的一种基于DAG的业务处理方法的架构图;
图3是本发明实施例提供的一种基于DAG的业务处理方法的流程图;
图4是本发明实施例提供的一种应用程序的应用界面的示意图;
图5是本发明实施例提供的另一种应用程序的应用界面的示意图;
图6是本发明实施例提供的一种基于DAG的业务处理装置的结构示意图;
图7是根据一示例性实施例示出的一种用于基于DAG的业务处理的服务器。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明实施例提供的基于DAG的业务处理方法所涉及的实施环境,该实施环境包括:客户端101和服务器102。
其中,客户端101类型包括IOS客户端、Windows客户端、Android客户端等。客户端101可基于应用程序,从服务器102中获取相应服务。
服务器102为应用程序的后台服务器。该服务器102具有较强的计算能力,可处理应用程序的客户端所请求的在线业务。
上述客户端101与服务器102之间可通过有线网络或无线网络进行通信。
图2是本发明实施例提供的基于DAG的业务处理方法的架构图,参见图2,在初始化阶段,服务器根据配置文件,生成至少一个DAG图(图2中示例性地示出了一个由节点1、节点2、节点3、节点4及节点5组成的DAG图),通过执行每个DAG图,可处理不同的在线业务。在业务处理阶段,用户在客户端上输入操作信息,客户端基于用户所输入的操作信息,生成在线业务处理请求,并将该在线业务处理请求发送至服务器,当该在线业务处理请求命中图2中所示的DAG图,则服务器从节点1开始执行该DAG图的在线业务逻辑,以处理所请求的在线业务。
基于图2所示的架构图,本发明实施例主要解决如下两个技术问题:
第一个问题、如何充分利用现有的多CPU多核的硬件环境,从而优化服务的性能。
第二个问题、如何解决复杂的在线业务逻辑的扩展性(可移植性)。例如,一段较为复杂的在线业务逻辑被应用在一个应用程序的业务场景中,如果针对这个应用程序需要开发国际版本或者其它版本,并需要执行国际版本或其他版本的在线业务逻辑,此时,需要就将复杂的在线业务逻辑移植到该应用程序的国际版本或其他版本或者新开发的应用程序中。
针对第一个问题,本发明实施例可在linux平台上采用go语言编写在线业务逻辑,控制在线业务逻辑的执行顺序,并采用DAG管理每个在线业务逻辑。采用DAG图中每个节点代表一段在线业务逻辑(Processor),采用一条有向边连接具有依赖关系的两个节点。在执行每个节点的在线业务逻辑时,对具有依赖关系的节点,当连接节点的所有边前面的节点都执行完后,再执行该节点的在线业务逻辑,对于无依赖关系的节点,可为每个节点分配一个线程,并基于所分配的线程并行执行每个节点的在线业务逻辑。上述以在linux平台上采用go语言实现为例,当然,也可在其它的平台上采用其它语音,例如,可在Windows平台上采用c++语言等。
针对第二个问题,为了实现可配置可插拔的业务逻辑,本发明实施例进行如下规定:
1、规定所有节点的接口是统一的,所有边的接口也是统一的。
2、规定节点的输入来源,包括用户输入、所依赖的节点的输出(边要处理的)及初始化阶段的配置文件。
3、节点和边的接口为工厂类,基于节点和边的接口,能够根据配置文件,动态生成不同场景的在线业务逻辑的节点和边,从而可以动态生成不同场景的DAG图。
4、在业务处理场景,对于用户所输入的操作信息和客户端的操作版本信息,能够映射到一个固定的DAG上,通过执行该DAG,处理所请求的在线业务。
本发明实施例提供了一种基于DAG的业务处理方法,参见图3,本发明实施例提供的方法流程包括:
301、服务器根据配置文件,生成操作信息、系统版本信息及DAG图名称之间的对应关系。
其中,配置文件包括生成各个DAG的配置信息。DAG的配置信息包括DAG中各个节点的节点信息和各条边的边信息。该节点信息为初始化阶段生成节点时所必须的信息,边信息为初始化阶段生成边所必须的。每个节点的节点信息及每条边的边信息分别存储于不同的配置子文件中,对于节点信息、边信息及配置子文件的格式,可由实现每个节点、边的在线业务逻辑进行规定。对于如何对节点信息、边信息及配置子文件进行解释,也可由实现每个节点、边的在线业务逻辑进行规定。
配置文件示例如下:
ios,lg(6.9.0),search,abtest_01->ios_search_hit_abtest01_69
android,eq(3.4.0),smartbox->android_search_smartbox
其中,第一行表示当Ios的客户端版本大于等于6.9.0,命中01桶的搜索请求时,会进入图名称为“ios_search_hit_abtest01_69”的DAG。第二行表示当Android客户端的版本3.4.0,命中smartbox搜索请求时,会进入图名称为“android_search_smartbox”的DAG。
302、服务器获取每个DAG图名称中各个节点的节点信息和各条边的边信息。
对于每个DAG图名称,服务器需要根据DAG图名称,获取每个DAG图名称中各个节点的配置子文件和各条边的配置子文件,并从各个节点的配置子文件中读取各个节点的节点信息,从各条边的配置子文件中读取各条边的边信息,进而根据每个DAG图名称中各个节点的节点信息和各条边的边信息,生成相应的DAG。
303、服务器根据每个DAG图名称中各个节点的节点信息和各条边的边信息,生成每个DAG图名称指示的DAG。
在本发明实施例中,服务器还预先为各个DAG中的每个节点设置第一类节点接口和第二类节点接口。其中,第一类节点接口用于在初始化阶段根据节点信息生成DAG图时被调用,该第一类节点接口表示为Processor;第二类节点接口用于在业务处理阶段执行节点的在线业务时被调用,该第二类节点接口表示为ProcessorFactory。另外,在初始化阶段,需要将第一类节点接口注册进服务器,从而可向服务器通知该第一类节点接口所能处理的节点,方便服务器遇到该节点时,能够正确调用相应的接口。
服务器为每个节点定义的第一类节点接口和第二类节点接口如下:
type Processor interface{
NewBasicMsg(mainMsg MainBasicMsg)BasicMsg初始化
HandleProcess(ctx context.Context,req*ProcessReq)*ProcessRsp
}
type ProcessorFactory interface{
NewProcessor()(Processor,error)
}。
在本发明实施例中,服务器还预先为各个DAG中的每条边设置第一类边接口和第二类边接口。其中,第一类边接口用于在初始化阶段根据边信息生成DAG图时被调用,该第一类边接口表示为Notifier;第二类边接口用于在执行边所连接下一节点的在线业务时被调用,该第二类边接口表示为NotifierFactory。另外,在初始化阶段,需要将第一类边接口注册进服务器,从而可向服务器通知该第一类边接口所能处理的节点,方便服务器遇到该边时,能够正确调用相应的接口。
服务器为每条边定义的第一类边接口和第二类节点接口如下:
type Notifier interface{
DoNotify(preProcessOutMsg*NotifierInReq,currentProcessInMsg
*NotifierOutReq)*NotifierResult
}
ProcessWillBlock()bool处理是否会阻塞,阻塞返回true
HandleProcess(ctx context.Context,req*ProcessReq)*ProcessRsp
}
type Notifier Factory interface{
NewNotifier()(*NotifierStruct,error)
}。
服务器根据每个DAG图名称中各个节点的节点信息和各条边的边信息,调用节点的第一类节点接口和边的第一类边接口,将具有依赖关系的两个节点采用一条有向边进行连接,最终可生成每个DAG图名称指示的DAG。其中,DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接。
进一步地,为了便于对所生成的DAG进行管理,服务器还将生成DAG的各个节点及边对应的配置子文件组成一个配置文件,并为该配置文件设置文件名称。通常可将DAG图名称加后缀dag,作为DAG的配置文件的文件名称。例如,图名称为“ios_search_hit_abtest01_69”的DAG的配置文件的文件名称可以为ios_search_hit_abtest01_69.dag;图名称为“android_search_smartbox”的DAG的配置文件的文件名称可以为android_search_smartbox.dag。
对于所生成的DAG,服务器还将验证所生成的图是否为真正的DAG,如果不是真正的DAG,则初始化阶段失败;如果是真正的DAG,则执行下一步骤。服务器在验证所生成的图是否为真正的DAG时,可沿着所生成图的起始节点开始遍历图中的各个节点,如果图中不存在闭环,则确定所生成的图为真正的DAG;如果所生成的图中存在闭环,则确定所生成的图不是真正的DAG。
在本发明另一个实施例中,服务器还将预先为各个DAG中入度为0的节点设置一个前置无操作节点,并为出度为0的节点设置一个无操作节点。采用该种设置方式可保证每个DAG中入度为0的节点只有一个,出度为0的节点也只有一个。
在本发明另一个实施例中,服务器还将检测各个DAG图均已生成,如果存在未生成的DAG图,则继续生成DAG图,否则,初始化阶段结束。上述初始化阶段只在应用程序启动时执行一次,当业务处理过程中不再执行。
304、基于每个DAG,服务器生成操作信息、系统版本信息及DAG之间的对应关系。
基于操作信息、系统版本信息及DAG图名称之间的对应关系,服务器可得到操作信息、系统版本信息及DAG之间的对应关系。
305、服务器接收客户端发送的在线业务处理请求。
其中,在线业务处理请求包括登录客户端的用户所输入的目标操作信息和客户端的目标系统版本信息。在应用程序运行过程中,客户端检测用户在应用程序的应用界面上的输入操作,根据检测到的输入操作,获取用户所输入的目标操作信息,并获取客户端的目标系统版本信息,进而将包括用户所输入的目标操作信息和客户端的目标系统版本信息的在线业务处理请求发送至服务器。
306、服务器根据操作信息、系统版本信息及有向无环图DAG之间的对应关系,确定目标操作信息和目标系统版本信息对应的目标DAG。
基于所存储的操作信息、系统版本信息及DAG之间的对应关系,当接收到客户端发送的在线业务请求时,服务器根据目标操作信息和目标系统版本信息,从操作信息、系统版本信息及DAG之间的对应关系中,获取目标操作信息和目标系统版本信息对应的目标DAG。
例如,当根据接收到的在线业务请求,服务器命中图名为ios_search_hit_abtest01_69的DAG,则将进入图名为ios_search_hit_abtest01_69的DAG,并执行该DAG。
307、服务器执行目标DAG中各个节点的在线业务逻辑,以处理客户端所请求的在线业务。
服务器开始执行目标DAG中各个节点的在线业务逻辑时,可先为入度为0的节点分配一个线程,并调用该入度为0的节点的第二类节点接口执行该入度为0的节点的在线业务逻辑。在入度为0的节点的在线业务逻辑执行完成时,执行入度非0的节点的在线业务逻辑。由于本发明实施例预先为入度为0的节点数量为一个,因而一般只需分配一个单独的线程开始处理即可。
服务器在执行目标DAG中各个节点的在线业务逻辑时,对于任一入度非0的节点,当与入度非0的节点连接的每个上一节点的在线业务逻辑均执行完成时,为入度非0的节点分配线程,并基于所分配的线程执行入度非0的节点的在线业务逻辑。在为入度非0的节点分配线程时,可为该入度非0的节点重新分配一个新线程,也可以将上一节点中的线程分配给该入度非0的节点。
服务器在执行目标DAG中各个节点的业务逻辑时,对于任一节点,如果该节点的出度为0,则在该节点的在线业务逻辑处理完成时,业务处理流程结束;如果该节点的出度不为0,则在该节点的在线业务逻辑处理完成时,服务器为与节点连接的每个下一节点分配一个线程,并基于为每个下一节点所分配的线程并行执行每个下一节点的在线业务逻辑。通过并行执行不具有依赖关系的各个节点的在线业务逻辑,提高了在线业务的处理速度及业务性能。
当处理完目标DAG中所有节点的在线业务逻辑时,返回业务处理结果。如正常处理完成,则返回业务数据,如果非正常处理完成,则返回超时退出,或返回出错信息。
对于上述执行目标DAG中各个节点的在线业务逻辑的过程,下面以图2为例进行说明。
当根据客户端发送的在线业务请求命中图2所示的DAG图,服务器为入度为0的节点1分配一个线程,基于该线程执行节点1的在线业务逻辑。当节点1的在线业务逻辑执行完成时,为节点2和节点4分别分配一个线程,并基于分配的线程分别执行节点2和节点4的在线业务逻辑,当执行完节点2的在线业务逻辑时,为节点3分配一个线程,基于所分配的线程执行节点3的在线业务逻辑。当节点4的在线业务逻辑执行完成时,判断节点3的在线业务逻辑是否执行完成,如果未执行完成,则等待节点3的在线业务逻辑执行,并在节点3的在线业务逻辑执行完成时,为节点5分配一个线程,基于所分配的线程执行节点5的在线业务逻辑。节点5的出度为0,当节点5的在线业务逻辑执行完成时,返回业务处理结果。
采用本发明实施例提供的方法可将同一套复杂的在线业务逻辑应用到不同的业务场景中。例如,图4示出了一个应用程序的应用界面,图5示出了另一个应用程序的应用界面。通过对比可以发现,图5中的应用界面上的搜索功能相比与图4中的应用界面的搜索功能要简单的多,然而,在后台实现时,图4和图5中的应用程序却来源于一套在线业务处理逻辑。
需要说明的是,本发明实施例以基于DAG处理在线业务为例进行说明,当然,可以将DAG替换成树形结构或者其它图结构,还可以修改DAG中边和节点的处理方法,或者去掉边的处理方法,将其放在节点中作为节点的前置处理方法等。
本发明实施例提供的方法,预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
另外,本发明实施例还具有以下有益效果:
1、增强了服务器的业务逻辑扩展性。
2、对于依赖关系的在线业务逻辑,并行进行执行,能充分多核CPU的性能,提高了在线业务的处理速度。
3、将复杂业务逻辑被分解为节点和边,方便对复杂项目进行拆解以及多人协作进行管理。
参见图6,本发明实施例提供了一种基于DAG的业务处理装置,该装置包括:
接收模块601,用于接收客户端发送的在线业务处理请求,在线业务处理请求包括登录客户端的用户所输入的目标操作信息和客户端的目标系统版本信息;
确定模块602,用于根据操作信息、系统版本信息及有向无环图DAG之间的对应关系,确定目标操作信息和目标系统版本信息对应的目标DAG,DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接;
执行模块603,用于执行目标DAG中各个节点的在线业务逻辑,以处理客户端所请求的在线业务。
在本发明的另一个实施例中,执行模块603,用于在开始执行目标DAG中各个节点的在线业务逻辑时,为入度为0的节点分配一个线程,在入度为0的节点的在线业务逻辑执行完成时,执行入度非0的节点的在线业务逻辑。
在本发明的另一个实施例中,执行模块603,用于对于任一入度非0的节点,当与入度非0的节点连接的每个上一节点的在线业务逻辑均执行完成时,为入度非0的节点分配线程,并基于所分配的线程执行入度非0的节点的在线业务逻辑。
在本发明的另一个实施例中,执行模块603,用于对于任一节点,如果节点的出度为0,则在节点的在线业务逻辑处理完成时,流程结束;如果节点的出度不为0,则在节点的在线业务逻辑处理完成时,为与节点连接的每个下一节点分配一个线程,并基于为每个下一节点所分配的线程并行执行每个下一节点的在线业务逻辑。
在本发明的另一个实施例中,该装置还包括:
生成模块,用于根据配置文件,生成操作信息、系统版本信息及DAG图名称之间的对应关系,配置文件包括生成各个DAG的配置信息,配置信息包括节点信息和边信息;
获取模块,用于获取每个DAG图名称中各个节点的节点信息和各条边的边信息;
生成模块,还用于根据每个DAG图名称中各个节点的节点信息和各条边的边信息,生成每个DAG图名称指示的DAG;
生成模块,还用于基于每个DAG,生成操作信息、系统版本信息及DAG之间的对应关系。
在本发明的另一个实施例中,该装置还包括:
设置模块,用于预先为各个DAG中的每个节点设置第一类节点接口和第二类节点接口,第一类节点接口用于根据节点信息生成DAG图时被调用,第二类节点接口用于执行节点的在线业务时被调用;
设置模块,还用于预先为各个DAG中的每条边设置第一类边接口和第二类边接口,第一类边接口用于根据边信息生成DAG图时被调用,第二边接口用于执行边所连接下一节点的在线业务时被调用。
在本发明的另一个实施例中,该装置还包括:
设置模块,用于预先为各个DAG中入度为0的节点设置一个前置无操作节点,并为出度为0的节点设置一个无操作节点。
综上所述,本发明实施例提供的装置,预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
图7是根据一示例性实施例示出的一种用于基于DAG的业务处理的服务器。参照图7,服务器700包括处理组件722,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件722的执行的指令,例如应用程序。存储器732中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件722被配置为执行指令,以执行上述基于DAG的业务处理方法中服务器所执行的功能。
服务器700还可以包括一个电源组件726被配置为执行服务器700的电源管理,一个有线或无线网络接口750被配置为将服务器700连接到网络,和一个输入输出(I/O)接口758。服务器700可以操作基于存储在存储器732的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本发明实施例提供的服务器,通过预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
本发明实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现图3所示的基于DAG的业务处理方法。
本发明实施例提供的计算机可读存储介质,通过预先设置操作信息、系统版本信息及有向无环图DAG之间的对应关系,在接收到客户端发送的在线业务处理请求时,根据该对应关系,确定目标DAG,进而执行目标DAG中各个节点的在线业务逻辑,从而提供了一种基于DAG的在线业务的处理方法。
需要说明的是:上述实施例提供的基于DAG的业务处理装置在基于DAG处理业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将基于DAG的业务处理装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于DAG的业务处理装置与基于DAG处理业务方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于DAG的业务处理方法,其特征在于,所述方法包括:
根据配置文件,生成操作信息、系统版本信息及有向无环图DAG图名称之间的对应关系,所述配置文件包括生成各个DAG的配置信息,所述配置信息包括节点信息和边信息,所述DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接;
预先为各个DAG中的每个节点设置第一类节点接口和第二类节点接口,所述第一类节点接口用于根据节点信息生成DAG图时被调用,所述第二类节点接口用于执行节点的在线业务时被调用;
预先为各个DAG中的每条边设置第一类边接口和第二类边接口,所述第一类边接口用于根据边信息生成DAG图时被调用,所述第二类边接口用于执行边所连接下一节点的在线业务时被调用;
获取每个DAG图名称中各个节点的节点信息和各条边的边信息;
根据每个DAG图名称中各个节点的节点信息和各条边的边信息,调用所述第一类节点接口和所述第一类边接口,将具有依赖关系的两个节点采用一条有向边进行连接,生成每个DAG图名称指示的DAG;
基于每个DAG,生成所述操作信息、系统版本信息及DAG之间的对应关系;
接收客户端发送的在线业务处理请求,所述在线业务处理请求包括登录所述客户端的用户所输入的目标操作信息和所述客户端的目标系统版本信息;
根据操作信息、系统版本信息及DAG之间的对应关系,确定所述目标操作信息和目标系统版本信息对应的目标DAG;
调用所述第二类节点接口和所述第二类边接口,执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务。
2.根据权利要求1所述的方法,其特征在于,所述执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务,包括:
在开始执行所述目标DAG中各个节点的在线业务逻辑时,为入度为0的节点分配一个线程,在所述入度为0的节点的在线业务逻辑执行完成时,执行入度非0的节点的在线业务逻辑。
3.根据权利要求1所述的方法,其特征在于,所述执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务,包括:
对于任一入度非0的节点,当与所述入度非0的节点连接的每个上一节点的在线业务逻辑均执行完成时,为所述入度非0的节点分配线程,并基于所分配的线程执行所述入度非0的节点的在线业务逻辑。
4.根据权利要求1所述的方法,其特征在于,所述执行所述目标DAG中各个节点的业务逻辑,以处理所述客户端所请求的业务,包括:
对于任一节点,如果所述节点的出度为0,则在所述节点的在线业务逻辑处理完成时,流程结束;
如果所述节点的出度不为0,则在所述节点的在线业务逻辑处理完成时,为与所述节点连接的每个下一节点分配一个线程,并基于为每个下一节点所分配的线程并行执行每个下一节点的在线业务逻辑。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
预先为各个DAG中入度为0的节点设置一个前置无操作节点,并为出度为0的节点设置一个无操作节点。
6.一种基于DAG的业务处理装置,其特征在于,所述装置包括:
生成模块,用于根据配置文件,生成操作信息、系统版本信息及有向无环图DAG图名称之间的对应关系,所述配置文件包括生成各个DAG的配置信息,所述配置信息包括节点信息和边信息,所述DAG图包括至少一个节点,每个节点存储有在线业务逻辑,两个具有依赖关系的节点采用一条有向边连接;
设置模块,用于预先为各个DAG中的每个节点设置第一类节点接口和第二类节点接口,所述第一类节点接口用于根据节点信息生成DAG图时被调用,所述第二类节点接口用于执行节点的在线业务时被调用;
所述设置模块,用于预先为各个DAG中的每条边设置第一类边接口和第二类边接口,所述第一类边接口用于根据边信息生成DAG图时被调用,所述第二类边接口用于执行边所连接下一节点的在线业务时被调用;
获取模块,用于获取每个DAG图名称中各个节点的节点信息和各条边的边信息;
所述生成模块,还用于根据每个DAG图名称中各个节点的节点信息和各条边的边信息,调用所述第一类节点接口和所述第一类边接口,将具有依赖关系的两个节点采用一条有向边进行连接,生成每个DAG图名称指示的DAG;
所述生成模块,还用于基于每个DAG,生成所述操作信息、系统版本信息及DAG之间的对应关系;
接收模块,用于接收客户端发送的在线业务处理请求,所述在线业务处理请求包括登录所述客户端的用户所输入的目标操作信息和所述客户端的目标系统版本信息;
确定模块,用于根据操作信息、系统版本信息及DAG之间的对应关系,确定所述目标操作信息和目标系统版本信息对应的目标DAG;
执行模块,用于调用所述第二类节点接口和所述第二类边接口,执行所述目标DAG中各个节点的在线业务逻辑,以处理所述客户端所请求的在线业务。
7.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至5中任一项所述的基于DAG的业务处理方法。
8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至5中任一项所述的基于DAG的业务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910663151.8A CN112256444B (zh) | 2019-07-22 | 2019-07-22 | 基于dag的业务处理方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910663151.8A CN112256444B (zh) | 2019-07-22 | 2019-07-22 | 基于dag的业务处理方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256444A CN112256444A (zh) | 2021-01-22 |
CN112256444B true CN112256444B (zh) | 2023-08-01 |
Family
ID=74224698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910663151.8A Active CN112256444B (zh) | 2019-07-22 | 2019-07-22 | 基于dag的业务处理方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256444B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114764561A (zh) * | 2021-01-13 | 2022-07-19 | 北京金山云网络技术有限公司 | 作业开发方法、装置、电子设备及存储介质 |
CN113342500B (zh) * | 2021-06-29 | 2022-09-16 | 北京三快在线科技有限公司 | 任务执行方法、装置、设备及存储介质 |
CN117151868B (zh) * | 2023-10-25 | 2024-01-26 | 四川智筹科技有限公司 | 一种基于ai的分布式智能分案引擎的实现方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786594A (zh) * | 2016-08-26 | 2018-03-09 | 深圳市腾讯计算机系统有限公司 | 业务请求处理方法及装置 |
WO2019023976A1 (zh) * | 2017-08-02 | 2019-02-07 | 福建联迪商用设备有限公司 | 一种业务数据处理方法、客户端、服务端及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267452B (zh) * | 2008-02-27 | 2011-02-16 | 华为技术有限公司 | 一种web服务合成方案转换方法及应用服务器 |
CN103870340B (zh) * | 2014-03-06 | 2017-11-07 | 华为技术有限公司 | 流计算系统中的数据处理方法、控制节点及流计算系统 |
CN104915260B (zh) * | 2015-06-19 | 2018-05-25 | 北京搜狐新媒体信息技术有限公司 | 一种Hadoop集群管理任务的分发方法和系统 |
CN109598407B (zh) * | 2018-10-26 | 2024-04-05 | 创新先进技术有限公司 | 一种业务流程的执行方法及装置 |
-
2019
- 2019-07-22 CN CN201910663151.8A patent/CN112256444B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786594A (zh) * | 2016-08-26 | 2018-03-09 | 深圳市腾讯计算机系统有限公司 | 业务请求处理方法及装置 |
WO2019023976A1 (zh) * | 2017-08-02 | 2019-02-07 | 福建联迪商用设备有限公司 | 一种业务数据处理方法、客户端、服务端及系统 |
Non-Patent Citations (1)
Title |
---|
融合通信业务门户系统中业务逻辑层的扩展与实现;赵京华;李炜;;北京工商大学学报(自然科学版)(第01期);64-68 * |
Also Published As
Publication number | Publication date |
---|---|
CN112256444A (zh) | 2021-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9661071B2 (en) | Apparatus, systems and methods for deployment and management of distributed computing systems and applications | |
CN112256444B (zh) | 基于dag的业务处理方法、装置、服务器及存储介质 | |
US8856790B1 (en) | Systems and methods for data management in a virtual computing environment | |
US20150186129A1 (en) | Method and system for deploying a program module | |
US9250886B2 (en) | Optimizing provisioning workflows in cloud computing | |
RU2658190C2 (ru) | Управление доступом во время выполнения к интерфейсам прикладного программирования | |
US20100153482A1 (en) | Cloud-Based Automation of Resources | |
CN110083455B (zh) | 图计算处理方法、装置、介质及电子设备 | |
CN109117252B (zh) | 基于容器的任务处理的方法、系统及容器集群管理系统 | |
JPH1083308A (ja) | スタブ検索及びローディング・サブシステム、スタブ検索及びローディング方法並びにスタブ検索及びローディング用記録媒体 | |
CN108429787B (zh) | 容器部署方法及装置、计算机存储介质、终端 | |
Jain et al. | Performance analysis of various server hosting techniques | |
CN111045797A (zh) | 任务调度执行方法、相关装置和介质 | |
CN115358401A (zh) | 一种推理服务的处理方法、装置、计算机设备及存储介质 | |
CN117112122A (zh) | 一种集群部署方法和装置 | |
CN116362336B (zh) | 一种模型推理交互方法、电子设备、可读存储介质 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
JP5209058B2 (ja) | ソフトウェア・コンポーネントを作成するための方法 | |
CN113326098B (zh) | 支持kvm虚拟化与容器虚拟化的云管平台 | |
US11144356B2 (en) | Dynamic determination of memory requirements for function as a service multi-invocation flows | |
CN114385351A (zh) | 云管理平台负载均衡性能优化方法、装置、设备、介质 | |
CN113535358A (zh) | 任务处理方法及装置 | |
CN114647464B (zh) | 应用的并行启动处理方法、装置及电子设备 | |
CN109669771B (zh) | 依赖环境更迭方法及装置 | |
KR100318974B1 (ko) | 트리거링 이벤트에 기초한 코디네이터 트랜잭션 상태 객체 생성의 타이밍을 가진 클라이언트/서버 컴퓨팅을 위한 장치, 방법 및 컴퓨터 프로그램 제품 |
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 |