一种分布式订阅发布系统及方法转让专利

申请号 : CN202210725844.7

文献号 : CN114938392B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张瑀昊李成才

申请人 : 成都质数斯达克科技有限公司

摘要 :

本发明涉及通信技术领域,特别是涉及一种分布式订阅发布系统及方法,所述系统包括多个发布者节点和多个订阅者节点,每个所述发布者节点可以订阅至少一个所述订阅者节点,每个所述订阅者节点可以接收至少一个所述发布者节点的订阅,对于一种事件的订阅每个所述订阅者节点仅可订阅一个对应的所述发布者节点,且仅在对应的所述发布者节点离线后随机不重复地订阅其他发布者节点,在判定发布者节点的在线状态为离线状态时更换订阅的发布者节点,进而实现区块链网络中发布者节点和订阅者节点之间的实时事件状态,通过分布式的订阅有效增加了区块链网络中各节点之间的事件状态信息的传播速度,进而提高区块链网络整体运行效率。

权利要求 :

1.一种分布式订阅发布系统,其特征在于,应用于区块链网络,所述系统包括多个发布者节点和多个订阅者节点,每个所述发布者节点可以订阅至少一个所述订阅者节点,每个所述订阅者节点可以接收至少一个所述发布者节点的订阅,其中,对于一种事件的订阅每个所述订阅者节点仅可订阅一个对应的所述发布者节点,且仅在对应的所述发布者节点离线后随机不重复地订阅其他发布者节点。

2.一种分布式订阅发布方法,其特征在于,应用于区块链网络,所述方法包括:

订阅者节点根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;

订阅者节点接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中,并为第一发布者节点创建第一心跳监测任务,所述第一心跳监测任务用于定期监测所述第一发布者节点的在线状态。

3.根据权利要求2所述的方法,其特征在于,所述订阅者节点根据第一发布者节点标识向第一发布者节点发送第一订阅请求之前,包括:订阅者节点获取第一上层应用系统发送的订阅指令,所述订阅指令包括第一订阅事件类型;

订阅者节点根据所述事件类型在本地区块链公共账本中调取多个对应的发布者节点标识,并随机选择一个所述对应的发布者节点标识记为第一发布者节点标识。

4.根据权利要求2所述的方法,其特征在于,所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点之后,还包括:第一发布者节点创建第一发布者事件推送任务,以使所述订阅者节点持续收到所述第一订阅事件的状态信息,所述第一发布者事件推送任务包括事件状态变更推送子任务和第一心跳子任务,所述事件状态变更推送子任务用于在所述第一订阅事件的状态信息发生变化时向所述订阅者节点发送变更后的第一订阅事件的状态信息,所述第一心跳子任务用于定期向所述订阅者节点发送当前的第一订阅事件的状态信息。

5.根据权利要求2所述的方法,其特征在于,订阅者节点接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中之后,还包括:订阅者节点创建第一发布者节点对应的监测任务,记为第一定时任务,所述第一定时任务用于定期检测第一发布者的在线状态,并在所述第一发布者在预设时间内未响应所述第一定时任务的情况下,删除记录在所述发布者列表中的第一发布者信息,以使所述订阅者节点筛除第一发布者发送的第一订阅事件的信息。

6.根据权利要求5所述的方法,其特征在于,所述订阅者节点筛除第一发布者发送的第一订阅事件的信息,包括:订阅者节点获取多个发布者节点发送的多个事件信息,所述多个事件信息包括所述第一发布者发送的第一订阅事件的信息;

订阅者节点在所述发布者列表中没有所述第一发布者信息的情况下,拦截并删除所述多个事件信息中的第一订阅事件的信息。

7.一种分布式订阅发布装置,所述装置适用于区块链网络中任一订阅者节点,其特征在于,所述装置包括:请求模块,用于根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;

接收模块,用于接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中,并为第一发布者节点创建第一心跳监测任务,所述第一心跳监测任务用于定期监测所述第一发布者节点的在线状态。

说明书 :

一种分布式订阅发布系统及方法

技术领域

[0001] 本发明涉及通信技术领域,特别是涉及一种分布式订阅发布系统及方法。

背景技术

[0002] 传统互联网应用中的消息订阅服务需要通过集成第三方消息中间件的方式来实现,这在区块链这种节点规模庞大的去中心化分布式网络环境下给部署和运维带来极大挑战,不仅增加了对消息订阅服务的维护成本,而且为保证消息不丢失等可靠性还需付出额外的存储成本,相对于区块链来说这种消息订阅发布的方式过于繁重,不利于区块链消息的快速传播。

发明内容

[0003] 本发明实施例的目的在于提供一种分布式订阅发布系统及方法。具体技术方案如下:
[0004] 在本发明实施例的第一方面,提供一种分布式订阅发布系统,所述系统包括多个发布者节点和多个订阅者节点,每个所述发布者节点可以订阅至少一个所述订阅者节点,每个所述订阅者节点可以接收至少一个所述发布者节点的订阅,其中,对于一种事件的订阅每个所述订阅者节点仅可订阅一个对应的所述发布者节点,且仅在对应的所述发布者节点离线后随机不重复地订阅其他发布者节点。
[0005] 在本发明实施例的第二方面,提供一种分布式订阅发布方法,所述方法包括:订阅者节点根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;
[0006] 订阅者节点接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中。
[0007] 可选地,所述订阅者节点根据第一发布者节点标识向第一发布者节点发送第一订阅请求之前,包括:
[0008] 订阅者节点获取第一上层应用系统发送的订阅指令,所述订阅指令包括第一订阅事件类型;
[0009] 订阅者节点根据所述事件类型在本地区块链公共账本中调取多个对应的发布者节点标识,并随机选择一个所述对应的发布者节点标识记为第一发布者节点标识。
[0010] 可选地,所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点之后,还包括:
[0011] 第一发布者节点创建第一发布者事件推任务,以使所述订阅者节点持续收到所述第一订阅事件的状态信息,所述第一发布者事件推送任务包括事件状态变更推送子任务和第一心跳子任务,所述事件状态变更推送子任务用于在所述第一订阅事件的状态信息发生变化时向所述订阅者节点发送变更后的第一订阅事件的状态信息,所述第一心跳子任务用于定期向所述订阅者节点发送当前的第一订阅事件的状态信息。
[0012] 可选地,订阅者节点接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中之后,还包括:
[0013] 订阅者节点创建第一发布者节点对应的监测任务,记为第一定时任务,所述第一定时任务用于定期检测第一发布者的在线状态,并在所述第一发布者在预设时间内未响应所述第一定时任务的情况下,删除记录在所述发布者列表中的第一发布者信息,以使所述订阅节点筛除第一发布者发送的第一订阅事件的信息。
[0014] 可选地,所述订阅节点筛除第一发布者发送的第一订阅事件的信息,包括:
[0015] 订阅者节点获取多个发布者节点发送的多个事件信息,所述多个事件信息包括所述第一发布者发送的第一订阅事件的信息;
[0016] 订阅者节点在所述发布者列表中没有所述第一发布者信息的情况下,拦截并删除所述多个事件信息中的第一订阅事件的信息。
[0017] 在本发明实施例的第二方面,提供一种分布式订阅发布装置,所述装置适用于区块链网络中任一订阅者节点,所述装置包括:
[0018] 请求模块,用于根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;
[0019] 接收模块,用于接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中,并为第一发布者节点创建第一心跳监测任务,所述第一心跳监测任务用于定期监测所述第一发布者节点的在线状态。
[0020] 本发明至少具有以下有益效果:通过将区块链网络中的节点分为订阅者节点和发布者节点,订阅者节点和发布者节点彼此之间多对多的相互订阅,并通过在订阅者节点上建立发布者节点心跳监控任务线程,实时检测发布者节点的在线状态,并在判定发布者节点的在线状态为离线状态时更换订阅的发布者节点,进而实现区块链网络中发布者节点和订阅者节点之间的实时事件状态,相较于传统的通过第三方中间件进行统一的收集与分发订阅事件消息,该方式通过分布式的订阅有效增加了区块链网络中各节点之间的事件状态信息的传播速度,进而提高区块链网络整体运行效率。

附图说明

[0021] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0022] 图1是本发明一实施例提出的分布式订阅发布系统中订阅者节点和发布者节点之间的订阅步骤的运行原理图。

具体实施方式

[0023] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024] 实施例1
[0025] 本实施了提供一种分布式订阅发布系统,所述系统包括多个发布者节点和多个订阅者节点,需要阐述的是区块链网络中个各种事件的发布者节点不唯一,订阅节点仅能在多个发布者节点中选择其中一个发布着节点进行订阅,同时应当说明的是,发布者节点有权选择是否让该订阅者节点接入订阅接口,进而使每个发布者节点能够根据自身的运行情况判定是否同意该订阅,提供能自定义的供求均衡设置功能,每个所述发布者节点可以订阅至少一个所述订阅者节点,每个所述订阅者节点可以接收至少一个所述发布者节点的订阅,其中,对于一种事件的订阅每个所述订阅者节点仅可订阅一个对应的所述发布者节点,且仅在对应的所述发布者节点离线后随机不重复地订阅其他发布者节点,通过将区块链网络中的节点分为订阅者节点和发布者节点,订阅者节点和发布者节点彼此之间多对多的相互订阅,并通过在订阅者节点上建立发布者节点心跳监控任务线程,实时检测发布者节点的在线状态,并在判定发布者节点的在线状态为离线状态时更换订阅的发布者节点,进而实现区块链网络中发布者节点和订阅者节点之间的实时事件状态,相较于传统的通过第三方中间件进行统一的收集与分发订阅事件消息,该方式通过分布式的订阅有效增加了区块链网络中各节点之间的事件状态信息的传播速度,进而提高区块链网络整体运行效率。
[0026] 实施例2
[0027] 如图1所示,基于实施例1所述的一种分布式订阅发布系统,,在举例说明之前,需要阐述的是区块链网络中个各种事件的发布者节点不唯一,订阅节点仅能在多个发布者节点中选择其中一个发布着节点进行订阅,同时应当说明的是,发布者节点有权选择是否让该订阅者节点接入订阅接口,进而使每个发布者节点能够根据自身的运行情况判定是否同意该订阅,提供能自定义的供求均衡设置功能,本实施例提供一种分布式订阅发布方法,所述方法包括步骤S1、步骤S2、步骤S3和步骤S4。
[0028] 步骤S1.订阅者节点获取第一上层应用系统发送的订阅指令,所述订阅指令包括第一订阅事件类型;
[0029] 步骤S2.订阅者节点根据所述事件类型在本地区块链公共账本中调取多个对应的发布者节点标识,并随机选择一个所述对应的发布者节点标识记为第一发布者节点标识;
[0030] 步骤S3.订阅者节点根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;
[0031] 步骤S4.订阅者节点接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中,并为第一发布者节点创建第一心跳监测任务,所述第一心跳监测任务用于定期监测所述第一发布者节点的在线状态,并在第一心跳监测任务检测到第一发布者节点的在线状态为离线状态时,随机选择另一个发布者节点进行订阅,其次,发布者节点仅将当前最新的事件状态信息反馈至订阅者节点,即发布者节点关心订阅者节点的历史信息,这种订阅方式可以有效地降低发布者节点的存储空间占用率。
[0032] 在步骤S4中订阅者节点接受所述第一发布者发送的订阅成功信息之后,订阅者节点和第一发布者节点均有后续动作,其中:
[0033] 第一方面:就第一发布者而言,第一发布者节点创建第一发布者事件推送任务,以使所述订阅者节点持续收到所述第一订阅事件的状态信息,所述第一发布者事件推送任务包括事件状态变更推送子任务和第一心跳子任务,所述事件状态变更推送子任务用于在所述第一订阅事件的状态信息发生变化时向所述订阅者节点发送变更后的第一订阅事件的状态信息,所述第一心跳子任务用于定期向所述订阅者节点发送当前的第一订阅事件的状态信息;
[0034] 第二方面,就订阅者节点而言,订阅者节点创建第一发布者节点对应的监测任务,记为第一定时任务,所述第一定时任务用于定期检测第一发布者的在线状态,并在所述第一发布者在预设时间内未响应所述第一定时任务的情况下,删除记录在所述发布者列表中的第一发布者信息,以使所述订阅节点筛除第一发布者发送的第一订阅事件的信息;
[0035] 其中,上述的筛除第一发布者发送的第一订阅事件的信息的具体操作可以为:订阅者节点获取多个发布者节点发送的多个事件信息,所述多个事件信息包括所述第一发布者发送的第一订阅事件的信息;订阅者节点在所述发布者列表没有所述第一发布者信息的情况下,拦截并删除所述多个事件信息中的第一订阅事件的信息。
[0036] 实施例3
[0037] 本实施例提供一种分布式订阅发布装置,所述装置适用于区块链网络中任一订阅者节点,所述装置包括:
[0038] 请求模块,用于根据第一发布者节点标识向第一发布者节点发送第一订阅请求,以使所述第一发布者生成第一订阅注册表,并将第一订阅事件的当前状态信息发送至所述订阅者节点,所述第一订阅事件为第一订阅请求对应的业务事件;
[0039] 接收模块,用于接受所述第一发布者发送的订阅成功信息和第一订阅事件的当前状态信息,并将第一发布者信息记录在发布者列表中,并为第一发布者节点创建第一心跳监测任务,所述第一心跳监测任务用于定期监测所述第一发布者节点的在线状态;
[0040] 其中,请求模块还可用于创建第一发布者节点对应的监测任务,记为第一定时任务,所述第一定时任务用于定期检测第一发布者的在线状态,并在所述第一发布者在预设时间内未响应所述第一定时任务的情况下,删除记录在所述发布者列表中的第一发布者信息,以使所述订阅节点筛除第一发布者发送的第一订阅事件的信息。
[0041] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0042] 本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0043] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。