CN102984174A - 一种发布订阅***中可靠性保障方法及*** - Google Patents
一种发布订阅***中可靠性保障方法及*** Download PDFInfo
- Publication number
- CN102984174A CN102984174A CN201210560977XA CN201210560977A CN102984174A CN 102984174 A CN102984174 A CN 102984174A CN 201210560977X A CN201210560977X A CN 201210560977XA CN 201210560977 A CN201210560977 A CN 201210560977A CN 102984174 A CN102984174 A CN 102984174A
- Authority
- CN
- China
- Prior art keywords
- node
- backup
- reliable
- message
- subscription
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种发布订阅***中可靠性保障方法,该方法包括:在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息;可靠订阅模块接收到节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。本发明还公开了一种发布订阅***中可靠性保障***,采用本发明的技术方案,保证拓扑中的节点不会因为故障而丢失,保障订阅的可靠性,提升了用户的体验。
Description
技术领域
本发明涉及发布订阅技术,具体涉及一种发布订阅***中可靠性保障方法及***。
背景技术
目前,大多数物联网应用程序依然使用“请求/应答”这种传统的通信方式,即客户机/服务器模式,但随着网络规模的扩大和网络拓扑的变化,这种传统模式难以满足用户的需求。原因在于,客户端和服务器端之间直接且经常地同步通信给双方造成了紧密的耦合度,并削弱了伸缩性。客户端轮询远端的数据源,就需要使用相应资源来交换数据的正确性。短的轮询间隔带来的不必要的请求会浪费资源,而长的轮询间隔会增加更新的延迟。另外,“请求/应答”方式约束了***的发展。将控制流编码于应用组件当中,这虽然方便了工程师的使用,却也将***的实际配置和各个组件的应用逻辑混杂在一起。因此,通过在运行时调整应用组件来协调整个***的能力受到了限制。
随着物联网技术的不断发展,物联网应用程序将逐步运行在大型的分布式计算环境中,发布/订阅模式随之产生。在发布/订阅模式中,信息发布者往往脱离了信息消费者,甚至不需要知道它们的存在。每个消息发布/订阅节点可以独立地运行,不受其他节点影响。但是,在这种模式中,若***中某一个节点因故障而丢失,则节点中的用户将不能收到该节点发布的消息。因此,如何在发布/订阅模式中使信息以稳定的、有序的、安全的方式传播,尤其是如何保障这些信息在***中可靠地传输,成为目前需要解决的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种发布订阅***中可靠性保障方法及***,保证拓扑中的节点不会因为故障而丢失,保障订阅的可靠性,提升了用户的体验。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种发布订阅***中可靠性保障***,该可靠性保障***包括可靠订阅模块和节点中的可靠订阅子模块;其中,
所述可靠订阅子模块,用于在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,向所述可靠订阅模块发送节点加入消息;以及,对接收到的所述可靠订阅模块发送的通知消息进行订阅备份;
所述可靠订阅模块,用于在接收到所述节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应的节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。
优选地,上述方案中,所述节点为集群代表或集群代理;
所述节点为集群代表时,所述可靠订阅子模块,还用于向所述可靠订阅模块发送集群加入消息;
相应的,所述可靠订阅模块,还用于接收到所述集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
优选地,上述方案中,所述可靠订阅模块,还用于将所述节点的备份节点的信息通知所述节点的可靠订阅子模块,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块;
相应的,所述可靠订阅子模块,还用于将节点的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点作为订阅备份。
优选地,上述方案中,所述可靠订阅模块,还用于在接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,向优先级最高的备份节点的可靠订阅子模块发送对所述失效节点进行订阅恢复的通知消息,并更新拓扑信息表;
相应的,所述优先级最高的备份节点的可靠订阅子模块,还用于对所述失效节点进行订阅恢复。
优选地,上述方案中,所述可靠订阅子模块还用于,
接收到备份节点的可靠订阅子模块发送的备份消息时,将所述备份节点的信息添加到所述可靠邻居表中的备份节点信息中;
接收到新订阅消息时,为所述新订阅消息建立副本,从所述可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点作为订阅备份。
优选地,上述方案中,所述可靠订阅子模块,还用于在预设的备份/恢复模式为本地备份/恢复模式时,为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存所述节点的订阅备份;还用于当所述节点失效时,读取所述本地保存的订阅备份进行订阅恢复。
优选地,上述方案中,所述可靠订阅子模块,还用于接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
优选地,上述方案中,该***还包括可靠Web消息模块,用于在待发送的消息中添加消息序列,并在希望接收到确认的消息中***AckRequested报头;用于在接收到携带有AckRequested报头的消息后,返回确认消息。
本发明还提供了一种发布订阅***中可靠性保障方法,该方法包括:
在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息;
可靠订阅模块接收到节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。
优选地,上述方案中,所述节点为集群代表或集群代理;
所述节点为集群代表时,在所述节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息以前,该方法还包括:
所述可靠订阅子模块向所述可靠订阅模块发送集群加入消息;
所述可靠订阅模块接收到所述集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
优选地,上述方案中,所述通知相应节点进行订阅备份为:
所述可靠订阅模块将所述节点的备份节点的信息通知所述节点的可靠订阅子模块,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块;
所述可靠订阅子模块将所述节点的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;
所述可靠订阅子模块为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
优选地,上述方案中,该方法还包括:
所述可靠订阅模块接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,通知优先级最高的备份节点的可靠订阅子模块对所述失效节点进行订阅恢复,并更新拓扑信息表。
优选地,上述方案中,该方法还包括:
所述可靠订阅子模块接收到备份节点的可靠订阅子模块发送的备份消息时,将所述备份节点的信息添加到所述可靠邻居表中的备份节点信息中;
所述可靠订阅子模块接收到新订阅消息时,为所述新订阅消息建立副本,从所述可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
优选地,上述方案中,所述预设的备份/恢复模式为本地备份/恢复模式时,该方法还包括:
所述可靠订阅子模块为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存所述节点的订阅备份。
优选地,上述方案中,该方法还包括:
所述节点失效时,可靠订阅子模块读取所述节点本地保存的订阅备份进行订阅恢复;
所述可靠订阅子模块接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
优选地,上述方案中,该方法还包括:
在终端与所述节点之间进行消息传输过程中,消息发送端在待发送的消息中添加消息序列,并在希望接收到确认的消息中***应答需求AckRequested报头;
消息接收端在接收到携带有AckRequested报头的消息后,向消息发送端发送确认消息。
本发明提供的发布订阅***中可靠性保障方法及***,通过可靠订阅模块管理和维护拓扑的可靠性,通过节点管理和维护本地的可靠性;当有新节点加入发布订阅***时,根据节点本地存储的预设的备份/恢复模式为全局备份/恢复模式,节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息;可靠订阅模块接收到节点加入消息,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应节点进行订阅备份;当收到节点失效消息时,通过读取可靠订阅模块中存储的拓扑信息表获得失效节点的备份节点,选择优先级最高的备份节点的订阅备份进行订阅恢复,如此,可保证发布订阅***中的节点不会因为故障而丢失,确保订阅的可靠性,提升了用户的体验;且通过优先级的选择使拓扑中的各个节点的负载均衡。
另外,在终端与节点间的消息传输中,通过在待发送的消息中添加消息序列,并在希望收到确认的消息中***AckRequested报头;在接收到携带有AckRequested报头的消息后,向消息发送端发送确认消息;如此,实现了在消息传输过程中的有序交付、接收保障,确保消息发送端发送的消息能成功抵达消息接收端,保障了消息传输的可靠性。
附图说明
图1为本发明发布订阅***中可靠性保障***的组成架构示意图;
图2为本发明中可靠订阅模块收到不同类型的消息后的处理方法流程示意图;
图3为本发明中可靠订阅子模块在节点加入时的处理方法流程示意图;
图4为本发明中终端与节点间消息传输的方法流程示意图。
具体实施方式
本发明的基本思想是:将处在同一个局域网的代理组成一个集群,在集群内部选择一个代理作为集群代表,集群之间通过集群代表进行通信;每个集群内部包含一个以上的节点,节点可以是集群代表,也可以是集群代理;***中有一个服务于整个发布订阅环境的可靠订阅模块,负责管理和维护整个拓扑订阅的可靠性;每个节点中有一个服务于节点本地的发布订阅环境的可靠订阅子模块,负责管理和维护节点本地订阅的可靠性。在节点的备份/恢复模式为全局备份/恢复模式时,可靠订阅模块会根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,并通知相应节点进行订阅备份;在节点失效时,可靠订阅模块读取拓扑信息表获得失效节点的备份节点,并通知所述失效节点的备份节点进行订阅恢复;
其中,可靠订阅模块中存储有拓扑信息表,所述拓扑信息表中记录了整个拓扑中的备份信息。一旦某一节点失效,可通过读取拓扑信息表获知失效节点的备份节点,进而通知所述失效节点的备份节点进行订阅恢复;
其中,可靠订阅子模块中存储有可靠邻居表,可靠邻居表中记录了节点的备份情况,管理并维护节点本地订阅的可靠性。
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图1为本发明发布订阅***中可靠性保障***的组成架构示意图,如图1所示,该可靠性保障***包括可靠订阅模块11和节点中的可靠订阅子模块12;其中,
所述可靠订阅子模块12,用于节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,向所述可靠订阅模块11发送节点加入消息;以及,对接收到的所述可靠订阅模块发送的通知消息进行订阅备份;
所述可靠订阅模块11,用于在接收到节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应的节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息;
优选地,所述节点为集群代表或集群代理;
所述节点为集群代表时,所述可靠订阅子模块12,还用于向所述可靠订阅模块11发送集群加入消息;
相应的,所述可靠订阅模块11,还用于接收到集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
优选地,所述可靠订阅模块11,还用于将所述节点的备份节点的信息通知所述节点的可靠订阅子模块12,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块12;
相应的,所述可靠订阅子模块12,还用于将自身的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点作为订阅备份。
优选地,所述可靠订阅模块11,还用于在接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,向优先级最高的备份节点的可靠订阅子模块12发送对所述失效节点进行订阅恢复的通知消息,并更新拓扑信息表;
相应的,所述优先级最高的备份节点的可靠订阅子模块12,还用于对所述失效节点进行订阅恢复。
相应的,所述***还包括管理者模块,用于检测失效节点,并向可靠订阅模块11发送节点失效消息。
这里,备份节点的优先级由拓扑信息和节点负载能力决定,同一集群内的备份节点的优先级高于不同集群间的备份节点的优先级,负载能力强的备份节点的优先级高于负载能力弱的备份节点的优先级;
例如:Group1中的备份节点的优先级高于Group2中的备份节点的优先级。
优选地,所述可靠订阅子模块12,还用于接收到备份节点的可靠订阅子模块12发送的备份消息时,将所述备份节点的信息添加到所述可靠邻居表中的备份节点信息中;
在接收到新订阅消息时,为所述新订阅消息建立副本,从所述可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点作为订阅备份。
优选地,所述可靠订阅子模块12,还用于在预设的备份/恢复模式为本地备份/恢复模式时,为所接收到的订阅消息建立副本作为所述节点订阅备份,并在本地保存所述节点的订阅备份;还用于当所述节点失效时,读取所述本地保存的订阅备份进行订阅恢复。
优选地,所述可靠订阅子模块12,还用于在接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
优选地,该可靠性保障***还包括可靠Web消息模块,用于在待发送的消息中添加消息序列,并在希望接收到确认的消息中***AckRequested报头;用于在接收到携带有AckRequested报头的消息后,返回确认消息。
为实现上述***,本发明还提供了了一种发布订阅***中可靠性保障方法,该方法包括:在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息;
可靠订阅模块接收到节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。
这里,所述节点的配置信息在所述节点本地存储,所述备份/恢复模式为预先设置;
其中,所述节点的配置信息包括节点的IP地址、节点所属的集群号、节点号、节点备份能力信息;所述节点备份能力信息具体为当前节点所能承受的备份信息量。
优选地,所述节点为集群代表或集群代理;
所述节点为集群代表时,在所述节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息以前,该方法还包括:
所述可靠订阅子模块向所述可靠订阅模块发送集群加入消息;
所述可靠订阅模块接收到所述集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
这里,当所述节点作为集群代表要加入拓扑时,需先发送集群加入消息,再发送节点加入消息。
这里,所述集群的配置信息包括集群号、节点号、节点的备份能力信息。
表1为本发明可靠订阅模块中的拓扑信息表的示意表;如表1所示,假设***中包括两个集群,所述集群名称分别为Group1和Group2,Group1中包含有节点A、节点B和节点C三个节点,Group2中包含有节点D和节点E两个节点,以节点A为例,节点A将订阅消息副本发送给节点B和节点D,则节点B和节点D为节点A的备份节点,同时节点C将订阅消息副本发送给节点A,则节点A为节点C的被备份节点;其余四个节点的备份情况和被备份情况的得出过程与节点A相同,得到如表1中所述的拓扑信息表:在Group1中,节点A的备份节点为节点B和节点D,被备份节点为节点C;节点B的备份节点为节点C和节点E,被备份节点为节点A和节点D;节点C的备份节点为节点A和节点D,被备份节点为节点B和节点E;在Group2中,节点D的备份节点为节点E和节点B,被备份节点为节点A、节点C和节点E;节点E的备份节点为节点D和节点C,被备份节点为节点B和节点D;
表1
优选地,所述通知相应节点进行订阅备份具体为:
所述可靠订阅模块将所述节点的备份节点的信息通知所述节点的可靠订阅子模块,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块;
所述可靠订阅子模块将所述节点的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;
所述可靠订阅子模块为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
这里,所述备份节点信息和所述节点作为备份节点的其他节点的信息包括节点的IP地址、节点所属的集群名和节点名等信息。
表2为本发明节点中的可靠邻居表的示意表,如表2所示,可靠邻居表中包含备份邻居表和被备份邻居表两张表格,其中,表2(a)为备份邻居表,表示当前节点将订阅备份保存在备份节点中。备份邻居表中包含当前节点的备份节点信息,包括备份节点的IP地址、集群名和节点名;例如:当前节点的备份节点名称为Broker1,其所在集群名称为Group1,备份节点的IP地址为192.168.1.15。表2(b)为被备份邻居表,表示其他节点将当前节点作为备份节点,将订阅备份保存在当前节点中。被备份邻居表中包含被备份节点的IP地址、集群名和节点名。
表2(a)
表2(b)
优选地,当所述可靠订阅模块接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,通知优先级最高的备份节点的可靠订阅子模块对所述失效节点进行订阅恢复,并更新拓扑信息表。
优选地,所述可靠订阅子模块接收到备份节点的可靠订阅子模块发送的备份消息时,将所述备份节点的信息添加到本地的可靠邻居表中的备份节点信息中;
所述可靠订阅子模块接收到新订阅消息时,为所述新订阅消息建立副本,从本地的可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
这里,备份节点的优先级由拓扑信息和节点备份能力信息决定,同一集群内的备份节点的优先级高于不同集群间的备份节点的优先级,备份能力强的备份节点的优先级高于备份能力弱的备份节点的优先级。
优选地,所述备份/恢复模式为本地备份/恢复模式时,该方法还包括:
所述可靠订阅子模块为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存订阅备份。
优选地,所述节点失效时,可靠订阅子模块读取所述节点本地保存的订阅备份进行订阅恢复;
所述可靠订阅子模块接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
当作为集群代理的节点加入拓扑中时,节点只需向可靠订阅模块发送节点加入消息,而无需向可靠订阅模块发送集群加入消息,其中所述节点加入消息的方法流程与所述作为集群代表的节点向可靠订阅模块发送节点加入消息的方法流程相同,此处不再赘述。
以上的工作保证每条消息都能在拓扑内可靠的传输,然而终端与节点间的通信往往不受***控制,为了保证终端与节点间数据传输的可靠,该方法还包括:
在终端与所述可靠订阅子模块之间进行消息传输过程中,消息发送端在待发送的消息中添加消息序列,并在希望接收到确认的消息中***应答需求AckRequested报头;
消息接收端在接收到携带有AckRequested报头的消息后,向消息发送端发送确认消息。
图2为本发明中可靠订阅模块收到不同类型的消息后的处理方法流程示意图,如图2所示,包括以下步骤:
步骤201:可靠订阅模块收到消息并判断消息类型,若消息为集群加入消息,执行步骤202;若消息为节点加入消息,执行步骤203~步骤204;若消息为节点失效消息,执行步骤205~步骤206
步骤202:可靠订阅模块获取集群的配置信息并更新拓扑信息表;
这里,所述节点可作为集群代理或集群代表;当所述节点作为集群代表时,节点本地的可靠订阅子模块在向可靠订阅模块发送节点加入消息以前,需先向可靠订阅模块发送集群加入消息;
其中,所述集群的配置信息包括集群号、节点号、节点的备份能力信息;所述可靠订阅模块获取集群的配置信息后,更新拓扑信息表中的集群拓扑信息。步骤203~步骤204:可靠订阅模块获取节点的配置信息,根据所述节点的配置信息为所述节点选取备份节点;将备份节点的信息通知节点,将节点的信息通知备份节点,同时更新拓扑信息表;
这里,所述节点本地预设的备份/恢复模式为全局备份/恢复模式时,节点本地的可靠订阅子模块需向可靠订阅模块发送节点加入消息;
这里,所述节点的配置信息包括节点号、节点所属的集群号、IP地址、节点备份能力信息;可靠订阅模块根据所述节点的配置信息,为所述节点选取合适的备份节点,同时更新拓扑信息表中的节点拓扑信息。
步骤205:可靠订阅模块读取拓扑信息表,获取失效节点的备份节点;
这里,所述可靠订阅模块在收到节点失效消息时,读取拓扑信息表,获取失效节点的备份节点。
步骤206:可靠订阅模块选取优先级最高的备份节点并通知该备份节点进行订阅恢复,同时更新拓扑信息表。
这里,所述优先级最高的备份节点为与所述失效节点同一集群的备份节点,若没有与失效节点同一集群的备份节点,则备份能力强的备份节点为优先级最高的备份节点。
图3为本发明中可靠订阅子模块在节点加入时的处理方法流程示意图,如图3所示,包括以下步骤:
步骤301:可靠订阅子模块根据预设的备份/恢复模式建立相应备份,所述预设的备份恢复模式为本地备份/恢复模式,执行步骤302~步骤303;所述预设的备份/恢复模式为全局备份/恢复模式,执行步骤304~步骤306;
所述备份/恢复模式为本地备份/恢复模式时:
步骤302:可靠订阅子模块为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存该订阅备份;
步骤303:可靠订阅子模块接收到新订阅消息时,为所接收到的新订阅消息建立副本,作为所述节点当前的订阅备份,同时删除之前的订阅备份;
所述备份/恢复模式为全局备份/恢复模式时:
步骤304:可靠订阅子模块向可靠订阅模块发送节点加入消息,并接收可靠订阅模块发送的备份节点信息,将备份节点信息保存在本地的可靠邻居表中;
步骤305:可靠订阅子模块为所接收到的订阅消息建立副本,并将订阅消息副本发送给备份节点的可靠订阅子模块作为所述节点的订阅备份;
步骤306:可靠订阅子模块接收到新订阅消息时,为所述新订阅消息建立副本,从本地的可靠邻居表中获取备份节点,将新订阅消息副本发送给备份节点的可靠订阅子模块作为订阅备份。
图4为本发明中终端与节点间消息传输的方法流程示意图,如图4所示,包括以下步骤:
步骤401~步骤402:终端向节点发送创建序列请求消息,节点创建序列,将序列标识返回给终端;
这里,终端向节点发送CreatSequence的请求消息,节点创建一个新的序列,并将序列的标识SequenceTag返回给终端;
步骤403步骤405:终端向节点发送三个消息,消息序号分别为1、2、3,且消息序号为3的消息中包含AckRequested报头;
步骤406:节点向终端发送确认消息,确认消息中包含接收到的消息序号;
这里,为了避免频繁的网络传输,遵循Web服务可靠消息传递(WS-RM,WS-ReliableMessaging)标准,本发明中采用一种批量确认的机制,即将之前接收到的消息序号,在一个确认范围内,一并发给接收端进行批量确认;
例如:若节点没有收到终端发送的序号为2的消息2,则在收到包含有AckRequested报头的消息后,向终端发送确认消息,该确认消息的范围包含序号为1的消息和序号为3的消息,如发送消息为SequenceACK(SequenceTag=subscription,AckRange=1/3);
步骤407:终端向节点重新发送传输失败的消息,消息包含AckRequested报头;
这里,终端在收到节点反馈的确认消息后,发现确认消息的范围包含序号为1的消息和序号为3的消息,则认为序号为2的消息丢失,于是重新向节点发送序号为2的消息,且序号为2的消息中也包含AckRequested报头;
步骤408:节点再次向终端发送确认消息,确认消息中包含全部接收到的消息序号;
这里,节点在收到终端发送的序号为2的消息时,发送确认消息进行确认,该确认消息的确认范围包含了全部接收成功的三个消息,消息序号分别为1、2和3;如发送消息为:SequenceACK(SequenceTag=subscription,AckRange=1/2/3);
步骤409~步骤410:终端向节点发送终止消息请求终止序列,节点向终端发送TerminateSequence消息进行终止确认。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (16)
1.一种发布订阅***中可靠性保障***,其特征在于,该可靠性保障***包括可靠订阅模块和节点中的可靠订阅子模块;其中,
所述可靠订阅子模块,用于在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,向所述可靠订阅模块发送节点加入消息;以及,对接收到的所述可靠订阅模块发送的通知消息进行订阅备份;
所述可靠订阅模块,用于在接收到所述节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应的节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。
2.根据权利要求1所述的可靠性保障***,其特征在于,所述节点为集群代表或集群代理;
所述节点为集群代表时,所述可靠订阅子模块,还用于向所述可靠订阅模块发送集群加入消息;
相应的,所述可靠订阅模块,还用于接收到所述集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
3.根据权利要求1或2所述的可靠性保障***,其特征在于,
所述可靠订阅模块,还用于将所述节点的备份节点的信息通知所述节点的可靠订阅子模块,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块;
相应的,所述可靠订阅子模块,还用于将节点的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点作为订阅备份。
4.根据权利要求1或2所述的可靠性保障***,其特征在于,
所述可靠订阅模块,还用于在接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,向优先级最高的备份节点的可靠订阅子模块发送对所述失效节点进行订阅恢复的通知消息,并更新拓扑信息表;
相应的,所述优先级最高的备份节点的可靠订阅子模块,还用于对所述失效节点进行订阅恢复。
5.根据权利要求1或2所述的可靠性保障***,其特征在于,所述可靠订阅子模块还用于,
接收到备份节点的可靠订阅子模块发送的备份消息时,将所述备份节点的信息添加到所述可靠邻居表中的备份节点信息中;
接收到新订阅消息时,为所述新订阅消息建立副本,从所述可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点作为订阅备份。
6.根据权利要求1所述的可靠性保障***,其特征在于,
所述可靠订阅子模块,还用于在预设的备份/恢复模式为本地备份/恢复模式时,为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存所述节点的订阅备份;还用于当所述节点失效时,读取所述本地保存的订阅备份进行订阅恢复。
7.根据权利要求6所述的可靠性保障***,其特征在于,
所述可靠订阅子模块,还用于接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
8.根据权利要求3、5或7所述的可靠性保障***,其特征在于,该***还包括可靠Web消息模块,用于在待发送的消息中添加消息序列,并在希望接收到确认的消息中***AckRequested报头;用于在接收到携带有AckRequested报头的消息后,返回确认消息。
9.一种发布订阅***中可靠性保障方法,其特征在于,该方法包括:
在节点加入发布订阅***时,并在预设的备份/恢复模式为全局备份/恢复模式时,节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息;
可靠订阅模块接收到节点加入消息时,获取所述节点的配置信息,根据所述节点的配置信息选择一个以上节点作为所述节点的备份节点,通知相应节点进行订阅备份,并更新拓扑信息表中的节点拓扑信息。
10.根据权利要求9所述的方法,其特征在于,所述节点为集群代表或集群代理;
所述节点为集群代表时,在所述节点本地的可靠订阅子模块向可靠订阅模块发送节点加入消息以前,该方法还包括:
所述可靠订阅子模块向所述可靠订阅模块发送集群加入消息;
所述可靠订阅模块接收到所述集群加入消息时,获取所述集群的配置信息,并根据所述集群的配置信息更新拓扑信息表中的集群拓扑信息。
11.根据权利要求9或10所述的方法,其特征在于,所述通知相应节点进行订阅备份为:
所述可靠订阅模块将所述节点的备份节点的信息通知所述节点的可靠订阅子模块,将所述节点的信息通知所述节点的备份节点的可靠订阅子模块;
所述可靠订阅子模块将所述节点的备份节点信息和将所述节点作为备份节点的其他节点的信息保存在本地的可靠邻居表中;
所述可靠订阅子模块为所接收到的订阅消息建立副本,并将订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
12.根据权利要求9或10所述的方法,其特征在于,该方法还包括:
所述可靠订阅模块接收到所述节点失效消息时,从拓扑信息表中获取失效节点的备份节点,通知优先级最高的备份节点的可靠订阅子模块对所述失效节点进行订阅恢复,并更新拓扑信息表。
13.根据权利要求9或10所述的方法,其特征在于,该方法还包括:
所述可靠订阅子模块接收到备份节点的可靠订阅子模块发送的备份消息时,将所述备份节点的信息添加到所述可靠邻居表中的备份节点信息中;
所述可靠订阅子模块接收到新订阅消息时,为所述新订阅消息建立副本,从所述可靠邻居表中获取所述节点的备份节点,并将新订阅消息副本发送给所述节点的备份节点的可靠订阅子模块作为订阅备份。
14.根据权利要求9所述的方法,其特征在于,所述预设的备份/恢复模式为本地备份/恢复模式时,该方法还包括:
所述可靠订阅子模块为所接收到的订阅消息建立副本作为所述节点的订阅备份,并在本地保存所述节点的订阅备份。
15.根据权利要求14所述的方法,其特征在于,该方法还包括:
所述节点失效时,可靠订阅子模块读取所述节点本地保存的订阅备份进行订阅恢复;
所述可靠订阅子模块接收到新订阅消息时,为所接收到的新订阅消息建立副本,并作为所述节点当前的订阅备份,同时删除之前的订阅备份。
16.根据权利要求11、13或15所述的方法,其特征在于,该方法还包括:
在终端与所述可靠订阅子模块之间进行消息传输过程中,消息发送端在待发送的消息中添加消息序列,并在希望接收到确认的消息中***应答需求AckRequested报头;
消息接收端在接收到携带有AckRequested报头的消息后,向消息发送端发送确认消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210560977.XA CN102984174B (zh) | 2012-12-21 | 2012-12-21 | 一种发布订阅***中可靠性保障方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210560977.XA CN102984174B (zh) | 2012-12-21 | 2012-12-21 | 一种发布订阅***中可靠性保障方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102984174A true CN102984174A (zh) | 2013-03-20 |
CN102984174B CN102984174B (zh) | 2016-04-06 |
Family
ID=47857917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210560977.XA Expired - Fee Related CN102984174B (zh) | 2012-12-21 | 2012-12-21 | 一种发布订阅***中可靠性保障方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102984174B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581307A (zh) * | 2013-10-17 | 2014-02-12 | 北京邮电大学 | 一种基于集群的发布/订阅***及其可靠性保障方法 |
CN106549776A (zh) * | 2015-09-17 | 2017-03-29 | 华为数字技术(成都)有限公司 | 一种创建链路的方法及通信设备 |
CN108701096A (zh) * | 2016-02-18 | 2018-10-23 | 日本电气株式会社 | 通信***、边缘服务器、第一代理端、第二代理端、方法和存储介质 |
CN111752488A (zh) * | 2020-06-30 | 2020-10-09 | 重庆紫光华山智安科技有限公司 | 存储集群的管理方法、装置、管理节点及存储介质 |
WO2021212726A1 (zh) * | 2020-04-20 | 2021-10-28 | 北京邮电大学 | 一种软件定义网络发布订阅***和方法 |
US11184240B2 (en) | 2015-07-10 | 2021-11-23 | Idac Holdings, Inc. | Path information updates in information-centric networking |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110106891A1 (en) * | 2009-10-30 | 2011-05-05 | Verisign, Inc. | Hierarchical publish and subscribe system |
CN102355413A (zh) * | 2011-08-26 | 2012-02-15 | 北京邮电大学 | 一种大规模实时统一消息空间的方法及其*** |
CN102724304A (zh) * | 2012-06-06 | 2012-10-10 | 哈尔滨工程大学 | 订阅/发布***中信息仓库联邦及数据同步方法 |
CN102752335A (zh) * | 2011-04-22 | 2012-10-24 | 中兴通讯股份有限公司 | 对等叠加网中节点过负荷信息订阅方法及*** |
-
2012
- 2012-12-21 CN CN201210560977.XA patent/CN102984174B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110106891A1 (en) * | 2009-10-30 | 2011-05-05 | Verisign, Inc. | Hierarchical publish and subscribe system |
CN102752335A (zh) * | 2011-04-22 | 2012-10-24 | 中兴通讯股份有限公司 | 对等叠加网中节点过负荷信息订阅方法及*** |
CN102355413A (zh) * | 2011-08-26 | 2012-02-15 | 北京邮电大学 | 一种大规模实时统一消息空间的方法及其*** |
CN102724304A (zh) * | 2012-06-06 | 2012-10-10 | 哈尔滨工程大学 | 订阅/发布***中信息仓库联邦及数据同步方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103581307A (zh) * | 2013-10-17 | 2014-02-12 | 北京邮电大学 | 一种基于集群的发布/订阅***及其可靠性保障方法 |
US11184240B2 (en) | 2015-07-10 | 2021-11-23 | Idac Holdings, Inc. | Path information updates in information-centric networking |
CN106549776A (zh) * | 2015-09-17 | 2017-03-29 | 华为数字技术(成都)有限公司 | 一种创建链路的方法及通信设备 |
CN108701096A (zh) * | 2016-02-18 | 2018-10-23 | 日本电气株式会社 | 通信***、边缘服务器、第一代理端、第二代理端、方法和存储介质 |
CN108701096B (zh) * | 2016-02-18 | 2021-06-08 | 日本电气株式会社 | 通信***、边缘服务器、方法和存储介质 |
WO2021212726A1 (zh) * | 2020-04-20 | 2021-10-28 | 北京邮电大学 | 一种软件定义网络发布订阅***和方法 |
CN111752488A (zh) * | 2020-06-30 | 2020-10-09 | 重庆紫光华山智安科技有限公司 | 存储集群的管理方法、装置、管理节点及存储介质 |
CN111752488B (zh) * | 2020-06-30 | 2022-11-01 | 重庆紫光华山智安科技有限公司 | 存储集群的管理方法、装置、管理节点及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102984174B (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102984174A (zh) | 一种发布订阅***中可靠性保障方法及*** | |
CN103888277B (zh) | 一种网关容灾备份方法、装置和*** | |
JP2006202280A (ja) | 状態の同期化を有するクラスタのための仮想マルチキャスト経路指定 | |
US8650324B2 (en) | System and method for reliable distributed communication with guaranteed service levels | |
CN102143194A (zh) | 数据同步的方法、***、中间数据节点及终止数据节点 | |
CN103581276A (zh) | 集群管理装置、***、业务客户端及相应方法 | |
KR20190030116A (ko) | Dds 미들웨어를 이용한 마이크로그리드 에너지관리시스템 | |
US20160344582A1 (en) | Call home cluster | |
Thean et al. | Container-based MQTT broker cluster for edge computing | |
CN116048538B (zh) | 用于dpu的服务网格部署方法及装置 | |
CN112202877B (zh) | 网关联动方法、网关、云服务器及用户终端 | |
CN105553682A (zh) | 事件通知方法及用于事件通知的*** | |
CN102420868A (zh) | 服务的提供方法、装置及*** | |
CN105162623A (zh) | 一种云处理方法及云服务器 | |
CN114025002A (zh) | 一种基于mqtt信息传输的方法、***及通信设备 | |
CN107302849B (zh) | 一种光路径的分配方法及装置 | |
JPWO2010109767A1 (ja) | データ同期システム、データ同期方法、及び同期管理サーバ | |
US20170048169A1 (en) | Message queue replication with message ownership migration | |
CN106790354B (zh) | 一种防数据拥堵的通信方法及其装置 | |
CN102427474B (zh) | 云存储中的数据传输*** | |
US11973824B2 (en) | Method for data transmission of audio and video in end-to-end system | |
CN105281940A (zh) | 一种基于netconf协议的hello报文交互的方法、设备和*** | |
CN104079663A (zh) | 分布式实时同步网络***及其通告数据的方法 | |
CN112714146A (zh) | 一种资源调度方法、装置、设备及计算机可读存储介质 | |
CN107872479B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160406 Termination date: 20211221 |
|
CF01 | Termination of patent right due to non-payment of annual fee |