CN111176799A - 一种业务调度方法、设备和存储介质 - Google Patents
一种业务调度方法、设备和存储介质 Download PDFInfo
- Publication number
- CN111176799A CN111176799A CN201811340426.6A CN201811340426A CN111176799A CN 111176799 A CN111176799 A CN 111176799A CN 201811340426 A CN201811340426 A CN 201811340426A CN 111176799 A CN111176799 A CN 111176799A
- Authority
- CN
- China
- Prior art keywords
- job
- message
- scheduling
- scheduling task
- task
- 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.)
- Pending
Links
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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
-
- 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/546—Message passing systems or structures, e.g. queues
Abstract
本发明公开了一种业务调度方法、设备和存储介质。该方法在调度系统侧执行,包括:在启动系统时,为已经注册的工作实体JOB对应创建调度任务;接收用于发送给JOB的消息;通过JOB对应的调度任务,将消息派发给JOB。该方法在业务实体侧执行,包括:获取JOB模板;根据JOB模板,将业务实体的业务逻辑封装成JOB;注册JOB;在工作状态下,如果接收到JOB对应的调度任务发送的消息,则对消息执行逻辑处理。本发明将上层的业务实体抽象为一个由消息驱动的JOB,JOB在收到消息之后,只需要关注业务逻辑,负责执行相应的逻辑处理流程即可,无需关注底层的调度机制,避免资源浪费。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种业务调度方法、设备和存储介质。
背景技术
现代的大型通信系统都是由很多业务模块(业务实体)组成,比如:有的业务模块负责呼叫业务处理,有的业务模块负责数据库操作,有的业务模块负责版本管理等等。各个业务模块之间相互协作,从而完成整个通信系统的功能。
传统的开发模式是由业务模块各自独立实现一套完整的应用架构。比如:对于任意业务模块A,该业务模块A需要独立实现主处理函数,并根据实际需要创建对应的子线程,独立创建套接字,并通过该套接字收发消息,实现与其它业务模块的交互。每个业务模块都需要独立实现这样的一套应用架构,但是应用该应用架构,使得业务模块在执行业务逻辑处理的同时,还要关注底层的调度运行和消息交互,如果碰到问题也只能独立解决,这无疑会造成资源浪费。
针对这种问题,为各种业务提供一种通用的调度通信方式来支持各种业务的统一调度,已经成为本领域亟待解决的问题。
发明内容
本发明要解决的技术问题是提供一种业务调度方法、设备和存储介质,用以解决现有的业务模块不但需要执行对应业务的业务逻辑,还要关注底层调度机制,容易造成资源浪费的问题。
为了解决上述技术问题,本发明是通过以下技术方案来解决的:
本发明提供了一种业务调度方法,在调度系统侧执行,包括:在启动系统时,为已经注册的工作实体JOB对应创建调度任务;其中,所述JOB为业务实体根据JOB模板封装所述业务实体的业务逻辑得到的;接收用于发送给所述JOB的消息;通过所述JOB对应的调度任务,将所述消息派发给所述JOB,以便所述JOB对所述消息执行逻辑处理。
其中,所述为已经注册的JOB对应创建调度任务,包括:扫描JOB注册表中各JOB的注册信息;根据JOB注册表中各JOB的注册信息,确定归属关系相同的JOB;创建调度任务,并将所述调度任务与所述归属关系相同的JOB进行绑定。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:在消息收发接口接收到消息之后,查询通信信息与所述消息的接收信息相同的JOB;确定所述JOB对应的调度任务;将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB。
其中,当所述调度任务对应一个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,并由所述调度任务将所述套接字接收的所述消息派发给所述JOB;其中,所述套接字是所述调度任务在初始化时创建的;当所述调度任务对应多个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,由所述调度任务根据所述消息的接收信息以及所述多个JOB中的每个JOB的通信信息,确定通信信息与所述消息的接收信息相同的JOB,并将所述套接字接收的消息派发给通信信息与所述消息的接收信息相同的JOB。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:使所述调度任务根据所述JOB的状态,确定所述JOB是否正在等待消息;如果是,则保存所述调度任务的上下文信息,跳转到所述JOB的上下文,并将所述消息派发给所述JOB;如果否,则将所述消息缓存到所述调度任务的任务消息队列中,继续确定所述JOB是否正在等待消息;在所述JOB完成对派发的所述消息的逻辑处理之后,根据保存的所述调度任务的上下文信息,跳转回所述调度任务的上下文。
其中,根据所述JOB的状态,确定所述JOB是否正在等待消息,包括:如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
其中,所述方法还包括:如果所述调度任务对应多个JOB,则使所述调度任务在接收到所述多个JOB中的其中一个JOB发送给另一个JOB的消息之后,将所述消息存储到所述另一个JOB对应的待处理消息队列中,以使所述另一个JOB从所述待处理消息队列中获取所述消息。
本发明还提供了一种业务调度方法,在业务实体侧执行,包括:获取JOB模板;根据所述JOB模板,将所述业务实体的业务逻辑封装成JOB;注册所述JOB,以便调度系统为所述JOB对应创建调度任务;在工作状态下,如果接收到所述JOB对应的调度任务发送的消息,则对所述消息执行逻辑处理。
本发明还提供了一种业务调度设备,所述业务调度设备包括处理器和存储器;所述处理器用于执行所述存储器中存储的业务调度程序,以实现权利要求上述在调度系统侧执行的业务调度方法,或者实现上述在业务实体侧执行的业务调度方法。
本发明又提供了一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求上述在调度系统侧执行的业务调度方法,或者实现上述在业务实体侧执行的业务调度方法。
本发明一实施例的有益效果如下:
本发明将上层的业务实体抽象为一个由消息驱动的有限状态机,该有限状态机即是JOB(工作实体),JOB在收到消息之后,只需要关注业务逻辑,负责执行相应的逻辑处理流程即可,无需关注底层的调度机制,从而可以最大程度的实现功能复用,降低实现复杂度,避免资源浪费,有助于业务实体版本的快速更新。
附图说明
图1是根据本发明第一实施例的在调度系统侧执行的业务调度方法的流程图;
图2是根据本发明第一实施例的调度系统的结构示意图;
图3是根据本发明第一实施例的JOB的状态跃迁示意图;
图4是根据本发明第二实施例的在业务实体侧执行的业务调度方法的流程图;
图5是根据本发明第二实施例的两级编址的示意图;
图6是根据本发明第三实施例的业务调度设备的结构图。
具体实施方式
以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
实施例一
本实施例提供一种在调度系统侧执行的业务调度方法。如图1所示,为根据本发明第一实施例的在调度系统侧执行的业务调度方法的流程图。
步骤S110,在启动系统时,为已经注册的JOB对应创建调度任务。
JOB是指工作实体,又称有限状态机。JOB为业务实体根据JOB模板封装该业务实体的业务逻辑得到的。
调度任务,用于将调度系统接收的消息派发给该消息的接收方JOB。
具体的,由于不同的业务实体负责不同类型的业务,为了区分不同类型的JOB(业务实体),并且在调度系统中可以准确找到一个JOB,所以JOB的通信信息具有唯一性。该通信信息可以是JOB的通信地址。
调度系统在系统启动时,扫描JOB注册表中各JOB的注册信息;根据JOB注册表中各JOB的注册信息,确定归属关系相同的JOB;创建调度任务,并将该调度任务与该归属关系相同的JOB进行绑定。
JOB注册表,用于供业务实体注册已经封装完成的JOB。
JOB注册表的本质是一个数组,数组中的每个成员为一个JOB。其中,每个成员的信息包括但不限于:JOB名字、堆栈大小、调度任务的优先级、调度任务索引、JOB入口函数。每个成员的信息还可以包括JOB类型、JOB实例、JOB的通信信息等。
归属关系相同的JOB是指可以通过同一调度任务进行调度管理的多个JOB。例如:多个JOB间的堆栈大小、调度任务的优先级和调度任务索引相同。
下面给出一段JOB注册表的代码表示形式:
T_ossJobCreatReg g_atJobRegTbl[]=
{
/*JobType Pri SchIndex Instance Name Entry StckSize DataSize Flags*/
{SVR_TYPE_TEST1,10,20,TEST1_JOB_INSTNUM,"tTestJob1",&Test1_Entry,8192,4096,TEST1_FUNBITS},
{SVR_TYPE_TEST2,10,15,TEST2_JOB_INSTNUM,"tTestJob2",&Test2_Entry,8192,4096,TEST2_FUNBITS},
};
其中,JobType描述JOB类型,Pri描述调度任务的优先级,SchIndex描述调度任务索引,Instance描述JOB实例,Name描述JOB名称,Entry描述JOB入口函数,StckSizeDataSize Flags描述堆栈大小。
调度系统在系统启动时,扫描该JOB注册表,完成资源申请,为归属关系相同的JOB对应创建调度任务,在调度任务初始化之后,使调度任务为其对应的JOB派发一条启动消息,驱动各JOB进入工作状态,准备处理消息。
进一步地,如果一个JOB和其他JOB的归属关系都不相同,则将该JOB单独看做一组归属关系相同的JOB,并为该JOB单独对应创建调度任务。
进一步地,调度任务以线程的形式存在。调度任务在初始化时,创建用于收发信息的套接字并在调度系统进行资源申请,在稳定下,调度任务的套接字接收调度系统发送的消息,调度任务将该消息派发给对应的JOB,驱动该JOB对该消息进行逻辑处理。
步骤S120,接收用于发送给所述JOB的消息。
调度系统包括消息收发接口,消息收发接口是JOB与外界交互的渠道。调度系统通过消息收发接口接收调度系统外部发送给JOB的消息,也可以通过消息收发接口将JOB向调度系统外部发送的消息发送出去。
在本实施例中。调度系统的消息收发接口接收到的消息包括消息头。该消息头记录了发送信息和接收信息。发送消息为消息发送方的地址信息。接收信息为消息接收方的地址信息。
步骤S130,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,以便所述JOB对所述消息执行逻辑处理。
在消息收发接口接收到消息之后,查询通信信息与该消息的接收信息相同的JOB;确定该JOB对应的调度任务;将该消息发送给该调度任务,并由该调度任务将该消息派发给该JOB。进一步地,根据消息中携带的接收信息,以及各个JOB的通信信息,可以确定通信信息与该接收信息相同的JOB,该JOB即是该消息需要到达的JOB。其中,JOB的通信信息可以预先注册在JOB注册表中,或者由JOB主动发送给调度系统。
在本实施例中,每个调度任务可以对应一个或多个JOB。对于调度任务只对应一个JOB的情况,称之为一级调度;对于调度任务对应多个JOB的情况,称之为二级调度。
当调度任务对应一个JOB时,即在执行一级调度时,调度系统将消息发送给调度任务的套接字,并由调度任务将套接字接收的消息派发给JOB;其中,套接字是调度任务在初始化时创建的。
当调度任务对应多个JOB时,即在执行二级调度时,调度系统将消息发送给调度任务的套接字,由调度任务根据消息的接收信息以及多个JOB中的每个JOB的通信信息,确定通信信息与消息的接收信息相同的JOB,并将套接字接收的消息派发给通信信息与消息的接收信息相同的JOB。
例如:如图2所示,为根据本发明第一实施例的调度系统的结构示意图。调度任务A对应JOB1、JOB2和JOB3。调度任务A从套接字a接收到的消息后,调度任务A需要做二次派发,先解析消息头,确定该消息的接收方JOB是JOB1、JOB2或者JOB3,然后保存调度任务的上下文信息,跳转到接收方JOB的上下文,执行消息派发;在接收方JOB消息处理完成后,调度任务A再回到调度任务上下文,等待接收下一条消息。调度任务B对应一个JOB0,调度任务B从套接字b接收到消息后,将该消息派发给该JOB0来处理这个消息,在JOB0消息处理完成后,回到调度任务上下文,等待接收下一条消息。
在本实施例中,在调度任务将消息派发给JOB之前,还需要使调度任务根据该JOB的状态,确定该JOB是否正在等待消息;如果是,则保存调度任务的上下文信息,跳转到该JOB的上下文,并将该消息派发给该JOB;如果否,则将该消息缓存到调度任务的任务消息队列中,继续确定该JOB是否正在等待消息,直到确定该JOB正在等待消息为止,从任务消息队列中获取该消息,保存调度任务的上下文信息,跳转到该JOB的上下文,并将该消息派发给该JOB;在该JOB完成对派发的该消息的逻辑处理之后,根据保存的调度任务的上下文信息,跳转回调度任务的上下文。
进一步地,JOB的状态包括:阻塞状态、运行状态和同步阻塞状态。
如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;
如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;
如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
如图3所示,为根据本发明第一实施例的JOB的状态跃迁示意图。JOB在阻塞状态下获得调度任务派发的消息或者获得了资源,状态跃迁到运行状态;在运行状态下,如果JOB开始等待消息或者资源,则从运行状态跃迁到阻塞状态;当然,本实施例主要描述消息的调度过程,所以,JOB在阻塞状态下可以处理消息,在运行状态下,暂时不可以处理消息。在一些需要数据同步的应用场景中,JOB在发出同步消息之后状态处于同步阻塞状态,在收到该同步消息对应的应答消息或者同步超时消息之后,状态跃迁到运行状态,在应答消息或者同步超时消息处理完成之后,状态跃迁到阻塞状态。
在本实施例中,如果所述调度任务对应多个JOB,则使调度任务在接收到多个JOB中的其中一个JOB发送给另一个JOB的消息之后,将该消息存储到另一个JOB对应的待处理消息队列中,以使另一个JOB从待处理消息队列中获取该消息。进一步地,调度任务可以为对应的每个JOB设置待处理消息队列。当归属同一个调度任务下的两个二级JOB之间通信时,该调度任务可以将该消息缓存到接收方JOB的待处理消息队列中,避免所有消息都从套接字接收,再派发给接收方JOB,该方式可以有效提高调度系统的性能。
在本实施例中,如果JOB需要向调度系统外部发送消息,则可以通过该JOB对应的调度任务的套接字,将该消息发送给调度系统的消息收发接口,通过该消息收发接口将该消息发送出去。在该消息的消息头中包括接收信息和发送信息。该接收信息为接收方的地址信息,发送信息为发送方的地址信息。
本实施例的业务调度方法可以作为一种通用的调度通信框架,将上层的业务实体抽象为一个由消息驱动的有限状态机,该有限状态机即是JOB(工作实体),JOB在收到消息之后,只需要关注业务逻辑,负责执行相应的逻辑处理流程即可,无需关注底层的调度机制,从而可以最大程度的实现功能复用,降低实现复杂度,避免资源浪费,有助于业务实体版本的快速更新。
本实施例封装出一套通用的消息收发接口,借助编址机制将该消息投递到具体的消息接收方,并由调度任务完成消息派发,驱动接收方JOB完成该消息的逻辑处理,从而实现消息从产生、传输到投递、消费一个完整的大循环。
实施例二
本实施例提供一种在业务实体侧执行的业务调度方法。如图4所示,为根据本发明第二实施例的在业务实体侧执行的业务调度方法的流程图。
步骤S410,获取JOB模板。
可以从预设的JOB模板服务器或者调度系统的存储装置获取JOB模板。
JOB模板可以供业务实体参考实现该业务实体的业务逻辑。
JOB模板本质上是一段函数,入口参数包括但不限于:JOB的状态、消息号、消息体、消息字节序。
下面给出一段JOB模板的代码表示形式:
其中,JobState描述JOB的状态,MsgId描述消息号,MsgData描述消息体,ByteOrder描述消息字节序。
进一步地,JOB的状态包括:阻塞状态、运行状态和同步阻塞状态。
如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;
如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;
如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
步骤S420,根据所述JOB模板,将所述业务实体的业务逻辑封装成JOB。
JOB本质上是一个受消息驱动做相应逻辑处理的函数。根据JOB模板进行封装之后,JOB的入口参数包括但不限于:JOB的状态、消息号、消息体、消息字节序。
步骤S430,注册所述JOB,以便调度系统为所述JOB对应创建调度任务。
业务实体在参考JOB模板完成业务逻辑封装之后,可以得到该业务实体的JOB实现,将该JOB在JOB注册表进行登记,从而将该业务实体对应的JOB整合到调度系统中。
JOB在初始状态下,接收到调度任务发来的启动消息,执行资源申请,转入工作状态,在工作状态下,准备处理调度任务派发的消息。在工作态下,每接收到一条消息,就对该消息执行对应的逻辑处理。
JOB的通信信息具有唯一性。该通信信息可以是JOB的通信地址。
在本实施例中,每个JOB具有唯一的通信地址是JOB能够通信的前提,本实施例提供一种两级编址方式,为JOB设置通信地址。
在本实施例中,两级编址包括:进程级编址和JOB级编址。
进程级编址:为每个业务实体(JOB)对应的进程配置一个全局唯一的通信地址,将进程的通信地址称之为ComID。为方便识别,将ComID进一步划段,根据进程所归属的服务类型(Service Type)、服务实例(Service Instance)、模块类型(Unit Type)、模块实例(UnitInstance),形成该进程的通信地址。即:进程的ComID=Service Type+Service Instance+Unit Type+Unit Instance。
JOB级编址:为每个JOB配置JOB ID,JOB ID即JNO,JNO在JOB(业务实体)对应的进程内部唯一。JNO由JOB类型(JOB Type)和JOB实例(JOB Instance)组成,即:JNO=JOB Type+JOB Instance。这样可以支持同一进程起多份或同一线程起多份而形成的JOB多实例。
根据ComID和JNO就可以得到全局唯一的JOB通信地址,即:JOB的通信地址=JNO+ComID,该通信地址可以指向调度系统内唯一的JOB。
例如:如图5所示,为根据本发明第二实施例的两级编址的示意图。调度任务A下的JOB1和JOB2对应进程X,进程X的通信地址为ComID1,JOB1的JNO为JNO1,JOB2的JNO为JNO2;调度任务B下的JOB3对应进程Y,进程Y的通信地址为ComID2,JOB3的JNO为JNO3;那么,可以得到:JOB1的通信地址=JNO1+ComID1,JOB2的通信地址=JNO2+ComID1;JOB3的通信地址=JNO3+ComID2。
该二级编址过程可以在业务实体侧执行,在二级编址之后,可以由JOB将其通信地址发送给调度系统,也可以在注册JOB时,将通信地址作为注册信息注册到JOB注册表中。
步骤S440,在工作状态下,如果接收到所述JOB对应的调度任务发送的消息,则对所述消息执行逻辑处理。
JOB对接收到的每个消息执行对应的处理逻辑,并跃迁JOB的状态。
如果接收的消息的结构与本JOB可处理的消息结构不同,则先对接收到的消息执行格式转换,再对格式转换后的消息执行逻辑处理。例如:对从异构CPU(CentralProcessing Unit,中央处理器)节点发来的消息,JOB在处理该消息之前,对该消息执行字节序转化。
本实施例的业务实体只需要按照JOB模板,将业务逻辑以JOB形式实现进行封装,并登记到JOB注册表中,后续JOB的运转完全由调度任务负责,大大减少了实现复杂度。
本实施例借助统一调度通信框架,上层的业务实体能专注于业务逻辑的实现,不用关心底层系统如何运转,消息交互如何实现。本实施例极大地缩短业务实体的开发时间,提升了代码的复用率,为各种业务应用快速推出新版本提供了保障。
实施例三
本实施例提供一种业务调度设备。如图6所示,为根据本发明第三实施例的业务调度设备的结构图。
在本实施例中,基于业务调度设备,包括但不限于:处理器610、存储器620。处理器610用于执行存储器620中存储的业务调度程序,以实现权利要求上述在调度系统侧执行的业务调度方法,或者实现上述在业务实体侧执行的业务调度方法。
具体而言,所述处理器610用于执行存储器620中存储的业务调度程序,以实现以下在调度系统侧执行的业务调度方法的步骤:在启动系统时,为已经注册的工作实体JOB对应创建调度任务;其中,所述JOB为业务实体根据JOB模板封装所述业务实体的业务逻辑得到的;接收用于发送给所述JOB的消息;通过所述JOB对应的调度任务,将所述消息派发给所述JOB,以便所述JOB对所述消息执行逻辑处理。
其中,所述为已经注册的JOB对应创建调度任务,包括:扫描JOB注册表中各JOB的注册信息;根据JOB注册表中各JOB的注册信息,确定归属关系相同的JOB;创建调度任务,并将所述调度任务与所述归属关系相同的JOB进行绑定。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:在消息收发接口接收到消息之后,查询通信信息与所述消息的接收信息相同的JOB;确定所述JOB对应的调度任务;将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB。
其中,当所述调度任务对应一个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,并由所述调度任务将所述套接字接收的所述消息派发给所述JOB;其中,所述套接字是所述调度任务在初始化时创建的;当所述调度任务对应多个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,由所述调度任务根据所述消息的接收信息以及所述多个JOB中的每个JOB的通信信息,确定通信信息与所述消息的接收信息相同的JOB,并将所述套接字接收的消息派发给通信信息与所述消息的接收信息相同的JOB。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:使所述调度任务根据所述JOB的状态,确定所述JOB是否正在等待消息;如果是,则保存所述调度任务的上下文信息,跳转到所述JOB的上下文,并将所述消息派发给所述JOB;如果否,则将所述消息缓存到所述调度任务的任务消息队列中,继续确定所述JOB是否正在等待消息;在所述JOB完成对派发的所述消息的逻辑处理之后,根据保存的所述调度任务的上下文信息,跳转回所述调度任务的上下文。
其中,根据所述JOB的状态,确定所述JOB是否正在等待消息,包括:如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
其中,所述方法还包括:如果所述调度任务对应多个JOB,则使所述调度任务在接收到所述多个JOB中的其中一个JOB发送给另一个JOB的消息之后,将所述消息存储到所述另一个JOB对应的待处理消息队列中,以使所述另一个JOB从所述待处理消息队列中获取所述消息。
具体而言,所述处理器610用于执行存储器620中存储的业务调度程序,以实现以下在业务实体侧执行的业务调度方法的步骤:获取JOB模板;根据所述JOB模板,将所述业务实体的业务逻辑封装成JOB;注册所述JOB,以便调度系统为所述JOB对应创建调度任务;在工作状态下,如果接收到所述JOB对应的调度任务发送的消息,则对所述消息执行逻辑处理。
实施例四
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在调度系统侧执行的业务调度方法,或者实现上述在业务实体侧执行的业务调度方法。
所述处理器用于执行存储器中存储的业务调度程序,以实现以下在调度系统侧执行的业务调度方法的步骤:在启动系统时,为已经注册的工作实体JOB对应创建调度任务;其中,所述JOB为业务实体根据JOB模板封装所述业务实体的业务逻辑得到的;接收用于发送给所述JOB的消息;通过所述JOB对应的调度任务,将所述消息派发给所述JOB,以便所述JOB对所述消息执行逻辑处理。
其中,所述为已经注册的JOB对应创建调度任务,包括:扫描JOB注册表中各JOB的注册信息;根据JOB注册表中各JOB的注册信息,确定归属关系相同的JOB;创建调度任务,并将所述调度任务与所述归属关系相同的JOB进行绑定。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:在消息收发接口接收到消息之后,查询通信信息与所述消息的接收信息相同的JOB;确定所述JOB对应的调度任务;将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB。
其中,当所述调度任务对应一个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,并由所述调度任务将所述套接字接收的所述消息派发给所述JOB;其中,所述套接字是所述调度任务在初始化时创建的;当所述调度任务对应多个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:将所述消息发送给所述调度任务的套接字,由所述调度任务根据所述消息的接收信息以及所述多个JOB中的每个JOB的通信信息,确定通信信息与所述消息的接收信息相同的JOB,并将所述套接字接收的消息派发给通信信息与所述消息的接收信息相同的JOB。
其中,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:使所述调度任务根据所述JOB的状态,确定所述JOB是否正在等待消息;如果是,则保存所述调度任务的上下文信息,跳转到所述JOB的上下文,并将所述消息派发给所述JOB;如果否,则将所述消息缓存到所述调度任务的任务消息队列中,继续确定所述JOB是否正在等待消息;在所述JOB完成对派发的所述消息的逻辑处理之后,根据保存的所述调度任务的上下文信息,跳转回所述调度任务的上下文。
其中,根据所述JOB的状态,确定所述JOB是否正在等待消息,包括:如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
其中,所述方法还包括:如果所述调度任务对应多个JOB,则使所述调度任务在接收到所述多个JOB中的其中一个JOB发送给另一个JOB的消息之后,将所述消息存储到所述另一个JOB对应的待处理消息队列中,以使所述另一个JOB从所述待处理消息队列中获取所述消息。
所述处理器用于执行存储器中存储的业务调度程序,以实现以下在业务实体侧执行的业务调度方法的步骤:获取JOB模板;根据所述JOB模板,将所述业务实体的业务逻辑封装成JOB;注册所述JOB,以便调度系统为所述JOB对应创建调度任务;在工作状态下,如果接收到所述JOB对应的调度任务发送的消息,则对所述消息执行逻辑处理。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种业务调度方法,其特征在于,在调度系统侧执行,包括:
在启动系统时,为已经注册的工作实体JOB对应创建调度任务;其中,所述JOB为业务实体根据JOB模板封装所述业务实体的业务逻辑得到的;
接收用于发送给所述JOB的消息;
通过所述JOB对应的调度任务,将所述消息派发给所述JOB,以便所述JOB对所述消息执行逻辑处理。
2.根据权利要求1所述的方法,其特征在于,所述为已经注册的JOB对应创建调度任务,包括:
扫描JOB注册表中各JOB的注册信息;
根据JOB注册表中各JOB的注册信息,确定归属关系相同的JOB;
创建调度任务,并将所述调度任务与所述归属关系相同的JOB进行绑定。
3.根据权利要求1所述的方法,其特征在于,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:
在消息收发接口接收到消息之后,查询通信信息与所述消息的接收信息相同的JOB;
确定所述JOB对应的调度任务;
将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB。
4.根据权利要求3所述的方法,其特征在于,
当所述调度任务对应一个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:
将所述消息发送给所述调度任务的套接字,并由所述调度任务将所述套接字接收的所述消息派发给所述JOB;其中,所述套接字是所述调度任务在初始化时创建的;
当所述调度任务对应多个JOB时,将所述消息发送给所述调度任务,并由所述调度任务将所述消息派发给所述JOB,包括:
将所述消息发送给所述调度任务的套接字,由所述调度任务根据所述消息的接收信息以及所述多个JOB中的每个JOB的通信信息,确定通信信息与所述消息的接收信息相同的JOB,并将所述套接字接收的消息派发给通信信息与所述消息的接收信息相同的JOB。
5.根据权利要求1所述的方法,其特征在于,通过所述JOB对应的调度任务,将所述消息派发给所述JOB,包括:
使所述调度任务根据所述JOB的状态,确定所述JOB是否正在等待消息;
如果是,则保存所述调度任务的上下文信息,跳转到所述JOB的上下文,并将所述消息派发给所述JOB;
如果否,则将所述消息缓存到所述调度任务的任务消息队列中,继续确定所述JOB是否正在等待消息;
在所述JOB完成对派发的所述消息的逻辑处理之后,根据保存的所述调度任务的上下文信息,跳转回所述调度任务的上下文。
6.根据权利要求5所述的方法,其特征在于,根据所述JOB的状态,确定所述JOB是否正在等待消息,包括:
如果所述JOB的状态为阻塞状态,则确定所述JOB正在等待消息;
如果所述JOB的状态为运行状态,则确定所述JOB正在处理消息;
如果所述JOB的状态为同步阻塞状态,则确定所述JOB正在等待消息;
其中,在同步阻塞状态下,所述JOB正在等待的消息为所述JOB已经发出的同步消息所对应的应答消息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述调度任务对应多个JOB,则使所述调度任务在接收到所述多个JOB中的其中一个JOB发送给另一个JOB的消息之后,将所述消息存储到所述另一个JOB对应的待处理消息队列中,以使所述另一个JOB从所述待处理消息队列中获取所述消息。
8.一种业务调度方法,其特征在于,在业务实体侧执行,包括:
获取JOB模板;
根据所述JOB模板,将所述业务实体的业务逻辑封装成JOB;
注册所述JOB,以便调度系统为所述JOB对应创建调度任务;
在工作状态下,如果接收到所述JOB对应的调度任务发送的消息,则对所述消息执行逻辑处理。
9.一种业务调度设备,其特征在于,所述业务调度设备包括处理器和存储器;所述处理器用于执行所述存储器中存储的业务调度程序,以实现权利要求1~7中任一项所述的业务调度方法,或者实现权利要求8所述的业务调度方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的业务调度方法,或者实现权利要求8所述的业务调度方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811340426.6A CN111176799A (zh) | 2018-11-12 | 2018-11-12 | 一种业务调度方法、设备和存储介质 |
PCT/CN2019/117195 WO2020098610A1 (zh) | 2018-11-12 | 2019-11-11 | 一种业务调度方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811340426.6A CN111176799A (zh) | 2018-11-12 | 2018-11-12 | 一种业务调度方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111176799A true CN111176799A (zh) | 2020-05-19 |
Family
ID=70653492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811340426.6A Pending CN111176799A (zh) | 2018-11-12 | 2018-11-12 | 一种业务调度方法、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111176799A (zh) |
WO (1) | WO2020098610A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016032A (zh) * | 2023-01-06 | 2023-04-25 | 广西电子口岸有限公司 | 一种海关业务复杂报文封装方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10394849B2 (en) * | 2006-09-18 | 2019-08-27 | EMC IP Holding Company LLC | Cascaded discovery of information environment |
US9626632B2 (en) * | 2007-03-26 | 2017-04-18 | International Business Machines Corporation | Apparatus, system, and method for logically packaging and delivering a service offering |
CN102004742A (zh) * | 2009-09-01 | 2011-04-06 | 上海杉达学院 | 多层数据库访问结构 |
CN106301885A (zh) * | 2016-07-18 | 2017-01-04 | 乐视控股(北京)有限公司 | 统一业务管理的方法和系统 |
CN107797803A (zh) * | 2017-11-03 | 2018-03-13 | 深圳市沃特沃德股份有限公司 | 车载系统中的业务逻辑封装方法及装置 |
-
2018
- 2018-11-12 CN CN201811340426.6A patent/CN111176799A/zh active Pending
-
2019
- 2019-11-11 WO PCT/CN2019/117195 patent/WO2020098610A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116016032A (zh) * | 2023-01-06 | 2023-04-25 | 广西电子口岸有限公司 | 一种海关业务复杂报文封装方法 |
CN116016032B (zh) * | 2023-01-06 | 2023-08-11 | 广西电子口岸有限公司 | 一种海关业务报文封装方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020098610A1 (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3913859A1 (en) | Vnf life cycle management method and apparatus | |
CN110134534B (zh) | 基于nio针对大数据分布式系统进行消息处理优化的系统及方法 | |
CN111597061A (zh) | 一种客户端或服务端进行远程过程调用方法及装置 | |
CN111708619B (zh) | 基于消息队列和数据库的分布式事务处理方法及系统 | |
CN1512370A (zh) | 基于构件的用户自定义事件机制 | |
US11948021B2 (en) | Method for inter-core communication, processor, inter-core communication system and computer readable storage medium | |
CN110764935A (zh) | 一种基于实时操作系统的任务间消息高效传递方法 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN108737397B (zh) | 一种实现路由器中业务与协议栈之间数据交互的方法 | |
CN111176799A (zh) | 一种业务调度方法、设备和存储介质 | |
US20040098364A1 (en) | Concurrent operation of a state machine family | |
EP3193253A1 (en) | Method, apparatus and system for displaying names of virtual machine | |
CN111124618B (zh) | 资源部署方法、装置、存储介质及设备 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN113342456A (zh) | 一种连接方法、装置、设备和存储介质 | |
US11797342B2 (en) | Method and supporting node for supporting process scheduling in a cloud system | |
WO2021155924A1 (en) | Identifying an instance of a virtual network function | |
US11340949B2 (en) | Method and node for managing a request for hardware acceleration by means of an accelerator device | |
CN102681881B (zh) | 跨机调度方法及其系统 | |
CN111427634A (zh) | 一种原子服务调度的方法及装置 | |
WO2023050410A1 (zh) | 工作流操作的方法和装置 | |
US20230195546A1 (en) | Message Management Method and Apparatus, and Serverless System | |
CN116389559A (zh) | 一种服务部署及服务间通信方法、装置、设备及介质 | |
CN114610469A (zh) | 一种任务统一调度的方法、系统及介质 | |
CN117806909A (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 |