CN115904636A - 事件分发方法、事件分发装置、存储介质与电子设备 - Google Patents

事件分发方法、事件分发装置、存储介质与电子设备 Download PDF

Info

Publication number
CN115904636A
CN115904636A CN202211154179.7A CN202211154179A CN115904636A CN 115904636 A CN115904636 A CN 115904636A CN 202211154179 A CN202211154179 A CN 202211154179A CN 115904636 A CN115904636 A CN 115904636A
Authority
CN
China
Prior art keywords
node
nodes
distribution
target
event
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
Application number
CN202211154179.7A
Other languages
English (en)
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN202211154179.7A priority Critical patent/CN115904636A/zh
Publication of CN115904636A publication Critical patent/CN115904636A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本公开提供一种事件分发方法、装置、存储介质与电子设备,涉及计算机技术领域,该事件分发方法包括:基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。本公开基于待分发节点间的依赖关系将目标事件进行分发,能够提升系统处理的效率及系统运行的稳定性。

Description

事件分发方法、事件分发装置、存储介质与电子设备
背景技术
在系统运行过程中,可能会存在多个模块监测同一事件发生的情况。若某一事件被触发,则该事件的触发者需要将该事件分发至监测该事件发生的模块中。
相关技术中,监测某一事件发生的模块会通过添加委托者的方式向该事件的触发者进行注册,触发者依据注册的先后顺序依次向相应的模块分发事件。由于业务快速迭代,各个模块的注册顺序可能会发生变化,可能会导致各模块获取事件的顺序发生变化,使得模块无法及时获取到所需数据,从而影响到系统的处理效率和平稳运行。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开提供了一种事件分发方法、事件分发装置、计算机可读存储介质与电子设备,进而至少在一定程度上解决相关技术中系统的处理效率和运行稳定性较低的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种事件分发方法,所述方法包括:基于针对目标事件所注册的节点信息,确定所述目标事件对应的多个待分发节点;基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点。
在本公开的一种示例性实施例中,在基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序之前,所述方法还包括:获取所述多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
在本公开的一种示例性实施例中,所述基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点,包括:依据所述多个待分发节点对应的事件分发状态,确定当前处理节点;基于所述当前处理节点所声明的依赖关系,确定所述当前处理节点对应的目标依赖节点,所述目标依赖节点为所述当前处理节点间直接或间接依赖的节点;按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态。
在本公开的一种示例性实施例中,所述按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态,包括:将当前节点组中没有依赖对象的节点作为预分发节点,所述当前节点组为所述当前处理节点以及所述目标依赖节点构成的节点组;为所述预分发节点分发所述目标事件;更新所述预分发节点的事件分发状态;从所述当前节点组中剔除所述预分发节点;若所述当前节点组非空,则重新确定新的预分发节点。
在本公开的一种示例性实施例中,所述按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态,包括:将当前节点组中没有依赖对象的节点作为预分发节点,所述当前节点组为所述当前处理节点以及所述目标依赖节点构成的节点组;将所述预分发节点添加至分发序列中;从所述当前节点组中剔除所述预分发节点;若所述当前节点组非空,则重新确定新的预分发节点;按照所述分发序列,将所述目标事件进行分发。
在本公开的一种示例性实施例中,所述将当前节点组中没有依赖对象的节点作为预分发节点,包括:若当前节点组中存在多个没有依赖对象的节点,则将所述多个没有依赖对象的节点中最先针对所述目标事件注册节点信息的节点作为预分发节点。
在本公开的一种示例性实施例中,所述依据所述多个待分发节点对应的事件分发状态,确定当前处理节点,包括:基于所述多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点。
在本公开的一种示例性实施例中,在按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点之前,所述方法还包括:判断所述当前处理节点与所述目标依赖节点中是否存在具有循环依赖关系的节点,若所述当前处理节点与所述目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
在本公开的一种示例性实施例中,所述判断所述当前处理节点与所述目标依赖节点中是否存在具有循环依赖关系的节点,包括:将所述当前处理节点与所述目标依赖节点按照依赖关系依次进行临时标记,若所述当前处理节点与所述目标依赖节点中存在节点被多次临时标记,则所述当前处理节点与所述目标依赖节点中存在具有循环依赖关系的节点。
根据本公开的第二方面,提供一种事件分发装置,所述装置包括:待分发节点确定模块,用于基于针对目标事件所注册的节点信息,确定所述目标事件对应的多个待分发节点;事件分发模块,用于基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点。
根据本公开的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述事件分发方法。
根据本公开的第四方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述事件分发方法。
本公开的技术方案具有以下有益效果:
上述事件分发过程中,基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。一方面,基于待分发节点间的依赖关系将目标事件进行分发,使得待分发节点减少了等待其所依赖的节点接收分发事件的时间,使得待分发节点在接收到分发事件后,能够及时进行响应,在一定程度上提升了系统的处理效率。另一方面,基于待分发节点间的依赖关系将目标事件进行分发,能够在一定程度上避免待分发节点在接收到分发事件后由于其所依赖的节点未准备好数据而无法进一步处理的问题,降低了数据处理异常的风险,在一定程度上提升了系统运行的稳定性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施方式,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本示例性实施方式中一种事件分发方法的流程图;
图2示出本示例性实施方式中一种将目标事件进行分发的流程图;
图3示出本示例性实施方式中一种将目标事件分发给当前处理节点以及目标依赖节点的流程图;
图4示出本示例性实施方式中另一种将目标事件分发给当前处理节点以及目标依赖节点的流程图;
图5示出本示例性实施方式中一种将目标事件分发给待分发节点的流程图;
图6A示出本示例性实施方式中一种节点A9、B9、C9、D9、E9间依赖关系的实例图;
图6B示出本示例性实施方式中一种节点A9、B9、C9、D9间依赖关系的实例图;
图6C示出本示例性实施方式中一种节点A9、B9、C9间依赖关系的实例图;
图6D示出本示例性实施方式中一种节点A9、C9间依赖关系的实例图;
图7示出本示例性实施方式中一种事件分发装置的结构框图;
图8示出本示例性实施方式中一种用于实现上述事件分发方法的电子设备。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
本说明书中使用用语“一个”、“一”、“该”和“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
相关技术中,某一事件的触发者根据模块向触发者注册的先后顺序进行事件分发,从最先注册的模块开始遍历到最后注册的模块,最先被遍历到的模块,将优先接收到事件的发生。各个模块的注册顺序发生变化时,各模块被分发事件的顺序也会发生变化,由于模块之间可能会存在数据依赖,例如模块一依赖于模块二,如果模块一先于模块二接收到事件,此时模块二仍未将数据准备好,模块一需要等待模块二处理完毕后再进行处理,在该过程中模块一可能会因为找不到数据而发生异常,进而影响到系统的处理效率和平稳运行状态。
鉴于上述一个或多个问题,本公开的示例性实施方式提供一种事件分发方法和事件分发装置,以实现对事件的高效分发。
本公开的示例性实施方式提供一种事件分发方法,如图1所示,具体可包括以下步骤S110至步骤S120:
步骤S110,基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;
步骤S120,基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。
上述事件分发过程中,一方面,基于待分发节点间的依赖关系将目标事件进行分发,使得待分发节点减少了等待其所依赖的节点接收分发事件的时间,使得待分发节点在接收到分发事件后,能够及时进行响应,在一定程度上提升了系统的处理效率。另一方面,基于待分发节点间的依赖关系将目标事件进行分发,能够在一定程度上避免待分发节点在接收到分发事件后由于其所依赖的节点未准备好数据而无法进一步处理的问题,降低了数据处理异常的风险,在一定程度上提升了系统运行的稳定性。
下面分别对图1中的每个步骤进行具体说明。
步骤S110,基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点。
目标事件可以是系统在运行过程中所触发的事件,可例如:用户登录事件、聊天消息接收事件等。
节点可以是系统中的各类模块。当目标事件被触发后,系统中的模块节点可以通过委托者模式针对目标事件预先进行注册,可以将针对目标事件进行注册的模块节点作为待分发节点。具体的,系统中的模块节点可以通过添加委托者的方式向目标事件的触发者进行注册,得到委托者列表,可以将委托者列表中所包含的这些模块节点作为待分发节点。
需要说明的是,系统中的模块节点可预先针对目标事件进行注册。在进行注册时,可采用其所对应的节点信息进行注册。节点信息可以包括节点所对应的模块信息,例如节点对应的功能、编号等信息。
系统中的模块节点针对目标事件进行注册后,可以获取针对目标事件所注册的节点信息,并通过查询针对目标事件所注册的节点信息进一步确定该目标事件对应的待分发节点。
需要说明的是,若存在一个待分发节点,则可直接将目标事件进行分发。若存在多个待分发节点,即步骤S110所描述的状态,则可通过执行步骤S120将目标事件分发至这些待分发节点。
步骤S120,基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。
依赖关系指的是节点之间的数据依赖关系。示例性的,若节点A1需要用到经过节点B1处理后的数据进行处理,则节点A1依赖于节点B1,节点A1可声明依赖于节点B1。
在一种可选的实施方式中,在基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序之前,还可以获取多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
待分发节点在针对目标事件进行注册时,可声明其所对应的依赖关系。以便于通过获取待分发节点的依赖关系,优化事件分发流程。
基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,具体的,可预先将没有依赖关系的待分发节点作为第一批分发节点,然后将依赖于该第一批分发节点的待分发节点作为第二批分发节点,以此类推,直到目标事件被分发至所有待分发节点。
示例性的,待分发节点包括节点A2、节点B2、节点C2、节点D2,其中,节点A2依赖于节点B2,节点B2依赖于节点C2,节点C2依赖于节点D2,则事件分发顺序可以为节点D2、节点C2、节点B2、节点A2。
在确定分发顺序后,可以按照该分发顺序将目标事件依次分发给这些待分发节点。
在一种可选的实施方式中,步骤S120中基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点,可通过如图2所示的步骤来实现,具体可包括以下步骤:
步骤S210,依据多个待分发节点对应的事件分发状态,确定当前处理节点;
步骤S220,基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点,目标依赖节点为当前处理节点间直接或间接依赖的节点;
步骤S230,按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态。
图2所示的步骤中,通过确定当前处理节点以及目标依赖节点,并以一个节点组为单位,按照依赖关系进行分发,不仅能够提升事件分发效率,还能够减少数据处理异常的发生。此外,通过及时更新节点的事件分发状态,还避免了节点被重复分发事件的情况。下面分别对图2所示的步骤进行具体说明。
具体的,步骤S210,依据多个待分发节点对应的事件分发状态,确定当前处理节点。
事件分发状态可包括已分发状态和未分发状态。若待分发节点已被分发目标事件,则该待分发节点对应的事件分发状态为已分发状态;若待分发节点未被分发目标事件,则该待分发节点对应的事件分发状态为未分发状态。
在依据多个待分发节点对应的事件分发状态确定当前处理节点时,具体的,可以从事件分发状态为未分发状态的待分发节点中提取一待分发节点作为当前处理节点。
在依据多个待分发节点对应的事件分发状态确定当前处理节点时,具体的,还可以基于多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点,能够避免事件分发的遗漏,以确保每个待分发节点都能被分发到目标事件。
示例性的,待分发节点包括节点A3、节点B3、节点C3、节点D3,针对目标事件的节点信息注册顺序为节点A3、节点B3、节点C3、节点D3,其中节点A3和节点B3对应的事件分发状态为已分发状态,节点C3和节点D3对应的事件分发状态为未分发状态,则可将节点C3作为当前处理节点。
具体的,步骤S220,基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点,目标依赖节点为当前处理节点间直接或间接依赖的节点。
可以基于当前处理节点所声明的依赖关系,从事件分发状态为未分发状态的待分发节点中确定当前处理节点对应的目标依赖节点。目标依赖节点可以为当前处理节点间直接或间接依赖的节点。
需要说明的是,若当前处理节点不存在目标依赖节点,则可直接向该当前处理节点分发目标事件;若当前处理存在一个或多个目标依赖节点,则可以通过执行步骤S230进行事件分发。
具体的,步骤S230,按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态。
示例性的,当前处理节点为节点A4,节点A4对应的目标依赖节点包括节点B4、节点C4、节点D4,其中当前处理节点A4以及目标依赖节点B4、C4、D4之间的依赖关系为:节点A4依赖于节点B4,节点B4依赖于节点C4,节点C4依赖于节点D4,则可按照节点D4、节点C4、节点B4、节点A4的顺序依次进行事件分发。
将目标事件分发给当前处理节点以及目标依赖节点后,可将当前处理节点的事件分发状态以及目标依赖节点的事件分发状态由未分发状态更新为已分发状态。可选的,在实际应用过程中,当事件分发状态由为分发状态更新为已分发状态时,可以将发生状态更新的节点进行分发标记,认为具有分发标记符号的节点已被分发了目标事件,没有分发标记符号的节点还未被分发目标事件,以避免节点被重复分发事件。
在一种可选的实施方式中,步骤S230中按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,具体可以通过以下步骤来实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;为预分发节点分发目标事件;更新预分发节点的事件分发状态;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点。
如图3所提供的一种将目标事件分发给当前处理节点以及目标依赖节点的流程图所示,具体可包括以下步骤:
步骤S310,将当前节点组中没有依赖对象的节点作为预分发节点;
步骤S320,为预分发节点分发目标事件;
步骤S330,更新预分发节点的事件分发状态;
步骤S340,从当前节点组中剔除预分发节点;
步骤S350,判断当前节点组是否非空,若是,则跳转至步骤S310,若否,则执行步骤S360;
步骤S360,结束。
其中,当前节点组为当前处理节点以及目标依赖节点构成的节点组,可通过在节点组中循环确定新的预分发节点分发目标事件,并不断更新当前节点组中所包含的节点,直到当前节点组为空。
上述步骤中,通过查找当前节点组中节点的依赖关系,为当前节点组中的节点实时分发目标事件,以便于接收分发事件的节点尽可能不受其他节点处理的影响,能够及时进行相应的处理。
在一种可选的实施方式中,上述按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,具体还可以通过以下步骤来实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;将预分发节点添加至分发序列中;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点;按照分发序列,将目标事件进行分发。
如图4所提供的另一种将目标事件分发给当前处理节点以及目标依赖节点的流程图所示,具体可以包括以下步骤:
步骤S410,将当前节点组中没有依赖对象的节点作为预分发节点;
步骤S420,将预分发节点添加至分发序列中;
步骤S430,从当前节点组中剔除预分发节点;
步骤S440,判断当前节点组是否非空,若是,则跳转至步骤S410,若否,则执行步骤S450;
步骤S450,按照分发序列,将目标事件进行分发。
步骤S460,结束。
其中,当前节点组为当前处理节点以及目标依赖节点构成的节点组,可通过在节点组中循环确定新的预分发节点,不断更新分发序列和当前节点组中所包含的节点,直到当前节点组为空。
上述步骤中,通过查找当前节点组中节点的依赖关系,确定分发序列,并以节点组为单位进行分发,以提升事件分发的处理效率。
需要说明的是,在确定预分发节点时,可以将最新的当前节点组中没有依赖对象的节点作为预分发节点。示例性的,最新的当前节点组包括节点A5、节点B5、节点C5,其中,节点A5依赖于节点B5,节点B5依赖于节点C5,由于节点C5没有依赖对象,则可将节点C5作为预分发节点。
在一种可选的实施方式中,若当前节点组中存在多个没有依赖对象的节点,上述将当前节点组中没有依赖对象的节点作为预分发节点,具体可通过以下步骤来实现:若当前节点组中存在多个没有依赖对象的节点,则可将多个没有依赖对象的节点中最先针对目标事件注册节点信息的节点作为预分发节点。
示例性的,当前节点组包括节点A6、节点B6、节点C6,其中,节点A6依赖于节点B6和节点C6,由于节点B6和节点C6均没有依赖对象,此时可根据节点B6和节点C6针对目标事件的注册节点信息的先后次序,确定预分发节点,若节点B6先于节点C6进行注册,则可将节点B6作为预分发节点。
由于在实际应用中,节点间依赖关系较为复杂,当前节点组中可能会存在多个没有依赖对象的节点的情况,上述步骤中,通过基于注册先后次序,可以唯一确定预分发节点,以便确保事件分发过程的平稳有序运行。
在一种可选的实施方式中,在按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点之前,还可以判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,若当前处理节点与目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
循环依赖关系指的是节点之间的依赖出现闭环关系,例如节点A7依赖于节点B7,节点B7依赖于节点A7,则节点A7和节点B7之间存在循环依赖关系。这种情况下无法得知谁先接收事件分发,可通过中止流程,抛出异常提示,以便及时修正节点间的依赖关系,进而提升系统的可靠性。
在一种可选的实施方式中,判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,具体可通过以下方式来实现:将当前处理节点与目标依赖节点按照依赖关系依次进行临时标记,若当前处理节点与目标依赖节点中存在节点被多次临时标记,则当前处理节点与目标依赖节点中存在具有循环依赖关系的节点。
示例性的,当前处理节点为A8,目标依赖节点包括节点B8、节点C8,则可将节点A8预先进行临时标记,若节点A8依赖于节点B8,则将节点B8也进行临时标记,若节点B8依赖于节点C8,则将节点C8也进行临时标记,若节点C8依赖于节点A8,这时节点A8已存在临时标记符号,可认为节点A8、节点B8、节点C8之间存在循环依赖关系。
若遍历当前处理节点与目标依赖节点所组成的节点组后,没有发现被多次临时标记的节点,则可认为当前处理节点与目标依赖节点中不存在具有循环依赖关系的节点,此时可删除当前处理节点与目标依赖节点的临时标记,并进行事件分发处理。
如图5所示,提供了一种将目标事件分发给待分发节点的流程图,具体可包括以下步骤:
步骤S510,基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;
步骤S520,依据这些待分发节点对应的事件分发状态,确定当前处理节点;
步骤S530,基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点;
步骤S540,按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态;
步骤S550,判断这些待分发节点中是否存在事件分发状态为未分发的节点,若是则跳转至步骤S520,若否则执行步骤S560;
步骤S560,结束。
图5所示的步骤中,通过循环处理遍历待分发节点,使得各待分发节点都能够接收到所分发的目标事件。
此外,下面还结合有向图对确定节点分发顺序的流程进一步展示说明。
示例性的,针对目标事件的节点信息注册顺序为:节点A9、节点B9、节点C9、节点D9、节点E9。
首先可从节点A9、节点B9、节点C9、节点D9、节点E9中确定预先接收目标事件分发的节点,节点间的依赖关系可如图6A中的有向图所示,其中箭头方向表示依赖方向,依赖关系为:节点A9依赖于节点B9和节点C9;节点B9和节点C9依赖于节点D9;节点B9和节点D9依赖于节点E9。由于节点E9不依赖于任何其他节点,即节点E9不存在依赖对象,可使得节点E9预先接收到目标事件的分发。
在确定节点E9的分发次序后,接着可从节点A9、节点B9、节点C9、节点D9中确定预先接收目标事件分发的节点,节点间的依赖关系可如图6B中的有向图所示,其中箭头方向表示依赖方向,依赖关系为:节点A9依赖于节点B9和节点C9;节点B9和节点C9依赖于节点D9。由于节点D9不依赖于任何其他节点,即节点D9不存在依赖对象,可使得节点D9预先接收到目标事件的分发。
在确定节点D9的分发次序后,接着可从节点A9、节点B9、节点C9中确定预先接收目标事件分发的节点,节点间的依赖关系可如图6C中的有向图所示,其中箭头方向表示依赖方向,依赖关系为:节点A9依赖于节点B9和节点C9。节点B9和节点C9不依赖于任何其他节点,即节点B9和节点C9不存在依赖对象,由于节点B9先于节点C9注册,可使得节点B9预先接收到目标事件的分发。
在确定节点B9的分发次序后,接着可从节点A9、节点C9中确定预先接收目标事件分发的节点,节点间的依赖关系可如图6D中的有向图所示,其中箭头方向表示依赖方向,依赖关系为:节点A9依赖于节点C9,由于节点C9不依赖于任何其他节点,可使得节点C9预先接收到目标事件的分发,节点A9最后接收目标事件分发。
通过上述分发处理方式,可得到节点A9、节点B9、节点C9、节点D9、节点E9的分发顺序为节点E9、节点D9、节点B9、节点C9、节点A9。
本公开的示例性实施方式还提供一种事件分发装置,如图7所示,该事件分发装置700可以包括:
待分发节点确定模块710,用于基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;
事件分发模块720,用于基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。
在一种可选的实施方式中,在基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序之前,事件分发装置700,还包括:依赖关系获取模块,用于获取多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
在一种可选的实施方式中,事件分发模块720,可以包括:当前处理节点确定模块,用于依据多个待分发节点对应的事件分发状态,确定当前处理节点;目标依赖节点确定模块,用于基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点,目标依赖节点为当前处理节点间直接或间接依赖的节点;事件分发子模块,用于按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态。
在一种可选的实施方式中,事件分发子模块,可以被配置为:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;为预分发节点分发目标事件;更新预分发节点的事件分发状态;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点。
在一种可选的实施方式中,事件分发子模块,还可以被配置为:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;将预分发节点添加至分发序列中;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点;按照分发序列,将目标事件进行分发。
在一种可选的实施方式中,事件分发子模块中将当前节点组中没有依赖对象的节点作为预分发节点,可以配置为:若当前节点组中存在多个没有依赖对象的节点,则将多个没有依赖对象的节点中最先针对目标事件注册节点信息的节点作为预分发节点。
在一种可选的实施方式中,当前处理节点确定模块,可以被配置为:基于多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点。
在一种可选的实施方式中,在执行事件分发子模块之前,事件分发模块720还可以包括:循环依赖关系检测模块,用于判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,若当前处理节点与目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
在一种可选的实施方式中,循环依赖关系检测模块中判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,可以被配置为:将当前处理节点与目标依赖节点按照依赖关系依次进行临时标记,若当前处理节点与目标依赖节点中存在节点被多次临时标记,则当前处理节点与目标依赖节点中存在具有循环依赖关系的节点。
上述事件分发装置700中各部分的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述事件分发方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
具体的,计算机可读存储介质上所存储的程序产品可使电子设备执行以下步骤:
基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;
基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。
在一种可选的实施方式中,在基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序之前,还可以执行以下步骤:获取多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
在一种可选的实施方式中,上述基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点,可以通过以下步骤实现:依据多个待分发节点对应的事件分发状态,确定当前处理节点;基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点,目标依赖节点为当前处理节点间直接或间接依赖的节点;按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态。
在一种可选的实施方式中,上述按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,可以通过以下步骤实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;为预分发节点分发目标事件;更新预分发节点的事件分发状态;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点。
在一种可选的实施方式中,上述按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,可以通过以下步骤实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;将预分发节点添加至分发序列中;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点;按照分发序列,将目标事件进行分发。
在一种可选的实施方式中,上述将当前节点组中没有依赖对象的节点作为预分发节点,可以通过以下步骤实现:若当前节点组中存在多个没有依赖对象的节点,则将多个没有依赖对象的节点中最先针对目标事件注册节点信息的节点作为预分发节点。
在一种可选的实施方式中,上述依据多个待分发节点对应的事件分发状态,确定当前处理节点,可以通过以下步骤实现:基于多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点。
在一种可选的实施方式中,在按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点之前,还可以执行以下步骤:判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,若当前处理节点与目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
在一种可选的实施方式中,上述判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,可以通过以下步骤实现:将当前处理节点与目标依赖节点按照依赖关系依次进行临时标记,若当前处理节点与目标依赖节点中存在节点被多次临时标记,则当前处理节点与目标依赖节点中存在具有循环依赖关系的节点。
上述事件分发过程中,一方面,基于待分发节点间的依赖关系将目标事件进行分发,使得待分发节点减少了等待其所依赖的节点接收分发事件的时间,使得待分发节点在接收到分发事件后,能够及时进行响应,在一定程度上提升了系统的处理效率。另一方面,基于待分发节点间的依赖关系将目标事件进行分发,能够在一定程度上避免待分发节点在接收到分发事件后由于其所依赖的节点未准备好数据而无法进一步处理的问题,降低了数据处理异常的风险,在一定程度上提升了系统运行的稳定性。
该程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在电子设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本公开的示例性实施方式还提供了一种能够实现上述事件分发方法的电子设备。下面参照图8来描述根据本公开的这种示例性实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本公开实施方式的功能和使用范围带来任何限制。
如图8所示,电子设备800可以以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830和显示单元840。
存储单元820存储有程序代码,程序代码可以被处理单元810执行,使得处理单元810执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
具体的,处理单元810可执行以下步骤:
基于针对目标事件所注册的节点信息,确定目标事件对应的多个待分发节点;
基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点。
在一种可选的实施方式中,在基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序之前,还可以执行以下步骤:获取多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
在一种可选的实施方式中,上述基于多个待分发节点所声明的依赖关系,确定多个待分发节点的分发顺序,并按照多个待分发节点的分发顺序,将目标事件依次分发给多个待分发节点,可以通过以下步骤实现:依据多个待分发节点对应的事件分发状态,确定当前处理节点;基于当前处理节点所声明的依赖关系,确定当前处理节点对应的目标依赖节点,目标依赖节点为当前处理节点间直接或间接依赖的节点;按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态。
在一种可选的实施方式中,上述按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,可以通过以下步骤实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;为预分发节点分发目标事件;更新预分发节点的事件分发状态;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点。
在一种可选的实施方式中,上述按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点,并更新当前处理节点的事件分发状态以及目标依赖节点的事件分发状态,可以通过以下步骤实现:将当前节点组中没有依赖对象的节点作为预分发节点,当前节点组为当前处理节点以及目标依赖节点构成的节点组;将预分发节点添加至分发序列中;从当前节点组中剔除预分发节点;若当前节点组非空,则重新确定新的预分发节点;按照分发序列,将目标事件进行分发。
在一种可选的实施方式中,上述将当前节点组中没有依赖对象的节点作为预分发节点,可以通过以下步骤实现:若当前节点组中存在多个没有依赖对象的节点,则将多个没有依赖对象的节点中最先针对目标事件注册节点信息的节点作为预分发节点。
在一种可选的实施方式中,上述依据多个待分发节点对应的事件分发状态,确定当前处理节点,可以通过以下步骤实现:基于多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点。
在一种可选的实施方式中,在按照当前处理节点以及目标依赖节点之间的依赖关系,将目标事件分发给当前处理节点以及目标依赖节点之前,还可以执行以下步骤:判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,若当前处理节点与目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
在一种可选的实施方式中,上述判断当前处理节点与目标依赖节点中是否存在具有循环依赖关系的节点,可以通过以下步骤实现:将当前处理节点与目标依赖节点按照依赖关系依次进行临时标记,若当前处理节点与目标依赖节点中存在节点被多次临时标记,则当前处理节点与目标依赖节点中存在具有循环依赖关系的节点。
上述事件分发过程中,一方面,基于待分发节点间的依赖关系将目标事件进行分发,使得待分发节点减少了等待其所依赖的节点接收分发事件的时间,使得待分发节点在接收到分发事件后,能够及时进行响应,在一定程度上提升了系统的处理效率。另一方面,基于待分发节点间的依赖关系将目标事件进行分发,能够在一定程度上避免待分发节点在接收到分发事件后由于其所依赖的节点未准备好数据而无法进一步处理的问题,降低了数据处理异常的风险,在一定程度上提升了系统运行的稳定性。
存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)821和/或高速缓存存储单元822,还可以进一步包括只读存储单元(ROM)823。
存储单元820还可以包括具有一组(至少一个)程序模块825的程序/实用工具824,这样的程序模块825包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图8所示,网络适配器860通过总线830与电子设备800的其它模块通信。应当明白,尽管图8中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开示例性实施方式的方法。
此外,上述附图仅是根据本公开示例性实施方式的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的示例性实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施方式。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施方式仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限定。

Claims (12)

1.一种事件分发方法,其特征在于,所述方法包括:
基于针对目标事件所注册的节点信息,确定所述目标事件对应的多个待分发节点;
基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点。
2.根据权利要求1所述的方法,其特征在于,在基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序之前,所述方法还包括:
获取所述多个待分发节点在针对目标事件注册节点信息时所声明的依赖关系。
3.根据权利要求1所述的方法,其特征在于,所述基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点,包括:
依据所述多个待分发节点对应的事件分发状态,确定当前处理节点;
基于所述当前处理节点所声明的依赖关系,确定所述当前处理节点对应的目标依赖节点,所述目标依赖节点为所述当前处理节点间直接或间接依赖的节点;
按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态。
4.根据权利要求3所述的方法,其特征在于,所述按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态,包括:
将当前节点组中没有依赖对象的节点作为预分发节点,所述当前节点组为所述当前处理节点以及所述目标依赖节点构成的节点组;
为所述预分发节点分发所述目标事件;
更新所述预分发节点的事件分发状态;
从所述当前节点组中剔除所述预分发节点;
若所述当前节点组非空,则重新确定新的预分发节点。
5.根据权利要求3所述的方法,其特征在于,所述按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点,并更新所述当前处理节点的事件分发状态以及所述目标依赖节点的事件分发状态,包括:
将当前节点组中没有依赖对象的节点作为预分发节点,所述当前节点组为所述当前处理节点以及所述目标依赖节点构成的节点组;
将所述预分发节点添加至分发序列中;
从所述当前节点组中剔除所述预分发节点;
若所述当前节点组非空,则重新确定新的预分发节点;
按照所述分发序列,将所述目标事件进行分发。
6.根据权利要求4或5所述的方法,其特征在于,所述将当前节点组中没有依赖对象的节点作为预分发节点,包括:
若当前节点组中存在多个没有依赖对象的节点,则将所述多个没有依赖对象的节点中最先针对所述目标事件注册节点信息的节点作为预分发节点。
7.根据权利要求3所述的方法,其特征在于,所述依据所述多个待分发节点对应的事件分发状态,确定当前处理节点,包括:
基于所述多个待分发节点针对目标事件的节点信息注册顺序,将首个处于未分发状态的节点作为当前处理节点。
8.根据权利要求3所述的方法,其特征在于,在按照所述当前处理节点以及所述目标依赖节点之间的依赖关系,将所述目标事件分发给所述当前处理节点以及所述目标依赖节点之前,所述方法还包括:
判断所述当前处理节点与所述目标依赖节点中是否存在具有循环依赖关系的节点,若所述当前处理节点与所述目标依赖节点中存在具有循环依赖关系的节点,则生成分发异常提示。
9.根据权利要求8所述的方法,其特征在于,所述判断所述当前处理节点与所述目标依赖节点中是否存在具有循环依赖关系的节点,包括:
将所述当前处理节点与所述目标依赖节点按照依赖关系依次进行临时标记,若所述当前处理节点与所述目标依赖节点中存在节点被多次临时标记,则所述当前处理节点与所述目标依赖节点中存在具有循环依赖关系的节点。
10.一种事件分发装置,其特征在于,所述装置包括:
待分发节点确定模块,用于基于针对目标事件所注册的节点信息,确定所述目标事件对应的多个待分发节点;
事件分发模块,用于基于所述多个待分发节点所声明的依赖关系,确定所述多个待分发节点的分发顺序,并按照所述多个待分发节点的分发顺序,将所述目标事件依次分发给所述多个待分发节点。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的方法。
12.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至9任一项所述的方法。
CN202211154179.7A 2022-09-21 2022-09-21 事件分发方法、事件分发装置、存储介质与电子设备 Pending CN115904636A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211154179.7A CN115904636A (zh) 2022-09-21 2022-09-21 事件分发方法、事件分发装置、存储介质与电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211154179.7A CN115904636A (zh) 2022-09-21 2022-09-21 事件分发方法、事件分发装置、存储介质与电子设备

Publications (1)

Publication Number Publication Date
CN115904636A true CN115904636A (zh) 2023-04-04

Family

ID=86484807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211154179.7A Pending CN115904636A (zh) 2022-09-21 2022-09-21 事件分发方法、事件分发装置、存储介质与电子设备

Country Status (1)

Country Link
CN (1) CN115904636A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112302A (zh) * 2023-08-30 2023-11-24 广州经传多赢投资咨询有限公司 一种金融数据的异常容灾方法、系统、设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117112302A (zh) * 2023-08-30 2023-11-24 广州经传多赢投资咨询有限公司 一种金融数据的异常容灾方法、系统、设备及介质
CN117112302B (zh) * 2023-08-30 2024-03-12 广州经传多赢投资咨询有限公司 一种金融数据的异常容灾方法、系统、设备及介质

Similar Documents

Publication Publication Date Title
US9639347B2 (en) Updating a firmware package
US8713578B2 (en) Managing job execution
US7624309B2 (en) Automated client recovery and service ticketing
US20110219368A1 (en) Package management system
US10055436B2 (en) Alert management
CN110659142A (zh) 消息队列处理方法及装置、电子设备、存储介质
CN104572069A (zh) 对描述数据中心中的配置项之间的依赖关系的信息进行实时分布式管理的方法和系统
CN111078422A (zh) 消息处理方法、消息处理装置、可读存储介质、电子设备
US11983519B2 (en) Abort installation of firmware bundles
CN115904636A (zh) 事件分发方法、事件分发装置、存储介质与电子设备
CN112783568A (zh) 应用程序的初始化方法、装置、设备和存储介质
CN109582528B (zh) 状态监测方法、装置、电子设备及计算机可读存储介质
CN111459629A (zh) 基于Azkaban的项目运行方法、装置及终端设备
US8924343B2 (en) Method and system for using confidence factors in forming a system
CN109739724B (zh) 数据监控方法、系统、电子设备和存储介质
CN111104125A (zh) 智能集成版本管理方法、装置、介质及电子设备
CN110990264A (zh) Ui自动化测试的元素识别方法、装置、设备及存储介质
CN111782373B (zh) 作业调度方法及装置
CN115421831A (zh) 生成活动组件调用关系的方法、装置、设备及存储介质
US8090997B2 (en) Run-time fault resolution from development-time fault and fault resolution path identification
CN114928603A (zh) 客户端软件的升级方法、装置、电子设备和介质
CN113988964A (zh) 机票监控方法、系统、电子设备和存储介质
CN113986097A (zh) 一种任务调度的方法、装置及电子设备
CN113742034A (zh) 事件处理方法与装置、计算机可读存储介质、电子设备
CN112749193A (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