CN102664947B - 分布式系统中的通知分发方法 - Google Patents
分布式系统中的通知分发方法 Download PDFInfo
- Publication number
- CN102664947B CN102664947B CN201210114302.2A CN201210114302A CN102664947B CN 102664947 B CN102664947 B CN 102664947B CN 201210114302 A CN201210114302 A CN 201210114302A CN 102664947 B CN102664947 B CN 102664947B
- Authority
- CN
- China
- Prior art keywords
- notice
- services task
- distribution services
- receiver module
- node
- 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
Abstract
本发明涉及分布式通信系统领域。本发明解决了现有分布式系统中通知发布的可靠性和效率较低的问题,提供了一种分布式系统中的通知分发方法,其技术方案可概括为:首先在每一个分布式节点上创建通知分发服务任务,在分布式系统启动后开启每一个分布式节点上的通知分发服务任务,然后接收模块就所要接收的通知向所在节点的通知分发服务任务进行订阅注册,通知分发服务任务获得订阅注册信息,最后发送模块将通知发布到所在节点的通知分发服务任务,通知分发服务任务根据通知信息及订阅注册信息将通知分发到对应的接收模块,并向发送模块反馈分发结果。本发明的有益效果是:提高了模块的独立性和灵活性,适用于分布式系统。
Description
技术领域
本发明涉及分布式通信系统领域,特别涉及分布式通信系统中的通知的发布技术。
背景技术
分布式系统由多个分布式节点组成,各个分布式节点通过相互之间的协作共同完成系统整体的功能。各应用模块分布于不同分布式节点中,各个应用模块之间的耦合性较低。当有应用模块产生事件需要向外发送通知时,该应用模块称为通知的发布者即发送模块,而在该事件发生后,需要进行相应处理的应用模块称为通知的接收者即接收模块。现有技术中分布式系统的通知分发是由发布者与接收者进行直接通信实现的,发布者需要关心接收者,接收者也需要关心发布者,它们之间属于紧耦合的关系。
当一个应用模块中有事件发生,或是有信息需要通知其他应用模块时,此时对通知发布者来说,通知接收者的位置不确定,数量不确定,其期望的处理模式也不确定,发布者也并不关心这些信息,它只需要将通知发布出去,并确认接收者收到即可。通知发布者与通知接收者之间紧耦合的实现方式,不够灵活且应用模块实现复杂。而且对异步接收者来说也是点对点的发送通知;不但浪费系统带宽,而且效率比较低。
发明内容
本发明的目的就是克服目前分布式系统中通知发布的可靠性和效率较低的缺点,提供一种分布式系统中的通知分发方法。
本发明解决其技术问题,采用的技术方案是,分布式系统中的通知分发方法,其特征在于,包括以下步骤:
A.在每一个分布式节点上创建通知分发服务任务;
B.分布式系统启动后开启每一个分布式节点上的通知分发服务任务;
C.接收模块就所要接收的通知向所在节点的通知分发服务任务进行订阅注册,通知分发服务任务获得订阅注册信息;
D.发送模块将通知发布到所在节点的通知分发服务任务,通知分发服务任务根据通知信息及订阅注册信息将通知分发到对应的接收模块,并向发送模块反馈分发结果。
具体的,步骤C包括以下步骤:
C1.若接收模块要接收通知,则创建通知接收端口,选择其需要接收的通知类型向所在节点的通知分发服务任务进行订阅注册;
C2.通知分发服务任务获取接收模块的订阅注册信息并存储,向该接收模块返回注册成功信息;
C3.接收模块接收到注册成功信息,进行接收状态初始化,利用通知接收端口接收通知信息。
进一步的,步骤C2中,所述接收模块的订阅注册信息包括模块号、事件号、处理模式、通知处理次序和处理回调函数。
具体的,所述处理模式包括同步处理方式或异步处理方式;所述通知处理次序指接收模块对需接收通知进行同步处理时的处理次序。
具体的,步骤D中,所述通知信息包括通知类型和通知分发范围。
具体的,所述通知分发范围是指在在发送模块所在节点内进行通知发布或者跨节点进行通知发布。
再进一步的,步骤D中,通知分发服务任务接收到通知发送模块发布的通知后,执行如下处理步骤:
D1.通知分发服务任务对接收的每个通知进行编号;
D2.通知分发服务任务通过存储的订阅注册信息,先获取本节点内接收模块列表,并向该列表内所对应的接收模块发送该通知;
D3.通知分发服务任务再判断该通知分发范围是否需要跨节点,如是,则以组播方式将该通知分发到其它节点的通知分发服务任务,否则结束本流程。
具体的,步骤D2中,通知分发服务任务获取本节点内接收模块列表后,先对注册为同步处理方式的接收模块进行通知的分发,然后再对注册为异步处理方式的接收模块进行通知的分发。
更进一步的,通知分发服务任务对注册为同步处理方式的接收模块进行通知分发的步骤如下:
D21.通知分发服务任务通过存储的订阅注册信息,获取本节点内同步处理接收模块列表和同步处理次序;
D22.根据同步处理次序,通知分发服务任务依次将通知分发到同步处理接收模块中;
D23.通知分发服务任务依次接收同步处理接收模块返回的结果信息,并向通知发送模块反馈;
D24.通知分发服务任务完成向所有同步处理接收模块的通知分发后,处理异步处理方式的通知分发。
更进一步的,通知分发服务任务处理异步处理方式的通知分发的步骤为:
D31.通知分发服务任务通过存储的订阅注册信息,获取本节点内异步处理接收模块列表;
D32.通知分发服务任务通过组播的方式将通知分发到所有的异步处理接收模块;
D33.通知分发服务任务向所有的同步接收模块分发完成后,接收异步处理接收模块返回的结果信息,并向通知发送模块反馈。
本发明的有益效果是,通过上述分布式系统中的通知分发方法,可以降低通知发布者与通知接收者之间的耦合性,由原来的紧耦合变为松耦合,提高了模块的独立性和灵活性。而且将原来的异步点对点发送变换为组播发送,提高发送效率。
附图说明
图1是本发明实施例分布式系统的结构示意图。
图2是本发明实施例分布式系统中的通知分发方法流程图。
具体实施方式
下面结合实施例及附图,详细描述本发明的技术方案。
参见图1为本发明实施例分布式系统的结构示意图;本实施例中的分布式系统包括分布式节点1、分布式节点2和分布式节点3。在分布式节点1中,包括有通知分发服务任务NDS1,应用模块A、应用模块B和应用模块C为通知发送模块,应用模块1、应用模块2、应用模块3和应用模块4为通知接收模块,且其中应用模块1和应用模块2为同步处理接收模块,应用模块3和应用模块4为异步接收模块。在分布式节点2中,包括有通知分发服务任务NDS2,应用模块A、应用模块D和应用模块E为通知发送模块,应用模块1、应用模块5、应用模块6和应用模块7为通知接收模块,且其中应用模块1和应用模块5为同步处理接收模块,应用模块6和应用模块7为异步接收模块。在分布式节点3中,包括有通知分发服务任务NDS3,应用模块A、应用模块D和应用模块E为通知发送模块,应用模块1、应用模块5、应用模块6和应用模块7为通知接收模块,且其中应用模块1和应用模块5为同步处理接收模块,应用模块6和应用模块7为异步接收模块。
参见图2为本发明实施例的分布式系统中的通知分发方法流程图,包括:
步骤201,在每一个分布式节点上创建通知分发服务任务。所述任务主要用于实现分布式通知的分发,具体包括:对本节点内的应用模块所发布通知进行管理(包括注册、取消注册操作);接收本节点内应用模块的通知发布,并将该通知分发给所有订阅者;当通知分发出现异常时,通知发布者进行处理;而且当所发布的通知为全局通知,还要将该通知分发给其它节点;以及接收其它节点的分发异常响应,并通知发布者进行处理;接收其它节点发布的全局通知信息,并在本节点内进行分发。具体的实现过程,在以下的实现步骤中会有详细说明,此处不再赘述。
步骤202,分布式系统启动后开启每一个分布式节点上的通知分发服务任务。
步骤203,接收模块就所要接收的通知向所在节点的通知分发服务任务进行订阅注册,通知分发服务任务获得订阅注册信息。本步骤中,接收模块的应用程序在初始化时创建socket,并绑定通知接收端口,生成订阅注册请求消息,订阅注册消息包括如下内容:
模块号:指发布通知的模块ID号;
事件号:通知所指定的ID号;
处理模式:对该通知是进行同步处理,还是异常处理;
通知处理次序:如果是同步处理的情况下,其处理的次序号;
处理回调函数:具体对通知进行处理的函数;
通知接收端口:接收通知的端口号。
接收者将该订阅注册请求发送到通知分发服务任务,通知分发服务任务接收到该请求后,会相应创建一条注册信息,并返回注册成功的响应。接收模块在将收到注册成功的回应后,即启动对绑定端口的监听,准备接收通知信息。
步骤204,发送模块将通知发布到所在节点的通知分发服务任务,通知分发服务任务根据通知信息及订阅注册信息将通知分发到对应的接收模块,并向发送模块反馈分发结果。发送模块进行通知发布时,调用通知发布接口进行发布,然后阻塞等待调用结果返回,并根据结果进行相应处理。发送模块只直接处理在同步调用过程中出现的异常情况,对异步调用中出现的异常情况则通过异常回调的方式进行处理。
在本实施例中,发送模块将通知发布到所在节点的通知分发服务任务,通知分发服务任务收到的通知信息中包括通知类型和通知分发范围;所述通知类型根据不同的事件来定义,如接口的创建、删除、up/down等,可以通过采用唯一标识符标识某类通知信息;通知分发范围是指在在发送模块所在节点内进行通知发布或者跨节点进行通知发布。在具体实现时通知信息中所携带的通知类型和通知分发范围也可以由发送模块提前向通知分发服务任务注册,如当应用模块有通知信息需要发布时,先向通知分发服务任务对需要发布的通知类型进行注册,注册过程可以重复进行,直到注册完所有类型。发送模块所发送的通知信息在必要时可以携带异常处理回调函数、等待响应的超时时间、处理有限接等信息。
通知分发服务任务所提供的通知分发过程如下:
步骤2051,通知分发服务任务启动时绑定服务端口,从该端口接收本节点发送模块的通知信息,以及从其他节点来的通知分发信息。
步骤2052,通知分发服务任务会对每个分发的通知进行编号,以避免应用重复接收和处理相同的通知。
步骤2053,通知分发服务任务从订阅注册信息中获取本地同步处理订阅者列表,并对其进行一一通知;同步通知完成后,即向发送模块返回结果,发送模块的应用程序解除阻塞状态;然后通知分发服务任务再从注册信息中获取本地异步处理订阅者列表,然后以组播的方式将该信息发布出去。
通知分发服务任务对本地同步处理订阅者列表中的接收模块,进行通知分发的具体步骤如下:通知分发服务任务通过存储的订阅注册信息,获取本节点内同步处理接收模块列表和同步处理次序;根据同步处理次序,通知分发服务任务依次将通知分发到同步处理接收模块中;通知分发服务任务依次接收同步处理接收模块返回的结果信息,并向通知发送模块反馈;通知分发服务任务完成向所有同步处理接收模块的通知分发后,处理异步处理方式的通知分发。具体实现时,通知分发服务任务根据同步处理次序,一个一个串行进行处理,如果其中有一个处理出现异常,则通知分发服务向发送模块返回异常结果,由发送模块进行相应的异常处理,分发过程即告结束。
通知分发服务任务对本地异步处理订阅者列表中的接收模块,进行通知分发的具体步骤为:通知分发服务任务通过存储的订阅注册信息,获取本节点内异步处理接收模块列表;通知分发服务任务通过组播的方式将通知分发到所有的异步处理接收模块;通知分发服务任务向所有的同步接收模块分发完成后,接收异步处理接收模块返回的结果信息,并向通知发送模块反馈;
通知分发服务任务对未能正确接收通知的接收模块进行多次重传,如果多次重传都失败,则通过发布者所注册的异常回调进行处理。
当订阅者列表中的接收模块接收到通知信息时,通过通知ID判断该信息是否是重复接收的信息,对重复接收的信息直接丢弃。如果是新信息则更新信息接收状态。对同步处理通知信息,则回调应用程序注册的处理回调函数,处理完成后返回结果给发布者。对异步处理则先返回接收成功,然后再调用应用注册的接口,并且不再返回处理结果。接收模块对所接收到的信息进行串行处理,只有上一条信息处理完成才会处理一下条信息。
步骤2054如果所发送模块发布的是一个节点间通知,通知分发服务任务会在完成步骤2053后,再将该通知通过组播的方式分发给通知指定范围内其他节点的通知分发服务任务,再由其他节点的通知分发服务任务在本节点内进行分发。当其它节点的通知分发服务任务分发出现异常时,可以通知源通知分发服务任务对异常进行处理。
上述实施例中分布式系统为分布式设备时,分布式节点为各个板卡。当分布式系统中的设备处于集群形态时,位于主设备上的主控节点中的通知分发服务任务还需要将通知转发到从设备的主控节点中的通知分发服务任务,由从设备主控节点中的通知分发服务任务在其设备范围内进行分发。
本发明实施例的通知分发机制可以作为一种基础机制,由各应用模块进行使用;分布式节点之间为松耦合关系,可以平滑增减节点的数量;通知的发布者和接收者之间为松耦合关系,发布者不需要关注接收者,接收者也不关注发布者;接收者对通知的处理模式可以有同步和异步之分,使用同步处理方式时,可以控制接收者处理通知的次序;使用异步处理方式时,通知分发服务任务通过组播方式进行分发,提高了分发的效率。
以上所述的具体实施例,对本发明的目的,技术方案和有益效果进行了进一步详细说明,所应注意的是以上所述仅为本发明的具体实施例而已,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。
Claims (9)
1.分布式系统中的通知分发方法,应用于分布式通信系统,其特征在于,包括以下步骤:
A.在每一个分布式节点上创建通知分发服务任务;
B.分布式系统启动后开启每一个分布式节点上的通知分发服务任务;
C.接收模块就所要接收的通知向所在节点的通知分发服务任务进行订阅注册,通知分发服务任务获得订阅注册信息,具体包括以下步骤:
C1.若接收模块要接收通知,则创建通知接收端口,选择其需要接收的通知类型向所在节点的通知分发服务任务进行订阅注册;
C2.通知分发服务任务获取接收模块的订阅注册信息并存储,向该接收模块返回注册成功信息;
C3.接收模块接收到注册成功信息,进行接收状态初始化,利用通知接收端口接收通知信息;
D.发送模块将通知发布到所在节点的通知分发服务任务,通知分发服务任务根据通知信息及订阅注册信息将通知分发到对应的接收模块,并向发送模块反馈分发结果。
2.如权利要求1所述的分布式系统中的通知分发方法,其特征在于,步骤C2中,所述接收模块的订阅注册信息包括模块号、事件号、处理模式、通知处理次序和处理回调函数。
3.如权利要求2所述的分布式系统中的通知分发方法,其特征在于,所述处理模式包括同步处理方式或异步处理方式;所述通知处理次序指接收模块对需接收通知进行同步处理时的处理次序。
4.如权利要求1-3任一项所述的分布式系统中的通知分发方法,其特征在于,步骤D中,所述通知信息中包括通知类型和通知分发范围。
5.如权利要求4所述的分布式系统中的通知分发方法,其特征在于,所述通知分发范围是指在发送模块所在节点内进行通知发布或者跨节点进行通知发布。
6.如权利要求4所述的分布式系统中的通知分发方法,其特征在于,步骤D中,通知分发服务任务接收到通知发送模块发布的通知后,执行如下处理步骤:
D1.通知分发服务任务对接收的每个通知进行编号;
D2.通知分发服务任务通过存储的订阅注册信息,先获取本节点内接收模块列表,并向该列表内所对应的接收模块发送该通知;
D3.通知分发服务任务再判断该通知分发范围是否需要跨节点,如是,则以组播方式将该通知分发到其它节点的通知分发服务任务,否则结束本流程。
7.如权利要求6所述的分布式系统中的通知分发方法,其特征在于,步骤D2中,通知分发服务任务获取本节点内接收模块列表后,先对注册为同步处理方式的接收模块进行通知 的分发,然后再对注册为异步处理方式的接收模块进行通知的分发。
8.如权利要求7所述的分布式系统中的通知分发方法,其特征在于,通知分发服务任务对注册为同步处理方式的接收模块进行通知分发的步骤如下:
D21.通知分发服务任务通过存储的订阅注册信息,获取本节点内同步处理接收模块列表和同步处理次序;
D22.根据同步处理次序,通知分发服务任务依次将通知分发到同步处理接收模块中;
D23.通知分发服务任务依次接收同步处理接收模块返回的结果信息,并向通知发送模块反馈;
D24.通知分发服务任务完成向所有同步处理接收模块的通知分发后,处理异步处理方式的通知分发。
9.如权利要求8所述的分布式系统中的通知分发方法,其特征在于,通知分发服务任务处理异步处理方式的通知分发的步骤为:
D31.通知分发服务任务通过存储的订阅注册信息,获取本节点内异步处理接收模块列表;
D32.通知分发服务任务通过组播的方式将通知分发到所有的异步处理接收模块;
D33.通知分发服务任务向所有的同步接收模块分发完成后,接收异步处理接收模块返回的结果信息,并向通知发送模块反馈。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210114302.2A CN102664947B (zh) | 2012-04-18 | 2012-04-18 | 分布式系统中的通知分发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210114302.2A CN102664947B (zh) | 2012-04-18 | 2012-04-18 | 分布式系统中的通知分发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102664947A CN102664947A (zh) | 2012-09-12 |
CN102664947B true CN102664947B (zh) | 2015-11-04 |
Family
ID=46774356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210114302.2A Active CN102664947B (zh) | 2012-04-18 | 2012-04-18 | 分布式系统中的通知分发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102664947B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103685416B (zh) * | 2012-09-20 | 2019-04-26 | 联想(北京)有限公司 | 分布式任务分配与认领方法以及电子设备 |
CN102902594A (zh) * | 2012-09-28 | 2013-01-30 | 用友软件股份有限公司 | 资源管理系统和资源管理方法 |
CN103532755B (zh) * | 2013-10-12 | 2016-07-06 | 北京世界星辉科技有限责任公司 | 分布式异步事件的处理方法及系统 |
CN104885407A (zh) * | 2013-12-31 | 2015-09-02 | 华为技术有限公司 | 一种网络功能虚拟化nfv故障管理装置、设备及方法 |
CN105553682B (zh) * | 2015-12-23 | 2019-05-24 | 华为技术有限公司 | 事件通知方法及用于事件通知的系统 |
CN108282500A (zh) * | 2017-01-05 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 消息发布方法、装置以及电子设备 |
CN109302435B (zh) * | 2017-07-25 | 2021-03-16 | 腾讯科技(深圳)有限公司 | 消息发布方法、装置、系统、服务器及计算机可读存储介质 |
CN109151033B (zh) * | 2018-08-30 | 2022-02-22 | 百度在线网络技术(北京)有限公司 | 基于分布式系统的通信方法、装置、电子设备及存储介质 |
CN109542602B (zh) * | 2018-11-20 | 2021-05-11 | 苏州朗润创新知识产权运营有限公司 | 一种基于区块链的分布式任务处理方法、装置及系统 |
CN115834691B (zh) * | 2023-02-13 | 2023-06-30 | 美云智数科技有限公司 | 分布式发布订阅方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866833A (zh) * | 2005-12-22 | 2006-11-22 | 华为技术有限公司 | 分布式数据管理系统及其动态订阅数据的方法 |
CN102200929A (zh) * | 2010-03-26 | 2011-09-28 | 迈普通信技术股份有限公司 | 任务间异步通信的处理方法及多任务异步通信处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003152583A (ja) * | 2001-11-14 | 2003-05-23 | Toshiba Corp | 情報機器及び情報配信システム、並びにこれらに適用される通信モード切換方法、情報記憶方法、及び情報配信方法 |
-
2012
- 2012-04-18 CN CN201210114302.2A patent/CN102664947B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866833A (zh) * | 2005-12-22 | 2006-11-22 | 华为技术有限公司 | 分布式数据管理系统及其动态订阅数据的方法 |
CN102200929A (zh) * | 2010-03-26 | 2011-09-28 | 迈普通信技术股份有限公司 | 任务间异步通信的处理方法及多任务异步通信处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102664947A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102664947B (zh) | 分布式系统中的通知分发方法 | |
JP5815711B2 (ja) | 機器間通信システムにおける周期的なマルチキャスト通信を支援するための装置及び方法 | |
CN102377685B (zh) | 一种订阅消息的发送系统以及订阅消息的发送方法 | |
CN102946376B (zh) | 一种异步通讯的实现方法 | |
CN102025616B (zh) | 一种实现双向转发检测的方法、装置及交换机 | |
CN104796922B (zh) | Cse的触发管理方法及装置、cse、承载网网元 | |
CN105553682B (zh) | 事件通知方法及用于事件通知的系统 | |
CN101136828A (zh) | 一种基于rs485多主机有线串行通讯的方法 | |
CN104363407A (zh) | 一种视频会议系统通讯方法及相应装置 | |
CN101296130B (zh) | 一种实现多进程共享端口接收网络通知的系统及其方法 | |
CN104507054B (zh) | 一种群组成员信息更新的方法及相关设备 | |
CN101764830A (zh) | 一种基于消息订阅方式的状态同步方法及系统 | |
CN109167831A (zh) | 多站点用户行为信息同步方法及系统 | |
CN111124717A (zh) | 消息投递方法、系统及计算机存储介质 | |
CN104734823A (zh) | 通信系统、通信终端、中转台以及握手通信的方法 | |
CN104427473B (zh) | 通信设备和通信方法 | |
CN112463365B (zh) | 提升对Flash通道控制器消息处理效率的方法及装置 | |
CN105554089A (zh) | 一种基于dds标准的“请求-响应”式数据通信方法 | |
CN102868945B (zh) | 一种epon中onu的升级方法 | |
CN109714653B (zh) | 一种加快ctc oam升级效率的方法 | |
CN103391238A (zh) | 一种基于xmpp的消息投递状态通告和可靠传输方法 | |
WO2013000231A1 (zh) | 批量业务处理的方法和装置 | |
CN102255716A (zh) | 一种对协议状态的设备间备份的方法及系统 | |
CN102480366A (zh) | 一种关于会议系统软件的双机热备份运行方法 | |
CN102137346A (zh) | 多媒体消息业务处理方法和相关设备以及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |