CN115022392A - 面向iot的分布式发布订阅服务方法和系统 - Google Patents
面向iot的分布式发布订阅服务方法和系统 Download PDFInfo
- Publication number
- CN115022392A CN115022392A CN202210721769.7A CN202210721769A CN115022392A CN 115022392 A CN115022392 A CN 115022392A CN 202210721769 A CN202210721769 A CN 202210721769A CN 115022392 A CN115022392 A CN 115022392A
- Authority
- CN
- China
- Prior art keywords
- client
- message
- publish
- node
- subscribe
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000008569 process Effects 0.000 claims description 10
- 230000001360 synchronised effect Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了面向IOT的分布式发布订阅服务方法和系统,属于计算机技术领域,本发明要解决的技术问题为如何实现面向IOT的分布式发布订阅服务和消息同步,降低分布式帆布订阅的复杂性,减少信息冗余,提高稳定性,采用的技术方案为:该方法是通过将分布式数据库和发布订阅服务端相结合的方式,将发布订阅服务端中的retain消息以及客户端的订阅列表以表的形式保存在分布式数据库中,分布式数据库用于同步以及保存多副本的保存表,并提供按查询、更改表的功能;发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群。该系统包括若干节点,每个节点包括一个分布式数据库和一个发布订阅服务端。
Description
技术领域
本发明涉及计算机技术领域,具体地说是一种面向IOT的分布式发布订阅服务方法和系统。
背景技术
物联网(Internet of Things,简称IoT)是指通过各种信息传感器、射频识别技术、全球定位系统等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。
物联网中最重要的就是不同装置之间的互联和信息的传递,而在IoT领域,大量设备以及很可能不可靠或高延迟的网络使得同步通信成为问题。异步消息协议更适合IoT应用程序,并且如果使用HTTP等1对1协议时,客户端发出请求,服务器进行响应。将消息传送到网络上的所有设备上,不但很困难,而且成本很高,而这是IoT应用程序中的一种常见使用情况,所以通常采用异步处理消息的发布订阅模式。
发布订阅属于软件架构中的一种消息范式,用于异步的传递消息,在网络中定义了两种实体类型:一个消息代理和一些客户端。代理是一个服务器,它从客户端接收所有消息,然后将这些消息路由到相关的目标客户端。客户端是能够与服务器交互来发送和接收消息的任何事物。客户端可以是现场的IoT传感器,或者是数据中心内处理IoT数据的应用程序。消息订阅者会将感兴趣的主题通知到服务器,可以关注对一个或多个主题,而发布者会将发布的消息分为不同的主题发送到服务器,交由服务器进行转发。
在一些IoT场景中,会采用分布式发布订阅系统来增加发布订阅服务系统的可扩展性和稳定性,分布式发布订阅系统的主体是发布订阅集群,也就是由多个服务器组成的网络,要求网络中每个服务器都是平等的,当某个服务器突然宕机,其他服务器还能提供同等的服务,且retain消息不能丢失。retain消息是发布订阅服务中消息的一种,该种消息不会随着发送到订阅者后删除,而会一直保留,当新订阅者或者重连的订阅者连接到服务器中,retain消息会再次发送。
在分布式发布订阅系统中,为了防止某个服务器突然宕机引起的信息丢失,一般采用两种方式:
①服务器会将与自己相连的客户端的地址,客户端订阅的主题,retain消息广播到所有的服务器中进行保留,这形成了极大的信息冗余,且给服务器之间的网络交互造成很大的压力。
②服务器在宕机后,客户端会重新向集群发起连接请求,由集群分配一个服务器来连接客户端,且客户端在重连后会将自己订阅的主题以及retain消息重新发送,交由新服务端保存。这种方法就要求客户端自己也要保存一份订阅主题和retain消息,给客户端造成较大的麻烦。
分布式数据库是逻辑上统一,物理上分为不同的物理节点的数据库系统,一个应用程序通过网络的连接可以访问分布在不同地理位置的数据库。通常情况下,数据会保存成多个副本,保存在不同的物理节点,并且会由数据库系统同步。这一特性与分布式发布订阅的需求相契合,且数据库系统还可以持久化的保存数据,在很多IoT场景中也会出现。
故如何实现面向IOT的分布式发布订阅服务和消息同步,降低分布式帆布订阅的复杂性,减少信息冗余,提高稳定性是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种面向IOT的分布式发布订阅服务方法和系统,来解决如何实现面向IOT的分布式发布订阅服务和消息同步,降低分布式帆布订阅的复杂性,减少信息冗余,提高稳定性的问题。
本发明的技术任务是按以下方式实现的,一种面向IOT的分布式发布订阅服务方法,该方法是通过将分布式数据库和发布订阅服务端相结合的方式,将发布订阅服务端中的retain消息以及客户端的订阅列表以表的形式保存在分布式数据库中,分布式数据库用于同步以及保存多副本的保存表,并提供按查询、更改表的功能;发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;具体如下:
客户端订阅主题消息;
客户端发布主题消息。
作为优选,所述分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
作为优选,所述发布订阅服务端还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作;
客户端向集群中任一节点发起连接请求时,该节点中的发布订阅服务端负责建立与客户端的连接,并保存客户端的信息。
作为优选,客户端订阅主题消息具体如下:
客户端向发布订阅服务端中发送一条订阅类型的消息;
发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
若有,则在行的Clients列中添加该客户端的网络地址;
若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库会将subscriber表的变化同步到其他副本当中。
作为优选,客户端发布主题消息具体如下:
客户端向发布订阅服务端中发送一条发布类型的消息;
发布订阅服务端从发布类型的消息中解析出发布的主题;
发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
若节点ID为本地,则将消息转发到对应的节点中,交由其他节点将消息发布到订阅了该主题的客户端;
若节点ID非本地,则直接根据网络地址发送消息;
若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息。
更优地,当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由分布式数据库同步到副本当中。
一种面向IOT的分布式发布订阅服务系统,该系统包括若干节点,每个节点包括一个分布式数据库和一个发布订阅服务端;
分布式数据库用于同步及保存多副本的保存表,并提供按查询、更改表的功能;
发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;同时还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作。
作为优选,所述分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
作为优选,当客户端想要连接到分布式发布订阅系统时,客户端向集群中任一节点发起连接请求(一般来说是网络地址最近的节点),该节点中的发布订阅服务端负责建立与客户端之间的连接,并保存客户端的信息。
更优地,当客户端订阅主题消息具体如下:
客户端向发布订阅服务端中发送一条订阅类型的消息;
发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
若有,则在行的Clients列中添加该客户端的网络地址;
若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库将subscriber表的变化同步到其他副本当中;
当客户端发布主题消息具体如下:
客户端向发布订阅服务端中发送一条发布类型的消息;
发布订阅服务端从发布类型的消息中解析出发布的主题;
发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
若节点ID为本地,则将消息转发到对应的节点中,交由其他节点将消息发布到订阅了该主题的客户端;
若节点ID非本地,则直接根据网络地址发送消息;
若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息;
当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由数据库同步到副本当中;
当任一节点宕机后,客户端连接到另一个节点,该节点只需要建立连接即可,无需再次发布订阅消息。
本发明的面向IOT的分布式发布订阅服务方法和系统具有以下优点:
(一)本发明通过将分布式数据库和发布订阅服务端结合的方法,将发布订阅服务中retain消息以及客户端的订阅列表以表的形式保存在数据库节点中,由分布式数据库负责同步以及保存,有效的满足了IoT场景的需求,极大的提高了发布订阅服务的鲁棒性,降低了发布订阅服务系统的复杂性,提高了消息发布和订阅的效率;
(二)本发明将发布订阅服务和分布式数据库的优势相结合,用于解决订阅主题和retain消息同步问题,降低分布式发布订阅系统的复杂性,减少信息冗余,提高稳定性;
(三)当集群中某个节点宕机,和该节点相连接的客户端的订阅列表不会丢失,客户端重连后无需再次发布订阅消息,降低了系统的复杂性;
(四)当集群中某个节点宕机,该节点保存的retain消息不会丢失,增加了发布订阅服务系统的鲁棒性;
(五)本发明订阅列表和retain消息不会保存在每个节点当中,降低了消息的冗余程度;
(六)本发买那个添加了分布式数据库,可以保存更多的数据,增加了可扩展性;
(七)本发明的发布订阅服务端之间无需发送同步数据,减少了发布订阅服务端的工作量。
附图说明
下面结合附图对本发明进一步说明。
附图1为面向IOT的分布式发布订阅服务系统的示意图;
附图2为客户端订阅消息的示意图;
附图3为客户端发布消息的示意图。
具体实施方式
参照说明书附图和具体实施例对本发明的面向IOT的分布式发布订阅服务方法和系统作以下详细地说明。
实施例1:
本实施例提供了一种面向IOT的分布式发布订阅服务方法,该方法是通过将分布式数据库和发布订阅服务端相结合的方式,将发布订阅服务端中的retain消息以及客户端的订阅列表以表的形式保存在分布式数据库中,分布式数据库用于同步以及保存多副本的保存表,并提供按查询、更改表的功能;发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;具体如下:
S1、客户端订阅主题消息;
S2、客户端发布主题消息。
本实施例中的分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
retain表的结构如下表所示:
MessageID | Topic | Message |
1 | "temperate" | "2020-1-1 16:25:28 15℃" |
subscriber表的结构如下表所示:
本实施例中的发布订阅服务端还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作;
客户端向集群中任一节点发起连接请求时,该节点中的发布订阅服务端负责建立与客户端的连接,并保存客户端的信息。
如附图2所示,本实施例中的客户端订阅主题消息具体如下:
S101、客户端向发布订阅服务端中发送一条订阅类型的消息;
S102、发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
S103、发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
①、若有,则在行的Clients列中添加该客户端的网络地址;
②、若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库会将subscriber表的变化同步到其他副本当中。
如附图3所示,本实施例中的客户端发布主题消息具体如下:
S201、客户端向发布订阅服务端中发送一条发布类型的消息;
S202、发布订阅服务端从发布类型的消息中解析出发布的主题;
S203、发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
①、若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
②、若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息。
本实施例中,当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由分布式数据库同步到副本当中。
实施例2:
如附图1所示,本实施例提供了一种面向IOT的分布式发布订阅服务系统,该系统包括若干节点,每个节点包括一个分布式数据库和一个发布订阅服务端;
分布式数据库用于同步及保存多副本的保存表,并提供按查询、更改表的功能;
发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;同时还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作。
本实施例中的分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
retain表的结构如下表所示:
MessageID | Topic | Message |
1 | "temperate" | "2020-1-1 16:25:28 15℃" |
subscriber表的结构如下表所示:
本实施例中,当客户端想要连接到分布式发布订阅系统时,客户端向集群中任一节点发起连接请求(一般来说是网络地址最近的节点),该节点中的发布订阅服务端负责建立与客户端之间的连接,并保存客户端的信息。
本实施例中,当客户端订阅主题消息具体如下:
(1)、客户端向发布订阅服务端中发送一条订阅类型的消息;
(2)、发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
(3)、发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
①、若有,则在行的Clients列中添加该客户端的网络地址;
②、若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库将subscriber表的变化同步到其他副本当中;
本实施例中,当客户端发布主题消息具体如下:
(1)、客户端向发布订阅服务端中发送一条发布类型的消息;
(2)、发布订阅服务端从发布类型的消息中解析出发布的主题;
(3)、发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
①、若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
②、若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息;
本实例中,当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由数据库同步到副本当中;
本实施例中,当任一节点宕机后,客户端连接到另一个节点,该节点只需要建立连接即可,无需再次发布订阅消息。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种面向IOT的分布式发布订阅服务方法,其特征在于,该方法是通过将分布式数据库和发布订阅服务端相结合的方式,将发布订阅服务端中的retain消息以及客户端的订阅列表以表的形式保存在分布式数据库中,分布式数据库用于同步以及保存多副本的保存表,并提供按查询、更改表的功能;发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;具体如下:
客户端订阅主题消息;
客户端发布主题消息。
2.根据权利要求1所述的面向IOT的分布式发布订阅服务方法,其特征在于,所述分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
3.根据权利要求1所述的面向IOT的分布式发布订阅服务方法,其特征在于,所述发布订阅服务端还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作;
客户端向集群中任一节点发起连接请求时,该节点中的发布订阅服务端负责建立与客户端的连接,并保存客户端的信息。
4.根据权利要求1所述的面向IOT的分布式发布订阅服务方法,其特征在于,客户端订阅主题消息具体如下:
客户端向发布订阅服务端中发送一条订阅类型的消息;
发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
若有,则在行的Clients列中添加该客户端的网络地址;
若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库会将subscriber表的变化同步到其他副本当中。
5.根据权利要求1所述的面向IOT的分布式发布订阅服务方法,其特征在于,客户端发布主题消息具体如下:
客户端向发布订阅服务端中发送一条发布类型的消息;
发布订阅服务端从发布类型的消息中解析出发布的主题;
发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
若节点ID为本地,则将消息转发到对应的节点中,交由其他节点将消息发布到订阅了该主题的客户端;
若节点ID非本地,则直接根据网络地址发送消息;
若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息。
6.根据权利要求1-5中任一所述的面向IOT的分布式发布订阅服务方法,其特征在于,当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由分布式数据库同步到副本当中。
7.一种面向IOT的分布式发布订阅服务系统,其特征在于,该系统包括若干节点,每个节点包括一个分布式数据库和一个发布订阅服务端;
分布式数据库用于同步及保存多副本的保存表,并提供按查询、更改表的功能;
发布订阅服务端用于和客户端之间进行消息的交互,并与其他发布订阅服务端之间进行互联以构成集群;同时还用于解析客户端传来的消息,并且根据消息类型的不同进行相应的操作。
8.根据权利要求7所述的面向IOT的分布式发布订阅服务系统,其特征在于,所述分布式数据库内包括retain表和subscriber表,retain表用于保存retain消息,subscriber表用于保存订阅主题和节点、客户端网络地址之间的联系;retain表和subscriber表交由分布式数据库进行节点之间的同步,使得对于每个发布订阅服务端,均能够获取retain表和subscriber表的信息,并且能够进行修改;
subscriber表和retain表无需保存在每个节点当中,只要在分布式数据库中拥有足够的副本即可;若任一节点上的数据库未保存表,分布式数据库中的数据库管理系统会自动向拥有该块数据的节点上进行查询,并将查询结果返回到对应节点。
9.根据权利要求7所述的面向IOT的分布式发布订阅服务系统,其特征在于,当客户端想要连接到分布式发布订阅系统时,客户端向集群中任一节点发起连接请求,该节点中的发布订阅服务端负责建立与客户端之间的连接,并保存客户端的信息。
10.根据权利要求7-9中任一所述的面向IOT的分布式发布订阅服务系统,其特征在于,当客户端订阅主题消息具体如下:
客户端向发布订阅服务端中发送一条订阅类型的消息;
发布订阅服务端从订阅类型的消息中解析出想要订阅的主题;
发布订阅服务端向subscriber表进行查询,查看本地是否有其他客户端订阅了相同的主题,即subscriber表中是否有一行的topic等于该主题,且SubNodes等于该节点ID:
若有,则在行的Clients列中添加该客户端的网络地址;
若无,则将该主题、本地节点ID以及该客户端的网络地址添加到新的一行,该节点中的数据库将subscriber表的变化同步到其他副本当中;
当客户端发布主题消息具体如下:
客户端向发布订阅服务端中发送一条发布类型的消息;
发布订阅服务端从发布类型的消息中解析出发布的主题;
发布订阅服务端向subscriber表中进行查询,判断subscriber表的topic列是否存在相同的主题:
若subscriber表的topic列存在相同的主题,则提取出相应的行进行解析,再判断节点ID是否为本地:
若节点ID为本地,则将消息转发到对应的节点中,交由其他节点将消息发布到订阅了该主题的客户端;
若节点ID非本地,则直接根据网络地址发送消息;
若在subscriber表中找不到该主题,则说明该主题目前没有客户端订阅,丢弃该条消息;
当客户端发送一个带有retain属性的消息时,发布订阅服务端将带有retain属性的消息保存到retain表中,再按照正常的发布消息流程处理,retain表中的变化交由数据库同步到副本当中;
当任一节点宕机后,客户端连接到另一个节点,该节点只需要建立连接即可,无需再次发布订阅消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210721769.7A CN115022392B (zh) | 2022-06-24 | 2022-06-24 | 面向iot的分布式发布订阅服务方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210721769.7A CN115022392B (zh) | 2022-06-24 | 2022-06-24 | 面向iot的分布式发布订阅服务方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115022392A true CN115022392A (zh) | 2022-09-06 |
CN115022392B CN115022392B (zh) | 2024-04-30 |
Family
ID=83076766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210721769.7A Active CN115022392B (zh) | 2022-06-24 | 2022-06-24 | 面向iot的分布式发布订阅服务方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115022392B (zh) |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1908970A (zh) * | 2005-08-03 | 2007-02-07 | 北京航空航天大学 | 分布式的信息发布/订阅系统 |
CN1953426A (zh) * | 2005-10-19 | 2007-04-25 | 国际商业机器公司 | 用于管理订阅的发布/订阅系统和方法 |
CN101308513A (zh) * | 2008-06-27 | 2008-11-19 | 福建星网锐捷网络有限公司 | 分布式系统中缓存数据的同步配置方法与装置 |
US20090287805A1 (en) * | 2008-05-13 | 2009-11-19 | International Business Machines Corporation | System & method for non-http session based publish/subscribe support using pre-emptive subscriptions |
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
CN202058147U (zh) * | 2011-05-23 | 2011-11-30 | 北京六所和瑞科技发展有限公司 | 分布式实时数据库管理系统 |
CN102724304A (zh) * | 2012-06-06 | 2012-10-10 | 哈尔滨工程大学 | 订阅/发布系统中信息仓库联邦及数据同步方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
KR101609532B1 (ko) * | 2014-11-19 | 2016-04-20 | 경북대학교 산학협력단 | 확장형 게시-구독 메시징 서비스 방법 및 시스템 |
US20160173423A1 (en) * | 2001-11-30 | 2016-06-16 | Aurea Software, Inc. | Dynamic Subscription and Message Routing on a Topic Between Publishing Nodes and Subscribing Nodes |
US20160210313A1 (en) * | 2015-01-16 | 2016-07-21 | Futurewei Technologies, Inc. | System for high-throughput handling of transactions in a data-partitioned, distributed, relational database management system |
CN106657394A (zh) * | 2017-02-10 | 2017-05-10 | 山东浪潮商用系统有限公司 | 一种基于物联网大数据的设备信息采集系统及方法 |
CN107229639A (zh) * | 2016-03-24 | 2017-10-03 | 上海宝信软件股份有限公司 | 分布式实时数据库的存储系统 |
CN107809489A (zh) * | 2017-11-17 | 2018-03-16 | 南京感度信息技术有限责任公司 | 一种基于mqtt协议的消息推送系统 |
CN110336736A (zh) * | 2019-05-27 | 2019-10-15 | 四川长虹电器股份有限公司 | 基于mqtt服务器集群实现共享订阅的方法 |
CN112055048A (zh) * | 2020-07-29 | 2020-12-08 | 北京智融云河科技有限公司 | 一种面向高吞吐率分布式账本的p2p网络通信方法和系统 |
CN112131231A (zh) * | 2020-08-27 | 2020-12-25 | 中信银行股份有限公司 | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 |
CN113630366A (zh) * | 2020-05-07 | 2021-11-09 | 中移物联网有限公司 | 一种物联网设备接入方法及系统 |
CN114650291A (zh) * | 2020-12-17 | 2022-06-21 | 中移(苏州)软件技术有限公司 | 订阅信息处理方法及装置、服务节点、存储介质 |
-
2022
- 2022-06-24 CN CN202210721769.7A patent/CN115022392B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160173423A1 (en) * | 2001-11-30 | 2016-06-16 | Aurea Software, Inc. | Dynamic Subscription and Message Routing on a Topic Between Publishing Nodes and Subscribing Nodes |
CN1908970A (zh) * | 2005-08-03 | 2007-02-07 | 北京航空航天大学 | 分布式的信息发布/订阅系统 |
CN1953426A (zh) * | 2005-10-19 | 2007-04-25 | 国际商业机器公司 | 用于管理订阅的发布/订阅系统和方法 |
US20090287805A1 (en) * | 2008-05-13 | 2009-11-19 | International Business Machines Corporation | System & method for non-http session based publish/subscribe support using pre-emptive subscriptions |
CN101308513A (zh) * | 2008-06-27 | 2008-11-19 | 福建星网锐捷网络有限公司 | 分布式系统中缓存数据的同步配置方法与装置 |
CN101848236A (zh) * | 2010-05-06 | 2010-09-29 | 北京邮电大学 | 具有分布式网络架构的实时数据分发系统及其工作方法 |
CN202058147U (zh) * | 2011-05-23 | 2011-11-30 | 北京六所和瑞科技发展有限公司 | 分布式实时数据库管理系统 |
CN102724304A (zh) * | 2012-06-06 | 2012-10-10 | 哈尔滨工程大学 | 订阅/发布系统中信息仓库联邦及数据同步方法 |
CN104092767A (zh) * | 2014-07-21 | 2014-10-08 | 北京邮电大学 | 一种增加消息队列模型的发布/订阅系统及其工作方法 |
KR101609532B1 (ko) * | 2014-11-19 | 2016-04-20 | 경북대학교 산학협력단 | 확장형 게시-구독 메시징 서비스 방법 및 시스템 |
US20160210313A1 (en) * | 2015-01-16 | 2016-07-21 | Futurewei Technologies, Inc. | System for high-throughput handling of transactions in a data-partitioned, distributed, relational database management system |
CN107113341A (zh) * | 2015-01-16 | 2017-08-29 | 华为技术有限公司 | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 |
CN107229639A (zh) * | 2016-03-24 | 2017-10-03 | 上海宝信软件股份有限公司 | 分布式实时数据库的存储系统 |
CN106657394A (zh) * | 2017-02-10 | 2017-05-10 | 山东浪潮商用系统有限公司 | 一种基于物联网大数据的设备信息采集系统及方法 |
CN107809489A (zh) * | 2017-11-17 | 2018-03-16 | 南京感度信息技术有限责任公司 | 一种基于mqtt协议的消息推送系统 |
CN110336736A (zh) * | 2019-05-27 | 2019-10-15 | 四川长虹电器股份有限公司 | 基于mqtt服务器集群实现共享订阅的方法 |
CN113630366A (zh) * | 2020-05-07 | 2021-11-09 | 中移物联网有限公司 | 一种物联网设备接入方法及系统 |
CN112055048A (zh) * | 2020-07-29 | 2020-12-08 | 北京智融云河科技有限公司 | 一种面向高吞吐率分布式账本的p2p网络通信方法和系统 |
CN112131231A (zh) * | 2020-08-27 | 2020-12-25 | 中信银行股份有限公司 | 一种分布式数据库编目管理方法、系统、电子设备和可读存储介质 |
CN114650291A (zh) * | 2020-12-17 | 2022-06-21 | 中移(苏州)软件技术有限公司 | 订阅信息处理方法及装置、服务节点、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115022392B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101668031B (zh) | 一种消息处理方法及系统 | |
EP1542409B1 (en) | Protocol for multi-hop ad-hoc networks | |
US8566423B2 (en) | Scalable publish/subscribe messaging systems and methods | |
US8195757B2 (en) | Method, apparatus and computer program for controlling retention of publications | |
EP2434758B1 (en) | Distributed node video monitoring system and management method thereof | |
EP1867137B1 (en) | Method and apparatus for efficiently expanding a p2p network | |
US9881071B2 (en) | Transport layer abstraction for clustering implementation | |
US20080010299A1 (en) | File management system | |
WO2010025652A1 (zh) | 移动搜索方法及其系统、搜索服务器同步搜索能力的方法 | |
CN112711635B (zh) | 一种分布式物联设备跨区域数据一致性的方法和服务集群 | |
US20060233322A1 (en) | Methods and apparatus for switching between data streams | |
US20020156931A1 (en) | Remote file system using network multicast | |
EP1454456B1 (en) | Event notification over a communications network | |
US7464168B1 (en) | Mechanism for decentralized entity presence | |
CN111147534B (zh) | 一种微服务架构下的通信方法及系统 | |
CN114978683A (zh) | 一种基于mqtt协议的反向代理系统 | |
JP2014038483A (ja) | データ配信システム、データ配信方法、およびプログラム | |
CN114338769A (zh) | 访问请求的处理方法及装置 | |
US20050125414A1 (en) | System and method for facilitating asynchronous disconnected operations for data access over a network | |
CN115022392B (zh) | 面向iot的分布式发布订阅服务方法和系统 | |
Hayashi et al. | Updated data dissemination methods for updating old replicas in ad hoc networks | |
US8850035B1 (en) | Geographically distributed real time communications platform | |
TWI477113B (zh) | Information processing methods and systems | |
CN115103008A (zh) | 一种服务请求转发系统 | |
CN114500660B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |