WO2019042110A1 - 一种订阅发布方法及服务器 - Google Patents

一种订阅发布方法及服务器 Download PDF

Info

Publication number
WO2019042110A1
WO2019042110A1 PCT/CN2018/099659 CN2018099659W WO2019042110A1 WO 2019042110 A1 WO2019042110 A1 WO 2019042110A1 CN 2018099659 W CN2018099659 W CN 2018099659W WO 2019042110 A1 WO2019042110 A1 WO 2019042110A1
Authority
WO
WIPO (PCT)
Prior art keywords
client
topic
subscription
identifier
server
Prior art date
Application number
PCT/CN2018/099659
Other languages
English (en)
French (fr)
Inventor
许金川
吴英德
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP18851872.4A priority Critical patent/EP3668055B1/en
Publication of WO2019042110A1 publication Critical patent/WO2019042110A1/zh
Priority to US16/802,376 priority patent/US20200195740A1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/566Grouping or aggregating service requests, e.g. for unified processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2858Access network architectures
    • H04L12/2859Point-to-point connection between the data network and the subscribers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • H04L12/2856Access arrangements, e.g. Internet access
    • H04L12/2869Operational details of access network equipments
    • H04L12/287Remote access server, e.g. BRAS
    • H04L12/2876Handling of subscriber policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Definitions

  • the embodiments of the present invention relate to the field of communications, and in particular, to a subscription publishing method and a server.
  • the Message Queue Telemetry Transport (MQTT) protocol is a message transmission protocol for publishing a subscription mechanism.
  • the subscription and subscription mechanism is: a subscription client on a subscription terminal having a management function such as a mobile phone or a notebook can send the message to the server.
  • the publishing client with the subject of the subscription message, temperature sensor, etc. can send a publishing message containing the topic to the server, so that the server can send the publishing message to the subscribing client that subscribes to the topic included in the publishing message.
  • the MQTT protocol is lightweight, open, simple, and standardized, and can be applied to restricted environments such as machine-to-machine (M2M) and Internet of Things (IOT).
  • M2M machine-to-machine
  • IOT Internet of Things
  • a subscription client on a subscribing terminal is typically used to manage a large number of publishing terminals through a publishing client on the publishing terminal.
  • a subscribing client can subscribe to messages published by all publishing clients in the IOT environment through a topic containing wildcards, and perform fan in processing on all received messages.
  • the fan-in process is: subscription
  • the client can perform complex operations such as aggregation and statistics on all published messages, and present the operation results as icons or pages to the user, or send the operation results to the next layer of devices.
  • the pressure of the subscription client to process the published message is proportional to the number of publishing clients, but the ability of the subscribing client to process the publishing of the message is limited, so when the number of publishing clients reaches a certain size, one subscribing client cannot.
  • the subscribing client changes from "what release messages can be subscribed to" to "what release messages can be processed”, so that how the subscribing client subscribes to the release messages that can be processed becomes the key.
  • Two schemes for publishing messages that can be processed by a subscribing client subscription are provided in the prior art:
  • the subscribing client can subscribe to the publishing message of each publishing client one by one according to the ability to process the publishing message, that is, the subscribing client can process several publishing messages, and then send several subscription topics to the server, each Wildcards are not included in the subscription theme.
  • the subscribing client divides the different publishing clients into different areas, so that the publishing client carries the area identifier in the publishing topic, and the subscribing client determines according to the ability of the subscribing client to process the publishing of the message. Process which areas are published and add these area IDs to the subscription topic.
  • the subscription client since the subscription client needs to send the subscription topic to the server one by one, in the case of the subscription client expansion, migration, etc., the subscription relationship of the subscription client needs to be changed, that is, the subscription client first cancels the subscription and then resubscribes. As a result, it is difficult to maintain the subscription relationship on the subscribing client.
  • the subscribing client since the area is divided by the subscribing client, in the case of subscribing client expansion, migration, etc., the subscribing client needs to re-zone and publish the subscribing message, thereby causing the subscription relationship maintenance on the subscribing client. More difficult.
  • the present application provides a subscription publishing method and a server, which solves the problem that the subscription relationship maintenance on the subscribing client is difficult to maintain in the case that the subscribing client subscribes to the published message.
  • the first aspect of the present application provides a subscription publishing method, including: a server may receive a publishing message sent by a publishing client, including a topic name, and obtain an identifier of the publishing client according to the received publishing message, and the server may The topic name in the publishing message is used to search the subscription tree, obtain the identifier of the subscribing client, and obtain the first label corresponding to the identifier of the subscribing client according to the identifier of the subscribing client and the first mapping table, and according to the identifier of the publishing client and the A mapping table obtains a second label corresponding to the identifier of the publishing client, and the server matches the obtained first label with the second label, and determines that the first label and the second label match successfully, and the subscription client Send a post message.
  • the subscription tree is a topology consisting of at least one topic filter, and the identifier of the subscribing client is an identifier corresponding to a topic filter that successfully matches the topic name.
  • Each entry of the first mapping table includes an identifier of the client and a corresponding label.
  • the tag is used to indicate at least one attribute information of the client corresponding to the tag.
  • the subscription publishing method provided by the application after receiving the publishing message including the topic name sent by the publishing client, and obtaining the identity of the publishing client according to the publishing message, the server may search the subscription tree according to the topic name to obtain the topic name. Matching the identifier of the subscribing client corresponding to a successful topic filter, and obtaining the first label according to the identifier of the subscribing client and the first mapping table, and obtaining the second label according to the identifier of the publishing client and the first mapping table, The first tag and the second tag are matched, and the server sends a publish message to the subscribing client if it is determined that the first tag and the second tag match successfully.
  • the first mapping table that records the correspondence between the client identifier and the label is stored in the server in advance, and the server may match the attribute information of the publishing client and the subscribing client when the topic name and the topic filter are successfully matched. And when the attribute information of the publishing client and the subscribing client is successfully matched, the publishing message is sent to the subscribing client. In this way, when the subscription client migrates and expands, the subscribing client does not need to re-subscribe the subscription message, and only changes the attribute information of the client, thereby solving the problem that the subscribing client maintains the subscription relationship and maintains the subscription relationship.
  • the attribute information of the client in the present application is a plurality of information including the area, and the subscription client can obtain more dimensions of the publishing message, that is, the subscription of more dimensions, compared with the only matching area in the prior art. , the scalability is better.
  • the server obtains the first label corresponding to the identifier of the subscribing client according to the identifier of the subscribing client and the first mapping table, and the specific information may include: determining, by the server, the subscription client support label In the case of matching, the first label is obtained according to the identifier of the subscribing client and the first mapping table.
  • the application may further include: the server may send the release message to the subscribing client if it is determined that the subscribing client does not support the tag matching. In this way, since the label of the client is maintained in the server, compared with the carrying of the area identifier in the subject in the prior art 2, the reservation of the subscription publishing mechanism that only supports the topic matching in the prior art is implemented.
  • the method may further include: the server receiving the subscription client sends the At least one topic filter subscribes to the message and obtains the identity of the subscribing client based on the received subscription message.
  • each theme filter is divided into multiple layers, each layer is a topic level, and each topic level is stored in the subscription tree.
  • the application may further include: the server may associate the first topic filter to the subscription tree and store in the subscription tree when determining that the first topic filter in the at least one topic filter supports tag matching
  • the information of the subscribing client is saved in the subtree of the last topic level of the first topic filter, and the information of the subscribing client may include: an identifier of the subscribing client and an indication for indicating that the subscribing client supports tag matching.
  • the first theme filter is any one of at least one theme filter.
  • the subscription message may further include: a first flag bit.
  • the first flag includes a first value or a second value, the first value is used to indicate that each topic filter in the at least one topic filter supports tag matching, and the second value is used to indicate that at least one topic filter includes at least A theme filter that does not support tag matching.
  • determining that the first topic filter in the at least one topic filter supports tag matching may include: determining, by the server, the first flag When the bit includes the first value, it is determined that the first topic filter supports tag matching.
  • the subscription message may further include: a second flag bit corresponding to each topic filter in the at least one topic filter, each second The flag bit may include a third value or a fourth value, the third value is used to indicate that the topic filter corresponding to the second flag bit supports tag matching, and the fourth value is used to indicate that the topic filter corresponding to the second flag bit does not support The tag matches.
  • determining that the first topic filter in the at least one topic filter supports tag matching may include: determining, by the server, the first flag The bit includes a second value, and when it is determined that the second flag bit corresponding to the first topic filter includes the third value, it is determined that the first topic filter supports tag matching.
  • the application may further include: the server may acquire the first topic according to the identifier of the subscribing client, the first topic filter, and the second mapping table.
  • the identifier information corresponding to the filter each identifier information includes a fifth value or a sixth value, the fifth value is used to indicate that the topic filter corresponding to the identifier information supports label matching, and the sixth value is used to indicate a topic corresponding to the identifier information.
  • the filter does not support tag matching.
  • the specific may include: the server may determine the first when determining that the identifier information corresponding to the first topic filter includes the fifth value A theme filter supports tag matching.
  • Each entry of the second mapping table includes an identifier of the client, at least one topic filter corresponding to the identifier of the client, and identifier information corresponding to each topic filter in the at least one topic filter.
  • determining that the subscribing client supports label matching may specifically include: the server may be in determining a subtree in which the identifier of the subscribing client is stored.
  • the server may be in determining a subtree in which the identifier of the subscribing client is stored.
  • the indication information indicating that the subscribing client supports tag matching is also stored, it is determined that the subscribing client supports tag matching.
  • the attribute information includes the attribute name and the attribute value
  • the specific information may include: the server may The attribute value of each attribute information included in the first label is compared with the attribute value of the corresponding attribute information included in the second label, respectively, and it is determined whether the attribute value of each attribute information included in the first label is separately included with the second label.
  • the attribute value of the corresponding attribute information conforms to the preset logical relationship.
  • determining that the first label and the second label are successfully matched may specifically include: determining, by the server, that the attribute value of each attribute information included in the first label is respectively corresponding to the corresponding attribute information included in the second label. If the attribute value conforms to the preset logical relationship, it is determined that the first label and the second label match successfully.
  • the label corresponding to the identifier of the client may be dynamically updated through the communication interface of the management label.
  • the application may further include: the server may receive, by the second subscription client, a second subscription message that includes at least one topic filter, And obtaining the identifier of the second subscription client according to the received second subscription message, and acquiring a pre-stored persistent message including the topic name.
  • the server can find the subscription tree according to the topic name included in the persistent message, obtain the identifier of the second subscription client corresponding to the topic filter that successfully matches the topic name of the persistent message, and obtain the second release according to the persistent message.
  • the identity of the client may be found according to the topic name included in the persistent message, obtain the identifier of the second subscription client corresponding to the topic filter that successfully matches the topic name of the persistent message, and obtain the second release according to the persistent message.
  • the server may obtain a third label corresponding to the identifier of the second publishing client according to the identifier of the second publishing client and the first mapping table, and obtain the second subscription client according to the identifier of the second subscription client and the first mapping table.
  • the identifier of the end corresponds to the fourth label, and the server may match the third label with the fourth label, and send a persistent message to the second subscription client if it is determined that the third label and the fourth label match successfully.
  • the persistent message is a persistent release message.
  • a server which may comprise a module capable of implementing the method of the first aspect and its various embodiments described above.
  • a server comprising: a processor, a memory, a communication interface, and a communication bus.
  • the memory is used to store computer execution instructions, the processor, the communication interface and the memory are connected by a communication bus, and when the server is running, the processor executes the memory storage computer execution instructions to enable the server to perform the first aspect or the first aspect as possible.
  • a subscription publishing method for any of the implementations.
  • a computer storage medium for storing computer software instructions for use by the server, the computer software instructions comprising a program designed to execute the above-described subscription publishing method.
  • FIG. 1 is a simplified schematic diagram of a system architecture that can be applied to an embodiment of the present application according to an embodiment of the present disclosure
  • FIG. 2 is a flowchart of a subscription publishing method according to an embodiment of the present application
  • FIG. 3 is a flowchart of another subscription publishing method according to an embodiment of the present application.
  • FIG. 4 is a schematic diagram of a format of a fixed head according to an embodiment of the present application.
  • FIG. 5 is a schematic diagram of a format of a payload according to an embodiment of the present disclosure.
  • FIG. 6 is a topological structural diagram of a subscription tree according to an embodiment of the present application.
  • FIG. 7 is a flowchart of performing topic matching layer by layer according to an embodiment of the present application.
  • FIG. 8 is a schematic structural diagram of a server according to an embodiment of the present application.
  • FIG. 9 is a schematic structural diagram of another server according to an embodiment of the present disclosure.
  • FIG. 10 is a schematic structural diagram of another server according to an embodiment of the present application.
  • the embodiment of the present application provides a subscription publishing method, and the basic principle is that the server receives the publishing client.
  • the sent message including the topic name is sent, and the identity of the publishing client is obtained according to the received publishing message, and the server searches the subscription tree according to the topic name, obtains the identifier of the subscribing client, and according to the identifier of the subscribing client and the first mapping table.
  • the subscription tree is a topology consisting of at least one topic filter
  • the identifier of the subscribing client is an identifier corresponding to a topic filter that successfully matches the topic name
  • each entry of the first mapping table includes the identifier of the client and the corresponding
  • the tag is used to indicate at least one attribute information of the client corresponding to the tag.
  • the first mapping table that records the correspondence between the client identifier and the label is stored in the server in advance, and the server may match the attribute information of the publishing client and the subscribing client when the topic name and the topic filter are successfully matched. And when the attribute information of the publishing client and the subscribing client is successfully matched, the publishing message is sent to the subscribing client. In this way, when the subscription client migrates and expands, the subscribing client does not need to re-subscribe the subscription message, and only changes the attribute information of the client, thereby solving the problem that the subscribing client maintains the subscription relationship and maintains the subscription relationship.
  • the attribute information of the client in the present application is a plurality of information including the area, and the subscription client can obtain more dimensions of the publishing message, that is, the subscription of more dimensions, compared with the only matching area in the prior art. , the scalability is better.
  • Topic The topic is a bridge between the subscribing client and the publishing client.
  • the topic can include the topic name and theme filter.
  • the topic included in the posting message is called the topic name.
  • the topic name cannot contain wildcard characters for publishing.
  • An explicit topic; a topic that is included in a subscription message is called a topic filter, and a topic filter can contain wildcards for simultaneously subscribing to multiple topics.
  • the theme is a structured, multi-layered structure that is layered by using a separator (/), each layer called a topic hierarchy.
  • the separator can be anywhere in the subject, and the adjacent delimiter is used to represent the topic level of the empty string, ie the content of the topic level is empty.
  • the theme is: myhome/groundfloor/livingroom/temperature, where myhome, groundfloor, livingroom, and temperature are all topic levels.
  • the wildcards included in the theme filter may include a multi-level wildcard and a single-level wildcard. among them:
  • Multi-layer wildcard denoted by #, is a wildcard used to match any topic level in the subject name. Multi-layer wildcards can represent multiple topic levels. A multi-layer wildcard is the last character of a topic filter. Exemplaryly, a multi-level wildcard can be at a topic level. For example, the topic filter is: #, a multi-layer wildcard can also follow a separator, for example, topic filtering The device is: myhome/groundfloor/#, then if there is a theme name as shown in Table 1:
  • the topic name that matches the theme filter is: the topic name with the sequence numbers 1, 2, 3, and 5, and the topic name that fails to match the topic filter is: the topic name with the sequence number 4.
  • Single-layer wildcard Represented by +, is a wildcard used to match a single topic level in the subject name.
  • Single-layer wildcards are wildcards that occupy the entire topic hierarchy, and can be at any topic level of the topic filter, including the first body level and the last body level.
  • a single topic filter can contain multiple single-level wildcards, or both multi-layer wildcards and single-layer wildcards.
  • the theme filter containing a single-level wildcard is: myhome/groundfloor/+/temperature
  • the topic name successfully matched with the theme filter sequence numbers 1 and 2
  • the subject name, the theme name that failed to match the theme filter is: the subject name with serial numbers 3, 4, and 5.
  • QoS quality of service
  • Subscription tree A topology consisting of at least one topic filter.
  • the subscription tree may include a root node and at least one subtree, each subtree including at least one subtree.
  • the root node is a logical node representing the root of all topic filters, and each subtree stores a topic level of the topic filter.
  • the first layer subtree connected to the root node is a subtree storing the first topic level
  • the second subtree connected to the first layer subtree is stored with the second topic level under the first topic level Subtree, and so on, until the last topic level.
  • the topic hierarchy stored in each subtree can form a theme filter.
  • an identifier of the subscribing client corresponding to the topic filter and indication information indicating whether the subscribing client supports tag matching are stored.
  • FIG. 1 is a simplified schematic diagram of a system architecture that can be applied to an embodiment of the present application.
  • the system architecture may include: at least one publishing terminal 11 , a subscription terminal 12 , and a server 13 .
  • the system architecture may include: at least one publishing terminal 11 , a subscription terminal 12 , and a server 13 .
  • three distribution terminals are shown as an example.
  • the publishing client running on each of the at least one publishing terminal 11 communicates with the server 13 through the MQTT protocol, and the server 13 communicates with the subscribing client running on the subscribing terminal 12 through the MQTT protocol, and at least one publishing client Establish an indirect contact with the subscribing client through the topic.
  • the publishing terminal 11 runs a publishing client, which is a client supporting the MQTT protocol, which can be used as a message generator.
  • the distribution terminal 11 may be a temperature sensor, a humidity sensor, an electric meter, a water meter, or the like. In FIG. 1, the distribution terminal 11 is shown as an electric meter.
  • the publishing terminal 11 can directly access the server 13.
  • the publishing terminal 11 can access the server 13 through an Internet of Things gateway.
  • the IoT gateway can serve as a bridge for running on the publishing terminal 11.
  • the message exchanged between the client and the server 13 is released for protocol or data format conversion, or the IoT gateway can also act as a proxy for the publishing terminal 11, so that the publishing client running on the publishing terminal 11 can pass through the IoT gateway.
  • the server 13 sends a publish message.
  • the subscribing terminal 12 runs a subscribing client, which is a client supporting the MQTT protocol, which can serve as a consumer or manager of the published message.
  • the subscription terminal 12 can be a mobile phone, a tablet computer, a notebook computer, an ultra-mobile personal computer (UMPC), a netbook, a personal digital assistant (PDA), a laptop, or the like.
  • UMPC ultra-mobile personal computer
  • PDA personal digital assistant
  • the subscription terminal 12 is used as a mobile phone as an example.
  • the server running the MQTT protocol on the server 13 is the execution body of the subscription publishing mechanism.
  • multiple servers 13 may form a cluster, and multiple servers 13 may perform subscription publishing, that is, one server may send a subscription message to another server as a subscription client, and receive a release message. The publish message is sent back to the subscribing client connected to the server.
  • the publishing terminal may also serve as a subscribing terminal.
  • the subscribing terminal is used as the publishing terminal.
  • the specific embodiment of the publishing terminal and the subscribing terminal is not limited herein. .
  • the server may send a publishing message to the subscribing client running on the subscribing terminal according to the identifier of the subscribing client.
  • FIG. 2 is a flowchart of a subscription publishing method according to an embodiment of the present disclosure. As shown in FIG. 2, the method may include:
  • the publishing client sends a publishing message to the server.
  • the publishing client may send a publishing message to the server, where the user name and password of the publishing client running on the publishing terminal are authenticated, the server saves the session of the publishing client, and the identity of the publishing client corresponding to the session.
  • the subject name can be included.
  • the client running on the temperature sensor can include the subject name, for example, the subject name: thermometer/temperature, and the temperature value collected by the temperature sensor in the release message, and The publication message is sent to the server.
  • the server receives the publishing message sent by the publishing client, and obtains the identifier of the publishing client according to the publishing message.
  • the server can receive the publishing message, and after determining that the publishing permission is obtained, obtain the identifier of the publishing client corresponding to the session according to the session that receives the publishing message.
  • the server searches the subscription tree according to the topic name, and obtains the identifier of the subscribing client.
  • the identifier of the subscribing client is an identifier corresponding to a topic filter that successfully matches the topic name.
  • the server may search the subscription tree according to the topic name included in the publishing message to obtain a theme filter that successfully matches the topic name, and store the last topic level of the topic filter.
  • the identifier of the subscribing client is obtained, and the identifier of the subscribing client may be multiple.
  • the topic and the attribute information of the client may be separated, and the attribute information of the client, that is, the tag, is pre-stored in the server.
  • the server may send a publishing message to the subscribing client if it is determined that the label of the publishing client and the label of the subscribing client are successfully matched.
  • the following step 204-206 may be performed:
  • the server obtains the first label corresponding to the identifier of the subscribing client according to the identifier of the subscribing client and the first mapping table, and obtains the second label corresponding to the identifier of the publishing client according to the identifier of the publishing client and the first mapping table.
  • the tag is used to indicate at least one attribute information of the client corresponding to the tag.
  • the server may obtain a first label corresponding to the identifier of the subscribing client according to the identifier of the subscribing client and the first mapping table, and obtain a second label corresponding to the identifier of the publishing client according to the identifier of the publishing client and the first mapping table.
  • Each entry of the first mapping table includes an identifier of the client and a corresponding label, and the identifier of the client may be an identifier of the subscribing client or an identifier of the publishing client.
  • the label may be obtained by a server running the server with the MQTT protocol when the client registers with the server, or may be a label manager added by the administrator to the server (tags manager). ) in the module.
  • the specific manner in which the label is stored in the server is not limited herein.
  • the label corresponding to the identifier of the client can be dynamically updated through the communication interface of the management label, so that the on-demand offloading of the published message can be realized without changing the subscription relationship.
  • the client needs to re-change the subscription relationship when expanding and migrating, which solves the problem that the subscription relationship on the subscribing client is difficult to maintain.
  • the server matches the first label with the second label.
  • the first label and the second label are matched, and at least one attribute information of the publishing client is matched with at least one attribute information of the subscribing client.
  • the number of types of attribute information of the publishing client is the same as the number of types of attribute information of the subscribing client, and the server can match the attribute information of the same type, and only the matching of all kinds of attribute information is successful. In this case, it can be determined that the first tag and the second tag match successfully. If the first label and the second label match successfully, the following step 206 may be performed. If the first label and the second label fail to match, the server may determine whether there is another next subscription client, if there is another subscription client. Then, steps 204 to 205 can be repeatedly performed.
  • the server sends a publish message to the subscribing client.
  • the server may continue to obtain other topic filters that can successfully match the topic name, and each acquires one for each identifier corresponding to the topic filter that successfully matches the topic name.
  • the identifiers of the plurality of subscribing clients can be obtained in the subtree of the last topic level in which the topic filter is stored, and the steps of the plurality of subscribing clients can be repeated. 204 - Step 206, until the server obtains the last topic filter that matches the topic name and sends a publish message to the last subscription client.
  • the server after receiving the publishing message including the topic name sent by the publishing client, and obtaining the identity of the publishing client according to the publishing message, the server searches for the subscription tree according to the topic name in the publishing message. And obtaining the identifier of the subscribing client corresponding to the topic filter that is successfully matched with the topic name, and the server obtains the first tag according to the identifier of the subscribing client and the first mapping table, and obtains according to the identifier of the publishing client and the first mapping table.
  • the first label and the second label may be matched, and in a case where it is determined that the first label and the second label are successfully matched, the posting message is sent to the subscribing client.
  • the first mapping table that records the correspondence between the client identifier and the label is stored in the server in advance, and the server may match the attribute information of the publishing client and the subscribing client when the topic name and the topic filter are successfully matched. And when the attribute information of the publishing client and the subscribing client is successfully matched, the publishing message is sent to the subscribing client.
  • the subscribing client does not need to re-subscribe the subscription message, and only changes the attribute information of the client, thereby solving the problem that the subscribing client maintains the subscription relationship and maintains the subscription relationship.
  • the attribute information of the client in the present application is a plurality of information including the area, and the subscription client can obtain more dimensions of the publishing message, that is, the subscription of more dimensions, compared with the only matching area in the prior art. , the scalability is better.
  • FIG. 3 is a flowchart of another subscription publishing method according to an embodiment of the present application. As shown in FIG. 3, the method may include:
  • the subscribing client sends a subscription message to the server.
  • the access control list (ACL) module of the server authenticates the username and password of the subscribing client running on the subscribing terminal, and saves the session of the subscribing client and the subscribing client corresponding to the session in the session management module.
  • the subscribing client may send a subscription message to the server, the subscription message including at least one topic filter.
  • the client running on the mobile phone can respectively filter two theme filters, for example, two theme filters: thermometer/ +, ammeters/#, included in the subscription message, and sent to the server the subscription message.
  • each subscription message includes at least one topic filter.
  • each subscription message includes at least one topic filter.
  • the existing mechanism that only supports the topic matching can be retained, and the topic filter in the subscription message can be marked to support the tag matching.
  • the following two ways may be used to indicate whether the topic filter supports tag matching.
  • Mode 1 by indicating the flag bit in the message to indicate whether the topic filter supports tag matching.
  • the subscribing client may set a reserved field of the subscribing message as a flag bit to indicate whether the subject filter included in the subscribing message supports tag matching.
  • the subscription message includes two parts: a header and a payload, wherein the header includes a fixed header and a variable header, and the variable header is related to a message type (a message type includes a subscription message, a posting message, etc.).
  • the format of the variable header is fixed for all subscription messages.
  • 4 is a schematic diagram of a fixed header. As shown in FIG. 4, the fixed header includes two bytes, wherein the 4th to 7th bits of the byte 1 are MQTT control packet types (MQTT control).
  • byte 2 is the remaining length (remaining length)
  • the 0th to 3rd bits of byte 1 are reserved fields
  • the subscribing client can set any one of the reserved fields as the first flag
  • the first flag The bit may include a first value or a second value, the first value is used to indicate that each topic filter in the at least one topic filter supports tag matching, and the second value is used to indicate that at least one topic filter includes at least one unsupported The topic filter that the tag matches.
  • FIG. 5 is a schematic diagram of a format of a payload. As shown in FIG. 5, at least one theme filter is included in the payload.
  • a theme filter is illustrated as an example, and byte 1 to byte N represent a theme filter, wherein Byte 1 represents the most significant bit (MSB), byte 2 represents the least significant bit (LSB), and byte 3 to byte N represent the hierarchical structure of the subject filter, byte N
  • the 0th and 1st bits in +1 indicate the QoS identifier corresponding to the subject filter, and the 2nd to 7th bits of the byte N+1 are reserved fields, and the subscribing client can set any one of the reserved fields to the second flag.
  • the second flag may include a third value or a fourth value, the third value is used to indicate that the topic filter corresponding to the second flag bit supports tag matching, and the fourth value is used to indicate that the second flag bit corresponds to the second flag bit.
  • the theme filter does not support tag matching.
  • the value may be 0 or 1.
  • the value of the first value is 1, and the value of the second value is 0.
  • the value of the first value is 0, and the value of the second value is 1.
  • the value of the third value is 1 and the value of the fourth value is 0.
  • the value of the third value is 0, and fourth.
  • the value has a value of 1. It should be noted that the specific value of the value may be set according to the requirements of the actual application scenario, and the embodiment of the present application does not specifically limit the content.
  • the value of the first value is 1, the value of the second value is 0, the value of the third value is 1, and the value of the fourth value is 0.
  • the theme filter and the identification information corresponding to the theme filter are stored in the server through a communication interface for managing the topic filter.
  • the theme filter and the identification information corresponding to the theme filter may be stored in the server in advance through a communication interface for managing the topic filter.
  • the identification information may include a fifth value or a sixth value.
  • the fifth value is used to indicate that the topic filter corresponding to the identifier information supports tag matching
  • the sixth value is used to indicate that the topic filter corresponding to the identifier information does not support tag matching.
  • the server receives the subscription message sent by the subscribing client, and obtains the identifier of the subscribing client according to the subscription message.
  • the ACL module of the server may obtain the identifier of the subscribing client corresponding to the session according to the session that receives the subscribing message, and indicate The subscription service module processes the subscription message.
  • the identifier of the subscribing client acquired by the server according to the session is C1, as shown in the first column of Table 2.
  • the server associates the first topic filter to the subscription tree when determining that the first topic filter in the at least one topic filter supports tag matching, and stores the last topic of the first topic filter in the subscription tree.
  • the information of the subscribing client is saved in the hierarchical subtree.
  • the first topic filter is any one of the at least one topic filter, and the information of the subscribing client includes an identifier of the subscribing client and an indication information for indicating that the subscribing client supports tag matching.
  • the subscription service module of the server may determine whether each topic filter in the at least one topic filter included in the subscription message supports tag matching, for any topic filter, such as a first topic filter, the server may send an indication to the first subscription processing module included in the subscription service module when determining that the first topic filter supports tag matching, and the first subscription processing module may, after receiving the indication,
  • the first topic filter is associated with the subscription tree and saves the identity of the subscribing client and the indication information indicating that the subscribing client supports tag matching in a subtree storing the last topic level of the first topic filter.
  • the server may send an indication to the second subscription processing module when the first topic filter does not support the tag matching, and the second subscription processing module may associate the first topic filter to the subscription tree after receiving the indication. And storing the identifier of the subscribing client and the indication information indicating that the subscribing client does not support the tag matching in the subtree storing the last topic level of the first topic filter.
  • a subscription tree containing only the root node is pre-stored, so that each time a subscription message is received, the topic filter included in the subscription message can be associated with the subscription tree. on.
  • the following three manners may be used to determine that the first topic filter supports tag matching.
  • the server determines that the first topic filter supports tag matching when determining that the first flag bit includes the first value.
  • the subscription service module can determine whether the first flag bit includes the first value or the second value. If the first flag bit includes the first value, it indicates that at least one topic filter included in the subscription message supports tag matching, and at this time, the first subscription processing module may associate at least one topic filter to the subscription tree one by one, and The identity of the subscribing client and the indication indicating that the subscribing client supports tag matching are saved in a subtree storing the last topic level of each topic filter. If the first flag includes the second value, it indicates that at least one topic filter includes at least one topic filter that does not support tag matching. In this case, the following method 2 can be used to determine that the first topic filter supports tag matching.
  • Mode 2 The server determines that the first topic filter supports tag matching when determining that the first flag bit includes the second value, and determining that the second flag bit corresponding to the first topic filter includes the third value.
  • the subscription service module may determine whether the second flag bit corresponding to the first topic filter includes a third value. If the second flag bit includes the third value, it is determined that the first topic filter supports tag matching, and if the second flag bit includes the fourth value, it is determined that the first topic filter does not support tag matching.
  • first flag bit and the second flag bit may be preset in which bit of the reserved field, and the specific positions of the first flag bit and the second flag bit are configured in the server.
  • the process of associating the first topic filter to the subscription tree is: determining whether the first topic level of the first topic filter is included in the first topic level of the subscription tree according to the layering condition of the first topic filter If not included, connect the first topic level to the root node, and then connect the second topic level of the first topic filter, ..., the last topic level in turn, and if so, determine the subscription tree.
  • the second topic layer of the first topic filter is included in the second topic level of the first topic level, and if not, the second topic level and the first topic level of the subscription tree Connect, and then connect the third theme level of the first theme filter, ..., the last topic level, and if so, whether to continue to determine whether the third theme level of the subscription tree is connected under the second theme level
  • the third topic level of the first topic filter is included until the last topic filter of the first topic filter is connected to the subscription tree.
  • the server may first connect the first topic level thermometer of the theme filter thermometer/+ with the root node, and the second topic level + and the first topic level Thermometer connection, then connect the first theme level ammeters of the theme filter ammeters/# with the root node, and connect the second topic level # with the first topic level ammeters, and at the second topic level + and #
  • the C1 and the indication information indicating that the C1 supports the label matching are respectively saved.
  • the C1 supports the label matching as C1', the C1 does not support the label matching as C1, and the remaining identifiers are similar.
  • the server can associate the second topic level 5678 of the topic filter ammeters/5678 to the subscription tree. In the ammeters, save C2' in the second topic level 567890.
  • the server can associate the second topic level 1234 of the subject filter thermometer/1234 to the subscription tree.
  • the first theme level in the thermometer is saved and C3 is saved in the second topic level 1234. It is assumed that the first flag of the subscription message of the subscribing client identified by the server is 0, the second flag corresponding to the subject filter thermometer/1234 is 1, and the second flag corresponding to the theme filter ammeters/5678 Bit 0, then the server can save C6' in the second topic level 123456 under the first topic level thermometer of the subscription tree, and in the second topic level 567890 under the first topic level ammeters of the subscription tree Save C6.
  • the server can save C8 in the second topic level + under the first topic level thermometer of the subscription tree, and connect the second topic level + with the first topic level ammeters in the subscription tree. Save C8 in the second topic level + under the first topic level ammeters in the subscription tree.
  • the first flag of the subscription message received by the server such as the subscription client identified as C4, the subscription client identified as C5, and the subscription client identified as C7, is 1, the server may be in the first topic of the subscription tree.
  • C4' and C7' are saved in the second topic level + under the hierarchical thermometer, and C5' is saved in the second topic level # under the first topic level ammeters of the subscription tree.
  • the final subscription tree is shown in Figure 6, and in Figure 6 the thermometer is the temperature sensor and the ammeters are electrically represented.
  • Mode 3 The server determines that the first topic filter supports tag matching when determining that the identifier information corresponding to the first topic filter includes the fifth value.
  • the subscription service module may obtain and match according to the identifier of the subscribing client, the first topic filter, and the second mapping table stored in the session management module. Identification information corresponding to the first topic filter.
  • Each entry of the second mapping table includes an identifier of the client, at least one topic filter corresponding to the identifier of the client, and identifier information corresponding to each topic filter in the at least one topic filter.
  • the fifth value included in the identification information is 1 and the sixth value is 0.
  • the identifier of the subscribing client is C1 and the first topic filter is ammeters/#
  • the identifier information corresponding to the first topic filter ammeters/# obtained by the subscribing server module is 1, and the subscription service module determines the first.
  • the topic filter supports tag matching.
  • the identifier information corresponding to the topic filter in the session management module may be dynamically adjusted through the communication interface, and the corresponding indication information on the subscription tree may be changed accordingly. Specifically, if the first topic filter is changed from supporting tag matching to not supporting tag matching, the identifier information corresponding to the first topic filter may be adjusted from the fifth value to the sixth value, and the first The indication information in the sub-tree of the last topic level of a topic filter indicating that the subscribing client supports tag matching is replaced with the indication information indicating that the subscribing client does not support tag matching, in the first topic filter In the case that the tag matching is not supported to support tag matching, the identification information corresponding to the first topic filter may be adjusted from the sixth value to the fifth value, and the last topic level of the first topic filter may be stored.
  • the indication information in the subtree for indicating that the subscribing client does not support tag matching is replaced with the indication information for indicating that the subscribing client supports tag matching.
  • the identity information corresponding to the topic filter in the server can be adjusted without the subscription client first unsubscribing and then resubscribing to the topic filter.
  • the publishing client sends a publishing message to the server.
  • the publication message includes a subject name and a QoS identifier.
  • the posting message may include a persistent identifier, or may not include a persistent identifier.
  • the persistent identifier is used to instruct the server to store the publish message.
  • the server receives the publishing message sent by the publishing client, and obtains the identifier of the publishing client according to the publishing message.
  • the ACL module of the server may obtain the identity of the publishing client corresponding to the session according to the session that receives the publishing message, and then send the service to the publishing service.
  • the publish service module sends an indication, and after receiving the indication, the publishing service module may return a response message to the publishing client according to the QoS identifier, and save the publishing message for a period of time in the session of the publishing client.
  • the publishing message includes a persistent identifier
  • the publishing service module may instruct the persistence module to save the published message to a disk, a tape, or the like, so that the server may determine the subscription client after receiving the subscription message sent by the subscribing client.
  • the persistent message is sent to the subscribing client without waiting for the server to receive the new post message before sending the new post message to the subscribing client.
  • the server may first obtain at least one persistent message pre-stored, and The at least one topic filter included in the subscription message is used as a subscription tree, and then through the topic matching and tag matching, it is determined which persistent messages are sent to the subscription client.
  • the process of searching for the subscription tree according to the topic name included in any one of the persistent messages, and the process of performing tag matching is similar to the description of the following steps 306-310, and details are not described herein.
  • the server associates at least one topic filter included in the subscription message to the pre-stored subscription tree, and when receiving the new publication message, performs the following steps 306-310.
  • the server searches the subscription tree according to the topic name, and obtains the identifier of the subscribing client.
  • the server's topic matching module can traverse the topic level in the subscription tree layer by layer, and compare the topic level of the topic name with the corresponding topic level in the subscription tree to obtain a theme.
  • the name matches the successful topic filter and gets the identity of the subscribing client in the last topic level of the topic filter.
  • FIG. 7 is a flowchart for performing topic matching layer by layer.
  • the server's topic matching module can traverse the topic level in the subscription tree layer by layer, and the topic level of the topic name and the subscription tree. Corresponding theme levels are compared.
  • the server can compare the Nth topic level of the topic name with all the Nth topic levels in the subscription tree, and first determine the content of the Nth topic level of the topic name and a certain part of the subscription tree.
  • the server can judge the Nth of the subscription tree. Whether there is an N+1th topic level under the theme level. If it exists, the server continues the matching of the next topic level. If it does not exist, it indicates that the topic name matches the theme filter successfully, and the server can obtain the Nth. The identity of the subscribing client saved in the topic hierarchy.
  • the server determines whether the Nth topic level of the subscription tree is #. If the Nth topic level in the subscription tree is #, it indicates that the topic name matches the topic filter successfully, and the server can obtain the Nth topic. The identity of the subscribing client saved in the hierarchy. If the Nth topic level of the subscription tree is not #, it can be determined whether there is a subtree after the Nth topic level, and if so, the Nth topic level of the topic name and the Nth topic level match. After obtaining the identifier of the subscribing client saved in the Nth topic level, the publishing service module can determine whether there is a subtree after the Nth topic level, and if so, the Nth topic level of the topic name and The Nth level of topic level matching.
  • the server receives the topic name thermometer/1234, then the first topic level thermometer of the topic name matches the first topic level thermometer of the subscription tree. At this time, the server will be the second topic level of the topic name. 1234 is successfully matched with the second topic level + under the first topic level thermometer of the subscription tree, and the obtained subscription clients are identified by C1', C4', C7' and C8'. And the server has another second topic level 1234 under the first subject level thermometer of the subscription tree, which is the same as the content of the second topic level 1234 of the topic name, and obtains the identity of the subscribing client as C3, C6'. The server determines that the first topic level of the topic name fails to match another first topic level ammeters of the subscription tree.
  • the first topic level Thermometer of the topic name fails to match the first topic level thermometer of the subscription tree due to the case sensitivity of the subject. And the first topic level Thermometer of the topic name fails to match the first topic level ammeters of the subscription tree.
  • the server receives the topic name things/12/temp, then the first topic level thing of the topic name fails to match the first topic level thermometer and ammeters of the subscription tree.
  • the server's topic matching module obtains the identity of the subscribing client, it is targeted to multiple subscribing clients. To identify the identity of any one of the clients, perform the following steps 307-310:
  • the server determines, in the subtree that stores the identifier of the subscribing client, an indication information indicating that the subscribing client supports label matching.
  • the topic matching module may determine, in the subtree storing the identifier of the subscribing client, whether the indication information indicating that the subscribing client supports the tag matching is further stored, and if it is determined that the indication information indicating that the subscribing client supports the tag matching is stored, It indicates that the subscription client supports tag matching, and the following step 308 can be performed at this time. If it is determined that the indication information indicating that the subscription client does not support the label matching is stored, it indicates that the subscription client does not support the label matching, and the topic matching module may send the publication message to the subscription client through the publishing service module. In this way, since the label of the client is maintained in the server, compared with the carrying of the area identifier in the subject in the prior art 2, the reservation of the subscription publishing mechanism that only supports the topic matching in the prior art is implemented.
  • the server obtains a first label corresponding to the identifier of the subscribing client according to the identifier of the subscribing client and the first mapping table, and obtains a second label corresponding to the identifier of the publishing client according to the identifier of the publishing client and the first mapping table.
  • the tag is used to indicate at least one attribute information of the client corresponding to the tag.
  • the topic matching module may instruct the label management module to obtain the identifier of the subscribing client from the first mapping table. Corresponding the first label, and acquiring a second label corresponding to the identifier of the publishing client.
  • each entry of the first mapping table includes an identifier of the client and a label corresponding to the identifier of the client, where the label is used to indicate at least one attribute information of the client.
  • An attribute information may include an attribute name and an attribute value, wherein the attribute value may be a single value, or may be multiple values, such as an array or a list, or may be a logical expression supported by the tag engine module, or may be based on JavaScript.
  • the attribute information of the client may include a display name and the like in addition to the unique identifier and the attribute information included in the corresponding relationship.
  • the attribute values contained in the tag are different for different kinds of clients.
  • the attribute value of the publishing client is multiple values, it means that the meaning of the broadcast is equivalent to that multiple publishing clients respectively publish two publishing messages, and each publishing client has multiple values in the label respectively. one of.
  • the attribute value of a kind of attribute information of the publishing client is a domain
  • the attribute values are sz and nj, which is equivalent to two publishing clients publishing two messages, and two publishing clients respectively have one attribute.
  • the attribute value of the subscribing client is multiple values, it means the meaning of the inclusion.
  • the server determines whether the attribute value of each attribute information included in the first label is consistent with a preset logical relationship with an attribute value of the corresponding attribute information included in the second label.
  • the first tag and the second tag may be sent to a tag engine module, and the tag engine module may determine each attribute included in the first tag. Whether the attribute value of the information and the attribute value of the corresponding attribute information included in the second label respectively meet the preset logical relationship, and only if the two attribute values meet the preset logical relationship, it is determined that the attribute information is successfully matched. And only if all kinds of attribute information match successfully, it is determined that the first tag and the second tag match successfully, and the result of the matching success is returned to the publishing service module, so that the publishing service module subscribes to the result after receiving the matching success.
  • the client sends a publish message.
  • the preset logical relationship has a great relationship with the type of the attribute information.
  • the logical relationship may be an inclusion relationship of different attribute values.
  • the server sends a publish message to the subscribing client if it is determined that the first tag and the second tag match successfully.
  • the server can determine whether there is still an identifier of the subscribing client. If there is an identifier of the subscribing client, the server can repeatedly perform steps 307-310, if there is no subscription. The identifier of the client, the server can determine whether there is a subtree in the same level of the same level, and if so, repeat steps 306-310 until the last topic filter matching the topic name is obtained, thereby obtaining Subscribe to the client's identity and send a publish message to the last subscribed client that matches the successful tag.
  • the tag engine module can determine the attribute of the tenant of the subscribing client.
  • the value includes the attribute value of the tenant of the publishing client, and if the attribute value of the domain of the subscribing client includes the attribute value of the domain of the publishing client, it is determined that the first tag and the second tag match successfully.
  • the identifier of the publishing client acquired by the server is t1
  • the identifiers of the obtained subscription clients are C1', C4', C7', and C8', as shown in Table 4, which is the first mapping.
  • the label includes the tenant and the domain.
  • the server determines the attribute value of the tenant of C1.
  • the tenant 1 contains the attribute value tenant of the tenant of t1, and the attribute value sz of the domain of C1 contains the domain of t1.
  • the attribute value sz can be sent to the subscribing client identified as C1.
  • the server determines that there is also an identifier C4 of the subscribing client, and then determines that the attribute value of the tenant of C4 is not equal to the attribute value tenant 1 of the tenant of t1, and the posting message is not sent to the subscribing client identified as C4.
  • the server determines that there is also the identity C7 of the subscribing client, and then determines the attribute value of the tenant of C7.
  • the tenant 1 contains the attribute value of the tenant of t1, the attribute value sz of the domain of C7, and the attribute value sz of the domain of t1 contains the attribute value sz of the domain of t1.
  • the value of the attribute may be a complex logical expression, and it is assumed that the first tag and the second tag include two kinds of attribute information, respectively, a domain and a priority.
  • the tag engine module may determine a logical expression of the attribute value of the domain of the subscribing client when the attribute value of the domain of the publishing client satisfies, and issue a logical expression of the attribute value of the priority of the subscribing client that satisfies the priority of the subscribing client In the case, it is determined that the first tag and the second tag match successfully, and the release message is sent to the subscribing client. In this way, by matching the priorities, different subscription clients are processed to process different priority posting messages.
  • the subscription client A can use a faster network, more resources, the subscription client B uses a slower network and uses fewer resources, then it can pass Setting the attribute value of the priority in the label corresponding to the subscribing client A in the label management module is greater than 50, and the attribute value of the priority in the label corresponding to the subscribing client B is less than 50, so that the subscribing client A can process A higher priority publish message, and the subscription client B processes the release message with a lower priority.
  • the identifier of the publishing client acquired by the server is t1
  • the identifiers of the obtained subscription clients are C1', C4', C7', and C8', as shown in Table 5, which is the first mapping.
  • the label includes the domain and priority.
  • the server may determine that the attribute value sz of the domain of t1 does not satisfy the logical expression of the attribute value of the domain of C1 ⁇ $not: ⁇ $eq:sz ⁇ ⁇ , the meaning of the logical expression is: including the domain other than sz, will not send a publish message to the subscribing client identified as C1.
  • the server receives the posting message including the topic name sent by the publishing client, and obtains the identifier of the publishing client according to the publishing message, and then searches for the subscription according to the topic name in the publishing message.
  • the tree obtains the identifier of the subscribing client corresponding to a topic filter whose name is successfully matched, and the server obtains the first tag according to the identifier of the subscribing client and the first mapping table, according to the identifier of the publishing client and the first mapping table.
  • the first label and the second label may be matched, and if it is determined that the first label and the second label are successfully matched, the publishing message is sent to the subscribing client.
  • the first mapping table that records the correspondence between the client identifier and the label is stored in the server in advance, and the server may match the attribute information of the publishing client and the subscribing client when the topic name and the topic filter are successfully matched. And when the attribute information of the publishing client and the subscribing client is successfully matched, the publishing message is sent to the subscribing client. In this way, when the subscription client migrates and expands, the subscribing client does not need to re-subscribe the subscription message, and only changes the attribute information of the client, thereby solving the problem that the subscribing client maintains the subscription relationship and maintains the subscription relationship.
  • the attribute information of the client in the present application is a plurality of information including the area, and the subscription client can obtain more dimensions of the publishing message, that is, the subscription of more dimensions, compared with the only matching area in the prior art. , the scalability is better.
  • the server sends a publish message to the subscribing client if it is determined that the identity of the subscribing client is not an identifier that supports tag matching.
  • the reservation of the subscription publishing mechanism that only supports the topic matching in the prior art is implemented.
  • the identity information corresponding to the topic filter in the server can be adjusted without the subscription client first unsubscribing and then resubscribing to the topic filter.
  • the server includes corresponding hardware structures and/or software modules for performing various functions.
  • the present application can be implemented in a combination of hardware or hardware and computer software in combination with the algorithmic steps of the various examples described in the embodiments disclosed herein. Whether a function is implemented in hardware or computer software to drive hardware depends on the specific application and design constraints of the solution. A person skilled in the art can use different methods to implement the described functions for each particular application, but such implementation should not be considered to be beyond the scope of the present application.
  • the embodiment of the present application may divide the function module into the server according to the foregoing method example.
  • each function module may be divided according to each function, or two or more functions may be integrated into one processing module.
  • the above integrated modules can be implemented in the form of hardware or in the form of software functional modules. It should be noted that the division of the module in the embodiment of the present application is schematic, and is only a logical function division, and the actual implementation may have another division manner.
  • FIG. 8 is a schematic diagram showing a possible composition of the server involved in the foregoing embodiment.
  • the server may include: a receiving module 41, and obtaining The module 42, the publishing service module 43, the tag management module 44, and the tag engine module 45, wherein the publishing service module 43 can include a topic matching module 431.
  • the receiving module 41 is configured to execute the publishing message sent by the receiving publishing client in step 202 in the subscription publishing method shown in FIG. 2, which is described in step 302 in the subscription publishing method shown in FIG. Receiving the subscription message sent by the subscribing client, and receiving the publishing message sent by the publishing client, as described in step 305.
  • the obtaining module 42 is configured to execute the identifier of the publishing client according to the publishing message described in step 202 in the subscription publishing method shown in FIG. 2, and the subscription according to the step 302 in the subscription publishing method shown in FIG.
  • the message acquires the identifier of the subscribing client, and the identifier of the publishing client is obtained according to the publishing message as described in step 305.
  • the publishing service module 43 is a module for processing the posting message, and is used to execute the step 206 in the subscription publishing method shown in FIG. 2, and the step 310 in the subscription publishing method shown in FIG. 3 is used to receive the label engine module 45. After the returned successful result is obtained, the posting message is sent to the subscribing client, or after receiving the indication of the tag matching module 432, the publishing message is sent to the subscribing client.
  • the publishing service module 43 is further configured to process the publishing message after receiving the indication sent by the ACL module 48.
  • the publishing service module 43 instructs the persistence module 49 to perform persistence of the published message, that is, save the published message to a non-volatile medium such as a hard disk or a tape in a certain format. So that after receiving the subscription message sent by the subscribing client, the server may send the persistent publishing message to the subscribing client when it is determined that the subscribing client subscribes to the persistent publishing message, without A new post message can be sent to the subscribing client after waiting for a new post message.
  • the publishing service module 43 is further configured to: return a response message to the publishing client according to the QoS identifier included in the publishing message, and save the publishing message for a period of time in the session corresponding to the identifier of the publishing client in the session management module 47,
  • the publishing service module 43 can send a posting message to the subscribing client when it is determined that the subscribing client subscribes to the posting message.
  • the topic matching module 431 is configured to perform step 203 in the subscription publishing method shown in FIG. 2, and step 306 in the subscription publishing method shown in FIG. 3, that is, used to find a subscription tree according to the topic name included in the publishing message, and obtain The identity of the subscribing client corresponding to the topic filter that matches the topic name successfully.
  • the label management module 44 is configured to provide a management service for the label corresponding to the client, and can update the label corresponding to the identifier of the client in real time.
  • the label management module 44 is configured to perform step 204 in the subscription publishing method shown in FIG. 2, and step 308 in the subscription publishing method shown in FIG. 3, that is, to receive the second subscription processing.
  • the first label corresponding to the identifier of the subscribing client is obtained according to the identifier of the subscribing client and the first mapping table
  • the second identifier corresponding to the identifier of the publishing client is obtained according to the identifier of the publishing client and the first mapping table.
  • the tag and the first tag and the second tag are sent to the tag engine module 45.
  • the tag engine module 45 is configured to perform step 205 in the subscription publishing method shown in FIG. 2, and step 309 in the subscription publishing method shown in FIG. 3, that is, to match the first tag and the second tag, and
  • the publishing service module 43 returns a matching result.
  • the server may further include: a subscription service module 46, a session management module 47, an ACL module 48, and a persistence module 49.
  • the publishing service module 43 further includes a label matching module 432.
  • the subscription service module 46 also includes a first subscription processing module 461 and a second subscription processing module 462.
  • the tag matching module 432 is configured to determine whether the subscription client supports tag matching. If the tag matching is supported, the tag management module 44 is configured to acquire a first tag corresponding to the identifier of the subscribing client, and a second tag corresponding to the identifier of the publishing client. If the tag matching is not supported, the publishing service module 43 is instructed to send a posting message to the subscribing client.
  • the subscription service module 46 is a module for processing a subscription message, and is used to perform step 303 in the subscription publishing method shown in FIG. 3, that is, after receiving the indication sent by the ACL module 48, determining at least one topic included in the subscription message. Whether each topic filter in the filter supports tag matching. For any of the topic filters, if the topic filter supports tag matching, an indication is sent to the first subscription processing module 461, and the first subscription processing module 461 is configured to associate the topic filter to the target after receiving the indication.
  • the information of the subscribing client is saved in a subtree storing the last topic level of the theme filter, and the information of the subscribing client includes an identifier of the subscribing client and an indication indicating that the subscribing client does not support tag matching. .
  • the session management module 47 stores a second mapping table, where each entry of the second mapping table includes an identifier of the client, at least one topic filter corresponding to the identifier of the client, and each topic filtering in the at least one topic filter.
  • each identifier information is used to indicate whether the topic filter corresponding to the identifier information supports label matching, that is, the session management module 47 is configured to execute the identifier according to the subscription client in the subscription publishing method shown in FIG.
  • the first topic filter and the second mapping table obtain the identification information corresponding to the first topic filter.
  • the session management module 47 is further configured to resume the subscription work according to the session after determining that the session of the client is within the validity period after the client disconnects and reconnects to the server.
  • the ACL module 48 is configured for client authentication and operation authentication, and the client may include a subscription client and a publishing client.
  • the ACL module 48 is configured to authenticate the username and password after receiving the connection request sent by the client, including the user name, the password, and the identifier of the client, and send feedback to the client after the authentication is passed.
  • the session of the client and the identity of the client corresponding to the session are generated and saved in the session management module 47.
  • the ACL module 48 is further configured to: after receiving the subscription message sent by the subscribing client, determine whether there is permission to subscribe to the at least one topic filter included in the subscription message, and after determining the permission to subscribe, instruct the subscription service module 46 processes the subscription message.
  • the ACL module 48 is further configured to: after receiving the publishing message sent by the publishing client, determine whether the publishing client has the right to post the message to the specified topic name, and after determining that the publishing authority has the publishing permission, instruct the publishing service module 43 to publish the message. The message is processed.
  • Persistence service module 49 for persistence of sessions, subscription messages, and published messages.
  • the server provided by the embodiment of the present application is configured to execute the foregoing subscription publishing method, so that the same effect as the above-mentioned subscription publishing method can be achieved.
  • the server can include a processing module, a communication module, and a storage module.
  • the processing module can be a processor or a controller. It is possible to implement or carry out the various illustrative logical blocks, modules and circuits described in connection with the present disclosure.
  • the processor can also be a combination of computing functions, for example, including one or more microprocessor combinations, a combination of a digital signal processor (DSP) and a microprocessor, and the like.
  • the communication module can be a transceiver, a transceiver circuit, or a communication interface.
  • the storage module can be a memory.
  • FIG. 10 shows another possible composition diagram of the server involved in the above embodiment.
  • the server includes a processor 51, a memory 52, a communication interface 53, and a communication bus 54.
  • the processor 51 is a control center of the server, and may be a processor or a collective name of a plurality of processing elements.
  • the processor 51 is a central processing unit (CPU), may be an application-specific integrated circuit (ASIC), or is one or more integrated configured to implement the embodiments of the present application.
  • Circuitry such as one or more DSPs, or one or more field-programmable gate arrays (FPGAs).
  • the processor 51 can perform various functions of the server by running or executing a software program stored in the memory 52 and calling data stored in the memory 52.
  • the processor 51 is configured to execute the identifier of the publishing client according to the publishing message, step 203, step 204, step 205, and obtain the subscription message according to step 302 in FIG. 3, as described in step 202 in FIG. Subscribing to the identity of the client, step 303, step 305, obtaining the identity of the publishing client based on the publish message, step 306, step 307, step 308, step 309, and/or other processes for the techniques described herein.
  • processor 51 may include one or more CPUs, such as CPU0 and CPU1 shown in FIG.
  • the server may include multiple processors, such as processor 51 and processor 55 shown in FIG.
  • processors can be a single core processor (CPU) or a multi-core processor (multi-CPU).
  • a processor herein may refer to one or more devices, circuits, and/or processing cores for processing data, such as computer program instructions.
  • the memory 52 can be a read-only memory (ROM) or other type of static storage device that can store static information and instructions, a random access memory (RAM) or other type that can store information and instructions.
  • the dynamic storage device can also be an electrically erasable programmable read-only memory (EEPROM), a compact disc read-only memory (CD-ROM) or other optical disc storage, and a disc storage device. (including compact discs, laser discs, optical discs, digital versatile discs, Blu-ray discs, etc.), magnetic disk storage media or other magnetic storage devices, or can be used to carry or store desired program code in the form of instructions or data structures and can be Any other media accessed, but not limited to this.
  • Memory 52 may be present independently and coupled to processor 51 via communication bus 54. The memory 52 can also be integrated with the processor 51.
  • the memory 52 is used to store a software program that executes the solution of the present application, and is controlled by the processor 51 for execution.
  • the communication interface 53 using any device such as a transceiver, for communicating with other devices or communication networks, such as a subscribing client, a publishing client, a radio access network (RAN), a wireless local area network (wireless local area)
  • the server may receive the attribute information of the label of the subscribing client sent by the subscribing client through the communication interface 53 and the attribute information of the label of the publishing client sent by the client.
  • the communication interface 53 may include a receiving unit that implements a receiving function, and a transmitting unit that implements a transmitting function.
  • the communication interface 53 is configured to perform the publishing message sent by the receiving publishing client according to step 202 in FIG. 2, and step 206, the receiving the subscription message sent by the subscribing client according to step 302 in FIG.
  • the receiving message sent by the publishing client is received in step 305, step 310.
  • the communication interface 53 is an interface for providing services to the server running on the server. Since the MQTT protocol can communicate based on a transmission control protocol/internet protocol (TCP/IP), the communication interface 53 is bound to the 1833 service port by default. Of course, the MQTT protocol can also communicate based on other protocols, such as the Socket protocol. In this case, the communication interface 53 connected to other service ports needs to be configured. Therefore, the server can configure different communication interfaces 53 according to different communication protocols. Moreover, the server can configure a communication interface 53 for managing tags through which the client's tags can be dynamically adjusted.
  • TCP/IP transmission control protocol/internet protocol
  • the server may also configure a communication interface 53 for managing the topic filter, by which the identification information corresponding to the topic filter may be dynamically modified to change whether the topic filter supports tag matching.
  • the communication interface 53 for managing the label and the communication interface 53 for managing the theme filter may be the same interface, or may be different interfaces. There is no specific limitation on whether the communication interface for managing tags and the interface for managing the topic filter are the same interface.
  • the communication bus 54 may be an industry standard architecture (ISA) bus, a peripheral component interconnect (PCI) bus, or an extended industry standard architecture (EISA) bus.
  • ISA industry standard architecture
  • PCI peripheral component interconnect
  • EISA extended industry standard architecture
  • the bus can be divided into an address bus, a data bus, a control bus, and the like. For ease of representation, only one thick line is shown in FIG. 10, but it does not mean that there is only one bus or one type of bus.
  • the disclosed apparatus and method may be implemented in other manners.
  • the device embodiments described above are merely illustrative.
  • the division of the modules or units is only a logical function division.
  • there may be another division manner for example, multiple units or components may be used.
  • the combination may be integrated into another device, or some features may be ignored or not performed.
  • the mutual coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or unit, and may be in an electrical, mechanical or other form.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may be one physical unit or multiple physical units, that is, may be located in one place, or may be distributed to multiple different places. . Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of the embodiment.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
  • the above integrated unit can be implemented in the form of hardware or in the form of a software functional unit.
  • the integrated unit if implemented in the form of a software functional unit and sold or used as a standalone product, may be stored in a readable storage medium.
  • the technical solution of the embodiments of the present application may be embodied in the form of a software product in the form of a software product in essence or in the form of a contribution to the prior art, and the software product is stored in a storage medium.
  • a number of instructions are included to cause a device (which may be a microcontroller, chip, etc.) or a processor to perform all or part of the steps of the methods described in various embodiments of the present application.
  • the foregoing storage medium includes various media that can store program codes, such as a USB flash drive, a mobile hard disk, a ROM, a RAM, a magnetic disk, or an optical disk.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种订阅发布方法及服务器,涉及通信领域,解决了在订阅客户端订阅能处理的发布消息的情况下,订阅客户端上的订阅关系维护较困难的问题。具体方案为:服务器接收发布客户端发送的发布消息,并根据接收到的发布消息获取该发布客户端的标识,且服务器可以根据该发布消息中的主题名查找订阅树,获得订阅客户端的标识,并根据该订阅客户端的标识以及第一映射表获取与该订阅客户端的标识对应的第一标签,以及根据发布客户端的标识以及第一映射表获取与发布客户端的标识对应的第二标签,这样服务器可以将获取到的第一标签与第二标签进行匹配,并在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。

Description

一种订阅发布方法及服务器
本申请要求于2017年8月29日提交中国专利局、申请号为201710757780.8、发明名称为“一种订阅发布方法及服务器”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及通信领域,尤其涉及一种订阅发布方法及服务器。
背景技术
消息队列遥测传输(Message Queue Telemetry Transport,MQTT)协议是一种发布订阅机制的消息传输协议,该发布订阅机制为:手机、笔记本等具有管理功能的订阅终端上的订阅客户端可以向服务器发送包含有主题的订阅消息,温度传感器等发布终端上的发布客户端可以向该服务器发送包含有主题的发布消息,这样服务器可以向订阅了发布消息中包含的主题的订阅客户端发送该发布消息。且MQTT协议具有轻巧、开放、简单、规范等特点,可以应用于机器与机器的通信(machine-to-machine,M2M)、物联网(internet of things,IOT)等受限的环境中。
在IOT环境中,订阅终端上的订阅客户端通常用于通过发布终端上的发布客户端管理大量发布终端。一个订阅客户端可以通过一个包含有通配符的主题来订阅IOT环境中的所有发布客户端发布的消息,并对接收到的所有发布消息进行扇入(fan in)处理,扇入的过程为:订阅客户端可以对所有发布消息进行汇聚、统计等复杂运算,并将运算结果形成图标或页面呈现给用户,或将运算结果发送至下一层设备。显而易见的,此时订阅客户端处理发布消息的压力与发布客户端的数量成正比,但是订阅客户端处理发布消息的能力是有限的,因此当发布客户端的数量达到一定规模时,一个订阅客户端无法处理所有的发布消息,便需要增加订阅客户端,与该订阅客户端并行处理发布消息。此时,订阅客户端从“能订阅哪些发布消息”变为“能处理哪些发布消息”,这样订阅客户端如何订阅能处理的发布消息便成为了关键。现有技术中提供了两种订阅客户端订阅能处理的发布消息的方案:
在现有技术一中,订阅客户端可以根据处理发布消息的能力,逐个订阅每个发布客户端的发布消息,即订阅客户端能够处理几条发布消息,便向服务器发送几个订阅主题,每个订阅主题中都不包含通配符。
在现有技术二中,订阅客户端将不同的发布客户端划分到不同的区域中,使得发布客户端在发布主题中携带区域标识,同时订阅客户端根据订阅客户端处理发布消息的能力确定能处理哪些区域的发布消息,并在订阅主题中增加这些区域标识。
现有技术中至少存在以下问题:
现有技术一中,由于订阅客户端需要向服务器逐个发送订阅主题,使得在订阅客户端扩容、迁移等的情况下,需要更改订阅客户端的订阅关系,即订阅客户端先取消订阅再重新订阅,因此导致订阅客户端上的订阅关系维护较困难。
现有技术二中,由于区域是由订阅客户端划分的,在订阅客户端扩容、迁移等的情 况下,订阅客户端需要重新划分区域并发布订阅消息,因此导致订阅客户端上的订阅关系维护较困难。
发明内容
本申请提供一种订阅发布方法及服务器,解决了在订阅客户端订阅能处理的发布消息的情况下,订阅客户端上的订阅关系维护较困难的问题。
为达到上述目的,本申请采用如下技术方案:
本申请的第一方面,提供一种订阅发布方法,包括:服务器可以接收发布客户端发送的包括有主题名的发布消息,并根据接收到的发布消息获取该发布客户端的标识,且服务器可以根据该发布消息中的主题名查找订阅树,获得订阅客户端的标识,并根据该订阅客户端的标识以及第一映射表获取与该订阅客户端的标识对应的第一标签,以及根据发布客户端的标识以及第一映射表获取与发布客户端的标识对应的第二标签,且服务器将获取的第一标签与第二标签进行匹配,并在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。其中,订阅树为至少一个主题过滤器组成的拓扑结构,订阅客户端的标识为与主题名匹配成功的一个主题过滤器对应的标识。第一映射表的每个表项包括客户端的标识与对应的标签。标签用于指示与标签对应的客户端的至少一种属性信息。
本申请提供的订阅发布方法,服务器在接收到发布客户端发送的包括有主题名的发布消息,并根据发布消息获取到该发布客户端的标识后,可以根据主题名查找订阅树,获得与主题名匹配成功的一个主题过滤器对应的订阅客户端的标识,并在根据订阅客户端的标识和第一映射表获取到第一标签,根据发布客户端的标识和第一映射表获取到第二标签后,将第一标签和第二标签进行匹配,且服务器在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。本申请中预先在服务器中存储记录了客户端标识与标签的对应关系的第一映射表,服务器可以在主题名与主题过滤器匹配成功的情况下,匹配发布客户端和订阅客户端的属性信息,并在发布客户端与订阅客户端的属性信息匹配成功时,向订阅客户端发送发布消息。这样,在订阅客户端迁移,扩容时,订阅客户端也不需要重新发布订阅消息,仅更改客户端的属性信息即可,从而解决了订阅客户端自己维护订阅关系导致的维护困难的问题。且,本申请中客户端的属性信息为包括有区域的多种信息,与现有技术中仅能匹配区域相比,可以使订阅客户端获得更多维度的发布消息,即实现更多维度的订阅,扩展性更好。
结合第一方面,在一种可能的实现方式中,服务器根据订阅客户端的标识以及第一映射表获取与订阅客户端的标识对应的第一标签,具体的可以包括:服务器在确定订阅客户端支持标签匹配的情况下,根据订阅客户端的标识以及第一映射表获取第一标签。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,本申请还可以包括:服务器在确定订阅客户端不支持标签匹配的情况下,可以向订阅客户端发送发布消息。这样,由于客户端的标签是维护在服务器中的,与现有技术二中的在主题中携带区域标识相比,实现了现有技术中原有的仅支持主题匹配的订阅发布机制的保留。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在服务器根据主题名查找订阅树,获得订阅客户端的标识之前,还可以包括:服务器接收订阅客户端 发送的包括有至少一个主题过滤器的订阅消息,并根据接收到的订阅消息获取订阅客户端的标识。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,每个主题过滤器被分为多层,每层为一个主题层级,每个主题层级存储于所述订阅树的一个子树中,本申请还可以包括:服务器可以在确定至少一个主题过滤器中的第一主题过滤器支持标签匹配时,将第一主题过滤器关联到订阅树上,并在订阅树中存储有第一主题过滤器的最后一个主题层级的子树中保存订阅客户端的信息,该订阅客户端的信息可以包括:订阅客户端的标识和用于指示订阅客户端支持标签匹配的指示信息。其中,第一主题过滤器为至少一个主题过滤器中的任意一个。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,订阅消息中还可以包括:第一标志位。该第一标志位包括第一值或者第二值,第一值用于指示至少一个主题过滤器中的每个主题过滤器支持标签匹配,第二值用于指示至少一个主题过滤器中包括至少一个不支持标签匹配的主题过滤器。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,确定至少一个主题过滤器中的第一主题过滤器支持标签匹配,具体的可以包括:服务器可以在确定第一标志位包括第一值时,确定第一主题过滤器支持标签匹配。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,订阅消息中还可以包括:至少一个主题过滤器中每个主题过滤器对应的第二标志位,每个第二标志位可以包括第三值或第四值,第三值用于指示与第二标志位对应的主题过滤器支持标签匹配,第四值用于指示与第二标志位对应的主题过滤器不支持标签匹配。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,确定至少一个主题过滤器中的第一主题过滤器支持标签匹配,具体的可以包括:服务器可以在确定第一标志位包括第二值,且确定与第一主题过滤器对应的第二标志位包括第三值时,确定第一主题过滤器支持标签匹配。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,本申请还可以包括:服务器可以根据订阅客户端的标识、第一主题过滤器以及第二映射表获取与第一主题过滤器对应的标识信息,每个标识信息包括第五值或第六值,第五值用于指示与标识信息对应的主题过滤器支持标签匹配,第六值用于指示与标识信息对应的主题过滤器不支持标签匹配。此时,相应的,确定至少一个主题过滤器中的第一主题过滤器支持标签匹配,具体的可以包括:服务器可以在确定与第一主题过滤器对应的标识信息包括第五值时,确定第一主题过滤器支持标签匹配。其中,第二映射表的每个表项包含客户端的标识,与客户端的标识对应的至少一个主题过滤器,以及至少一个主题过滤器中每个主题过滤器对应的标识信息。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,确定订阅客户端支持标签匹配,具体的可以包括:服务器可以在确定存储有所述订阅客户端的标识的子树中还存储有用于指示所述订阅客户端支持标签匹配的指示信息时,确定订阅客户端支持标签匹配。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,属性信息包含属性名称和属性值,服务器将第一标签与第二标签进行匹配,具体的可以包括:服务器 可以将第一标签包括的每种属性信息的属性值分别与第二标签包括的对应的属性信息的属性值进行比较,并确定第一标签包括的每种属性信息的属性值是否分别与第二标签包括的对应的属性信息的属性值符合预设的逻辑关系。此时,相应的,确定第一标签和第二标签匹配成功,具体的可以包括:服务器可以在确定第一标签包括的每种属性信息的属性值分别与第二标签包括的对应的属性信息的属性值符合预设的逻辑关系的情况下,确定第一标签和第二标签匹配成功。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,服务器在运行时,可以通过管理标签的通信接口动态更新与客户端的标识对应的标签。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在主题过滤器的支持标签匹配的情况发生改变时,通过通信接口动态调整会话管理模块中与该主题过滤器对应的标识信息,并相应更改订阅树上相应的订阅客户端的标识。这样,通过在服务器中管理主题过滤器支持标签匹配的情况,实现了订阅消息中的主题过滤器与支持标签匹配情况的分离,使得在主题过滤器保持不变,改变该主题过滤器支持标签匹配的情况下,可以调整服务器中与该主题过滤器对应的标识信息,而不需要订阅客户端先取消订阅再重新订阅该主题过滤器。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,本申请还可以包括:服务器可以接收第二订阅客户端发送的包括有至少一个主题过滤器的第二订阅消息,并根据接收到的第二订阅消息获取第二订阅客户端的标识,且获取预先存储的包括有主题名的持久化消息。这样,服务器便可以根据持久化消息中包括的主题名查找订阅树,获得与持久化消息的主题名匹配成功的主题过滤器对应的第二订阅客户端的标识,并根据持久化消息获取第二发布客户端的标识。且服务器可以根据第二发布客户端的标识以及第一映射表,获取与第二发布客户端的标识对应的第三标签,并根据第二订阅客户端的标识以及第一映射表,获取与第二订阅客户端的标识对应的第四标签,且服务器可以将第三标签与第四标签进行匹配,并在确定第三标签和第四标签匹配成功的情况下,向第二订阅客户端发送持久化消息。其中,持久化消息为持久化的发布消息。
本申请的第二方面,提供一种服务器,该服务器可以包括能够实现上述第一方面及其各实施方式中的方法的模块。
本申请的第三方面,提供一种服务器,该服务器包括:处理器、存储器、通信接口和通信总线。存储器用于存储计算机执行指令,处理器、通信接口与存储器通过通信总线连接,当服务器运行时,处理器执行存储器存储的计算机执行指令,以使服务器执行如第一方面或第一方面的可能的实现方式中任意一项的订阅发布方法。
本申请的第四方面,提供一种计算机存储介质,用于存储上述服务器所用的计算机软件指令,该计算机软件指令包含用于执行上述订阅发布方法所设计的程序。
附图说明
图1为本申请实施例提供的一种可以应用本申请实施例的系统架构的简化示意图;
图2为本申请实施例提供的一种订阅发布方法的流程图;
图3为本申请实施例提供的另一种订阅发布方法的流程图;
图4为本申请实施例提供的一种固定头部的格式示意图;
图5为本申请实施例提供的一种载荷的格式示意图;
图6为本申请实施例提供的一种订阅树的拓扑结构图;
图7为本申请实施例提供的一种逐层进行主题匹配的流程图;
图8为本申请实施例提供的一种服务器的组成示意图;
图9为本申请实施例提供的另一种服务器的组成示意图;
图10为本申请实施例提供的另一种服务器的组成示意图。
具体实施方式
为了解决在订阅客户端订阅能处理的发布消息的情况下,订阅客户端上的订阅关系较难维护的问题,本申请实施例提供一种订阅发布方法,其基本原理是:服务器接收发布客户端发送的包括有主题名的发布消息,并根据接收到的发布消息获取该发布客户端的标识,且服务器根据主题名查找订阅树,获得订阅客户端的标识,并根据订阅客户端的标识以及第一映射表获取与订阅客户端的标识对应的第一标签,以及根据该发布客户端的标识以及第一映射表获取与发布客户端的标识对应的第二标签,且服务器可以将第一标签与第二标签进行匹配,并在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。其中,订阅树为至少一个主题过滤器组成的拓扑结构,订阅客户端的标识为与主题名匹配成功的一个主题过滤器对应的标识,第一映射表的每个表项包含客户端的标识与对应的标签,标签用于指示与标签对应的客户端的至少一种属性信息。
本申请中预先在服务器中存储记录了客户端标识与标签的对应关系的第一映射表,服务器可以在主题名与主题过滤器匹配成功的情况下,匹配发布客户端和订阅客户端的属性信息,并在发布客户端与订阅客户端的属性信息匹配成功时,向订阅客户端发送发布消息。这样,在订阅客户端迁移,扩容时,订阅客户端也不需要重新发布订阅消息,仅更改客户端的属性信息即可,从而解决了订阅客户端自己维护订阅关系导致的维护困难的问题。且,本申请中客户端的属性信息为包括有区域的多种信息,与现有技术中仅能匹配区域相比,可以使订阅客户端获得更多维度的发布消息,即实现更多维度的订阅,扩展性更好。
为了便于本领域技术人员的理解,本申请实施例在此对本申请实施例中涉及到的基本术语进行说明。
1、主题:主题是订阅客户端和发布客户端之间的桥梁,主题可以包括主题名和主题过滤器,将包含在发布消息中的主题称为主题名,主题名中不能包含通配符,用于发布明确的主题;将包含在订阅消息中的主题称为主题过滤器,主题过滤器中可以包含通配符,用于同时订阅多个主题。在MQTT协议中,主题是一个结构化的、多层的结构,通过使用分隔符(/)将主题进行分层,每一层称之为主题层级。分隔符可以位于主题中的任意位置,相邻的分隔符用于表示空字符串的主题层级,即该主题层级的内容为空。示例性的,假设主题为:myhome/groundfloor/livingroom/temperature,其中,myhome、groundfloor、livingroom和temperature均为主题层级。
且,主题过滤器中包含的通配符可以包括多层通配符(multi-level wildcard)和单层通配符(single-level wildcard)。其中:
(1)多层通配符:用#表示,是用于匹配主题名中任意主题层级的通配符。多层通配符可以表示多个主题层级。多层通配符是主题过滤器的最后一个字符,示例性的,多层通配符可以位于某个主题层级,例如,主题过滤器为:#,多层通配符也可以跟在分隔符后面,例如,主题过滤器为:myhome/groundfloor/#,那么若存在如表1所示的主题名:
表1
  主题名
1 myhome/groundfloor/livingroom/temperature
2 myhome/groundfloor/kitchen/temperature
3 myhome/groundfloor/kitchen/brightness
4 myhome/firstfloor/kitchen/temperature
5 myhome/groundfloor/kitchen/fridge/temperature
则与该主题过滤器匹配成功的主题名为:序号为1、2、3和5的主题名,与该主题过滤器匹配失败的主题名为:序号为4的主题名。
(2)单层通配符:用+表示,是用于匹配主题名中的单个主题层级的通配符。单层通配符是占据整个主题层级的通配符,其可以位于主题过滤器的任意主题层级,包括第一个主体层级和最后一个主体层级。且,一个主题过滤器中可以包含多个单层通配符,也可以同时包含多层通配符和单层通配符。
示例性的,假设包含单层通配符的主题过滤器为:myhome/groundfloor/+/temperature,那么表1所示的主题名中,与该主题过滤器匹配成功的主题名为:序号为1和2的主题名,与该主题过滤器匹配失败的主题名为:序号为3、4和5的主题名。
2、服务质量(quality of service,QoS):是指一个网络能够利用各种基础技术,为网络通信提供更好的服务能力。在MQTT协议中,可以提供三种等级的QoS,分别为QoS=0、1、2。
3、订阅树:为至少一个主题过滤器组成的拓扑结构。订阅树可以包括根节点和至少一层子树,每层子树包括至少一个子树。其中,根节点为逻辑节点,代表所有主题过滤器的根,每个子树中存储有主题过滤器的一个主题层级。与根节点连接的第一层子树为存储有第一个主题层级的子树,与第一层子树连接的第二层子树为存储有第一个主题层级下的第二个主题层级的子树,以此类推,直到最后一个主题层级。由一个第一层子树开始,根据连接到最后一层子树,每层子树中存储的主题层级可以组成一个主题过滤器。且,在每个存储有主题过滤器的最后一个主题层级的子树中存储有与该主题过滤器对应的订阅客户端的标识和用于指示该订阅客户端是否支持标签匹配的指示信息。
下面将结合附图对本申请实施例的实施方式进行详细描述。
图1为本申请实施例提供的一种可以应用本申请实施例的系统架构的简化示意图,如图1所示,该系统架构可以包括:至少一个发布终端11、订阅终端12和服务器13。在图1中以3个发布终端为例示出。
其中,至少一个发布终端11中每个发布终端上运行的发布客户端与服务器13通过MQTT协议进行通信,服务器13与订阅终端12上运行的订阅客户端通过MQTT协议进行 通信,至少一个发布客户端与订阅客户端通过主题建立间接的联系。
发布终端11上运行有发布客户端,该发布客户端是支持MQTT协议的客户端,其可以作为消息的生成者。发布终端11可以为温度传感器、湿度传感器、电表、水表等。在图1中以发布终端11为电表为例示出。
在一种可能的实现方式中,发布终端11可以直接接入服务器13。在另一种可能的实现中,发布终端11可以通过一个物联网网关(gateway)接入服务器13,此时,该物联网网关可以作为网桥(bridge),用于对发布终端11上运行的发布客户端和服务器13之间交互的消息进行协议或数据格式的转换,或者,该物联网网关也可以作为发布终端11的代理,使得发布终端11上运行的发布客户端能够通过物联网网关向服务器13发送发布消息。
订阅终端12上运行有订阅客户端,该订阅客户端是支持MQTT协议的客户端,其可以作为发布消息的消费者或者管理者。订阅终端12可以为手机、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、膝上型轻便电脑(laptop)等。在本申请实施例中以订阅终端12为手机为例示出。
服务器13上运行有MQTT协议的服务端,是订阅发布机制的执行主体。在具体的实现中,多个服务器13可以组成集群,且多个服务器13之间可以进行订阅发布,即某一服务器可以作为一个订阅客户端向另一服务器发送订阅消息,并在接收到发布消息后向与该服务器连接的订阅客户端发送发布消息。
需要说明的是,在本申请实施例中,发布终端也可以作为订阅终端,此时相应的,订阅终端便作为发布终端,本申请实施例在此对发布终端和订阅终端的具体形式不做限定。
另外,在本申请实施例中,服务器可以根据订阅客户端的标识向订阅终端上运行的订阅客户端发送发布消息。
图2为本申请实施例提供的一种订阅发布方法的流程图,如图2所示,该方法可以包括:
201、发布客户端向服务器发送发布消息。
其中,在发布终端上运行的发布客户端的用户名和密码通过认证、服务器保存了发布客户端的会话以及与会话对应的发布客户端的标识的情况下,发布客户端可以向服务器发送发布消息,该发布消息中可以包括主题名。
示例性的,假设发布终端为温度传感器,那么该温度传感器上运行的客户端可以将主题名,例如主题名为:thermometer/temperature,以及该温度传感器采集到的温度值包括在发布消息中,并向服务器发送该发布消息。
202、服务器接收发布客户端发送的发布消息,并根据发布消息获取发布客户端的标识。
其中,在发布客户端向服务器发送了发布消息之后,服务器便可以接收发布消息,并在确定具有发布权限后,根据接收到发布消息的会话获取与该会话对应的发布客户端的标识。
203、服务器根据主题名查找订阅树,获得订阅客户端的标识。
其中,订阅客户端的标识为与主题名匹配成功的一个主题过滤器对应的标识。在服务器获取到发布客户端的标识之后,服务器可以根据该发布消息中包括的主题名查找订阅树,获得一个与主题名匹配成功的主题过滤器,并在存储有该主题过滤器的最后一个主题层级的子树中获取订阅客户端的标识,该订阅客户端的标识可以是多个。
为了在实现发布消息的按需分流时,解决订阅客户端上的订阅关系较难维护的问题,可以将主题与客户端的属性信息分离,且将客户端的属性信息,即标签预先存储在服务器中,在服务器获取到订阅客户端的标识后,服务器可以在确定发布客户端的标签和订阅客户端的标签匹配成功的情况下,向订阅客户端发送发布消息。具体的,针对多个订阅客户端的标识中的每个订阅客户端的标识,可以执行以下步骤204-步骤206:
204、服务器根据订阅客户端的标识以及第一映射表获取与订阅客户端的标识对应的第一标签,并根据发布客户端的标识以及第一映射表获取与发布客户端的标识对应的第二标签。
其中,标签用于指示与该标签对应的客户端的至少一种属性信息。
服务器可以根据订阅客户端的标识和第一映射表,获取与订阅客户端的标识对应的第一标签,并根据发布客户端的标识和第一映射表,获取与发布客户端的标识对应的第二标签。第一映射表的每个表项包含客户端的标识与对应的标签,该客户端的标识可以是订阅客户端的标识,也可以是发布客户端的标识。
需要说明的是,在本申请实施例中,标签可以是在客户端向服务端注册时,运行有MQTT协议的服务端的服务器获取到的,也可以是管理员添加在服务器的标签管理(tags manager)模块中的。本申请实施例在此对标签存储在服务器中的具体方式不做限定。且在本申请实施例中,服务器在运行时,可以通过管理标签的通信接口动态更新与客户端的标识对应的标签,使得不需要更改订阅关系,便可以实现发布消息的按需分流,与现有技术中的客户端在扩容、迁移时需要重新更改订阅关系相比,解决了订阅客户端上的订阅关系较难维护的问题。
205、服务器将第一标签与第二标签进行匹配。
其中,在服务器获取到第一标签和第二标签之后,可以将第一标签与第二标签进行匹配,即将发布客户端的至少一种属性信息和订阅客户端的至少一种属性信息进行匹配。在本申请实施例中,发布客户端的属性信息的种类数量和订阅客户端的属性信息的种类数量是相同的,服务器可以将种类相同的属性信息进行匹配,只有在所有种类的属性信息均匹配成功的情况下,才能确定第一标签和第二标签匹配成功。如果第一标签和第二标签匹配成功,则可以执行以下步骤206,如果第一标签和第二标签匹配失败,则服务器可以判断是否还有下一个订阅客户端,如果还有下一个订阅客户端,则可以重复执行步骤204-步骤205。
206、服务器向订阅客户端发送发布消息。
需要说明的是,对于与主题名匹配成功的一个主题过滤器对应的标识,服务器执行了步骤204-步骤206之后,服务器可以继续获取能够与主题名匹配成功的其他主题过滤器,每获取到一个匹配成功的主题过滤器,便可以在存储有该主题过滤器的最后一个主题层级的子树中获取到多个订阅客户端的标识,此时针对该多个订阅客户端的标识,便可以重复执行步骤204-步骤206,直到服务器获取到最后一个与主题名匹配的主题过滤 器,并向最后一个订阅客户端发送了发布消息。
本申请实施例提供的订阅发布方法,服务器在接收到发布客户端发送的包括有主题名的发布消息,并根据发布消息获取到该发布客户端的标识后,根据发布消息中的主题名查找订阅树,获得与主题名匹配成功的一个主题过滤器对应的订阅客户端的标识,且服务器在根据订阅客户端的标识和第一映射表获取到第一标签,根据该发布客户端的标识和第一映射表获取到第二标签后,可以将第一标签和第二标签进行匹配,并在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。本申请中预先在服务器中存储记录了客户端标识与标签的对应关系的第一映射表,服务器可以在主题名与主题过滤器匹配成功的情况下,匹配发布客户端和订阅客户端的属性信息,并在发布客户端与订阅客户端的属性信息匹配成功时,向订阅客户端发送发布消息。这样,在订阅客户端迁移,扩容时,订阅客户端也不需要重新发布订阅消息,仅更改客户端的属性信息即可,从而解决了订阅客户端自己维护订阅关系导致的维护困难的问题。且,本申请中客户端的属性信息为包括有区域的多种信息,与现有技术中仅能匹配区域相比,可以使订阅客户端获得更多维度的发布消息,即实现更多维度的订阅,扩展性更好。
图3为本申请实施例提供的另一种订阅发布方法的流程图,如图3所示,该方法可以包括:
301、订阅客户端向服务器发送订阅消息。
其中,在服务器的访问控制列表(access control list,ACL)模块对订阅终端上运行的订阅客户端的用户名和密码通过认证、在会话管理模块中保存了订阅客户端的会话以及与该会话对应的订阅客户端的标识的情况下,订阅客户端可以向服务器发送订阅消息,该订阅消息中包括至少一个主题过滤器。
示例性的,假设订阅终端为手机,需要订阅温度传感器的温度和电表的用电量,那么该手机上运行的客户端可以将两个主题过滤器,例如两个主题过滤器分别为:thermometer/+、ammeters/#,包括在订阅消息中,并向服务器发送该订阅消息。
当然,在具体的实现中,会有多个订阅客户端向服务器发送订阅消息,每个订阅消息中包括至少一个主题过滤器。示例性的,假设有8个订阅客户端向服务器发送订阅消息,如表2的第二列所示,为订阅消息中包括的主题过滤器。
表2
订阅客户端的标识 主题过滤器
C1 thermometer/+
C1 ammeters/#
C2 ammeters/5678
C3 thermometer/1234
C4 thermometer/+
C5 ammeters/#
C6 thermometer/1234
C6 ammeters/5678
C7 thermometer/+
C8 thermometer/+
C8 ammeters/+
需要说明的是,为了在实现发布消息的按需分流的同时,能够保留现有的仅支持主题匹配的机制,可以标示出订阅消息中的主题过滤器是否支持标签匹配。在本申请实施例中,可以采用以下两种方式标示主题过滤器是否支持标签匹配。
方式1,通过订阅消息中的标志位来指示主题过滤器是否支持标签匹配。
示例性的,订阅客户端可以将订阅消息的保留字段(reserved)设置为标志位,用于指示订阅消息中包括的主题过滤器是否支持标签匹配。在本申请实施例中,订阅消息包括头部和载荷两部分,其中头部包括固定头部和可变头部,可变头部与消息类型(消息类型包括订阅消息、发布消息等)有关,对于所有的订阅消息来说,可变头部的格式是固定的。图4为固定头部的格式示意图,如图4所示,固定头部包括两个字节(byte),其中字节1的第4到第7比特(bit)为MQTT控制包类型(MQTT control packet type),字节2为剩余长度(remaining length),字节1的第0到第3比特为保留字段,订阅客户端可以将其中任意一个保留字段设置为第一标志位,该第一标志位可以包括第一值或者第二值,第一值用于指示至少一个主题过滤器中的每个主题过滤器支持标签匹配,第二值用于指示至少一个主题过滤器中包括至少一个不支持标签匹配的主题过滤器。
图5为载荷的格式示意图,如图5所示,载荷中包括至少一个主题过滤器,在图5中以一个主题过滤器为例示出,字节1到字节N表示一个主题过滤器,其中,字节1表示最高有效位(most significant bit,MSB),字节2表示最低有效位(least significant bit,LSB),字节3到字节N表示主题过滤器的分层结构,字节N+1中的第0和1比特表示与该主题过滤器对应的QoS标识,字节N+1的第2到7比特为保留字段,订阅客户端可以将其中任意一个保留字段设置为第二标志位,第二标志位可以包括第三值或者第四值,第三值用于指示与该第二标志位对应的主题过滤器支持标签匹配,第四值用于指示与该第二标志位对应的主题过滤器不支持标签匹配。
需要说明的是,在本申请实施例中,值的取值可以是:0或1,在一种可能的实现方式中,第一值的取值为1,第二值的取值为0,在另一种可能的实现方式中,第一值的取值为0,第二值的取值为1。且,在一种可能的实现方式中,第三值的取值为1,第四值的取值为0,在另一种可能的实现方式中,第三值的取值为0,第四值的取值为1。需要说明的是,值的具体取值可以根据实际应用场景的需求进行设置,本申请实施例在此不做具体限制。在本申请实施例中以第一值的取值为1,第二值的取值为0,第三值的取值为1,第四值的取值为0为例进行说明。
方式2,通过用于管理主题过滤器的通信接口将主题过滤器以及与主题过滤器对应的标识信息存储在服务器中。
示例性的,在本申请实施例中,可以通过用于管理主题过滤器的通信接口预先将主题过滤器以及与主题过滤器一一对应的标识信息存储在服务器中。标识信息可以包括第五值或第六值。其中,第五值用于指示与标识信息对应的主题过滤器支持标签匹配,第六值用于指示与标识信息对应的主题过滤器不支持标签匹配。
302、服务器接收订阅客户端发送的订阅消息,并根据订阅消息获取订阅客户端的标识。
其中,在订阅客户端向服务器发送了订阅消息之后,服务器的ACL模块可以在确定 订阅客户端具有订阅的权限后,根据接收到订阅消息的会话获取与该会话对应的订阅客户端的标识,并指示订阅服务(subscribe service)模块对订阅消息进行处理。
示例性的,假设服务器根据会话获取到的订阅客户端的标识为C1,如表2的第一列所示。
303、服务器在确定至少一个主题过滤器中的第一主题过滤器支持标签匹配时,将第一主题过滤器关联到订阅树上,并在订阅树中存储有第一主题过滤器的最后一个主题层级的子树中保存订阅客户端的信息。
其中,第一主题过滤器为至少一个主题过滤器中的任意一个,订阅客户端的信息包括订阅客户端的标识和用于指示订阅客户端支持标签匹配的指示信息。在服务器的订阅服务模块接收到来自ACL模块的指示后,订阅服务模块可以判断订阅消息中包括的至少一个主题过滤器中的每个主题过滤器是否支持标签匹配,对于任意一个主题过滤器,如第一主题过滤器,服务器可以在确定第一主题过滤器支持标签匹配时,向订阅服务模块中包括的第一订阅处理模块发送一指示,第一订阅处理模块便可以在接收到指示后,将第一主题过滤器关联到订阅树上,并在存储有第一主题过滤器的最后一个主题层级的子树中保存订阅客户端的标识和用于指示该订阅客户端支持标签匹配的指示信息。服务器可以在确定第一主题过滤器不支持标签匹配时,向第二订阅处理模块发送一指示,第二订阅处理模块可以在接收到该指示后,将第一主题过滤器关联到订阅树上,并在存储有第一主题过滤器的最后一个主题层级的子树中保存订阅客户端的标识和用于指示该订阅客户端不支持标签匹配的指示信息。
需要说明的是,在服务器未接收到任何订阅消息之前,预先保存有仅包含根节点的订阅树,这样,每次接收到订阅消息,便可将订阅消息中包含的主题过滤器关联到订阅树上。
且,在本申请实施例中可以采用以下三种方式确定第一主题过滤器支持标签匹配。
方式1,服务器在确定第一标志位包括第一值时,确定第一主题过滤器支持标签匹配。
示例性的,按照步骤402中方式1标示主题过滤器是否支持标签匹配的方式,订阅服务模块可以判断第一标志位包括第一值还是第二值。如果第一标志位包括第一值,则表明订阅消息中包括的至少一个主题过滤器均支持标签匹配,此时,第一订阅处理模块可以将至少一个主题过滤器逐个关联到订阅树上,并在存储有每个主题过滤器的最后一个主题层级的子树中保存订阅客户端的标识和用于指示该订阅客户端支持标签匹配的指示信息。如果第一标志位包括第二值,则表明至少一个主题过滤器中包括至少一个不支持标签匹配的主题过滤器,此时,可以采用以下方式2确定第一主题过滤器支持标签匹配。
方式2,服务器在确定第一标志位包括第二值,且确定与第一主题过滤器对应的第二标志位包括第三值时,确定第一主题过滤器支持标签匹配。
示例性的,如果第一标志位包括第二值,则订阅服务模块可以判断与第一主题过滤器对应的第二标志位是否包括第三值。如果该第二标志位包括第三值,则确定第一主题过滤器支持标签匹配,如果该第二标志位包括第四值,则确定第一主题过滤器不支持标签匹配。
需要说明的是,可以预先设置第一标志位和第二标志位分别在保留字段的哪个比特上,并将第一标志位和第二标志位的具体位置配置在服务器中。
另外,将第一主题过滤器关联到订阅树的过程为:根据第一主题过滤器的分层情况,判断订阅树的第一个主题层级中是否包含第一主题过滤器的第一个主题层级,如果不包含,则将该第一个主题层级与根节点连接,然后依次将第一主题过滤器的第二个主题层级,…,最后一个主题层级进行连接,如果包含,则判断订阅树该第一个主题层级下连接的第二个主题层级中是否包含第一主题过滤器的第二个主题层,如果不包含,则将该第二个主题层级与订阅树的该第一个主题层级连接,然后依次将第一主题过滤器的第三个主题层级,…,最后一个主题层级进行连接,如果包含,则继续判断订阅树的该第二主题层级下连接的第三个主题层级中是否包含第一主题过滤器的第三个主题层级,直到将第一主题过滤器的最后一个主题过滤器连接到订阅树上。
示例性的,按照步骤301中的表2所示,假设服务器首次接收到的订阅消息是标识为C1的订阅客户端发送的,该订阅消息中包括的主题过滤器为thermometer/+和ammeters/#,且该订阅消息的第一标志位为1,那么服务器可以先将主题过滤器thermometer/+的第一个主题层级thermometer与根节点连接,并将第二个主题层级+与第一个主题层级thermometer连接,然后将主题过滤器ammeters/#的第一个主题层级ammeters与根节点连接,并将第二个主题层级#与第一个主题层级ammeters连接,且在第二个主题层级+和#中分别保存C1和用于指示C1支持标签匹配的指示信息,为了便于区分,以C1支持标签匹配为C1’,C1不支持标签匹配为C1为例示出,其余标识也类似。假设服务器接收到的标识为C2的订阅客户端的订阅消息的第一标志位为0,第二标志位为1,那么服务器可以将主题过滤器ammeters/5678的第二个主题层级5678关联到订阅树中的ammeters下,并在第二个主题层级567890中保存C2’。假设服务器接收到的标识为C3的订阅客户端的订阅消息的第一标志位为0,第二标志位为0,那么服务器可以将主题过滤器thermometer/1234的第二个主题层级1234关联到订阅树中的第一个主题层级thermometer下,并在第二个主题层级1234中保存C3。假设服务器接收到的标识为C6的订阅客户端的订阅消息的第一标志位为0,与主题过滤器thermometer/1234对应的第二标志位为1,与主题过滤器ammeters/5678对应的第二标志位为0,那么服务器可以在订阅树的第一个主题层级thermometer下的第二个主题层级123456中保存C6’,并在订阅树的第一个主题层级ammeters下的第二个主题层级567890中保存C6。假设服务器接收到的标识为C8的订阅客户端的订阅消息的第一标志位为0,与主题过滤器thermometer/+对应的第二标志位为0,与主题过滤器ammeters/+对应的第二标志位为0,那么服务器可以在订阅树的第一个主题层级thermometer下的第二个主题层级+中保存C8,并将第二个主题层级+与订阅树中的第一个主题层级ammeters连接,在订阅树的第一个主题层级ammeters下的第二个主题层级+中保存C8。假设服务器接收到的标识为C4的订阅客户端、标识为C5的订阅客户端和标识为C7的订阅客户端的订阅消息的第一标志位均为1,那么服务器可以在订阅树的第一个主题层级thermometer下的第二个主题层级+中保存C4’和C7’,在订阅树的第一个主题层级ammeters下的第二个主题层级#中保存C5’。最后的订阅树如图6所示,且在图6中以thermometer为温度传感器,ammeters为电表示出。
方式3,服务器在确定与第一主题过滤器对应的标识信息包括第五值时,确定第一主题过滤器支持标签匹配。
示例性的,按照步骤402中方式2标示主题过滤器是否支持标签匹配的方式,订阅服务模块可以根据订阅客户端的标识、第一主题过滤器以及会话管理模块中存储的第二映射表,获取与第一主题过滤器对应的标识信息。该第二映射表的每个表项包含客户端的标识,与客户端的标识对应的至少一个主题过滤器,以及至少一个主题过滤器中每个主题过滤器对应的标识信息。
例如,如表3所示,为会话管理模块中存储的第二映射表,在此以标识信息包括的第五值为1,第六值为0为例示出。
表3
Figure PCTCN2018099659-appb-000001
假设订阅客户端的标识为C1,第一主题过滤器为ammeters/#,则订阅服务器模块获取到的与第一主题过滤器ammeters/#对应的标识信息为1,此时,订阅服务模块确定第一主题过滤器支持标签匹配。
需要说明的是,在主题过滤器的支持标签匹配的情况发生改变时,可以通过通信接口动态调整会话管理模块中与该主题过滤器对应的标识信息,并相应更改订阅树上相应的指示信息。具体的,在第一主题过滤器由支持标签匹配改变为不支持标签匹配的情况下,可以将与第一主题过滤器对应的标识信息由第五值调整为第六值,并将存储有第一主题过滤器的最后一个主题层级的子树中的用于指示该订阅客户端支持标签匹配的指示信息替换为用于指示该订阅客户端不支持标签匹配的指示信息,在第一主题过滤器由不支持标签匹配改变为支持标签匹配的情况下,可以将与第一主题过滤器对应的标识信息由第六值调整为第五值,并将存储有第一主题过滤器的最后一个主题层级的子树中的用于指示该订阅客户端不支持标签匹配的指示信息替换为用于指示该订阅客户端支持标签匹配的指示信息。这样,通过在服务器中管理主题过滤器支持标签匹配的情况,实现了订阅消息中的主题过滤器与支持标签匹配情况的分离,使得在主题过滤器保持不变,改变该主题过滤器支持标签匹配的情况下,可以调整服务器中与该主题过滤器对应的标识信息,而不需要订阅客户端先取消订阅再重新订阅该主题过滤器。
304、发布客户端向服务器发送发布消息。
其中,发布消息中包括主题名和QoS标识。且发布消息中可以包括持久化标识,或者,也可以不包括持久化标识。所述持久化标识用于指示服务器存储所述发布消息。
305、服务器接收发布客户端发送的发布消息,并根据发布消息获取发布客户端的标识。
其中,在接收到发布客户端发送的发布消息之后,服务器的ACL模块可以在确定具有发布的权限后,根据接收到发布消息的会话获取与该会话对应的发布客户端的标识,并向发布服务(publish service)模块发送一指示,发布服务模块可以在接收到该指示后,根据QoS标识向发布客户端返回响应消息,并在发布客户端的会话中将该发布消 息保存一段时间。如果发布消息中包括持久化标识,那么发布服务模块可以指示持久化模块将该发布消息保存到磁盘、磁带等中,以便服务器在接收到订阅客户端发送的订阅消息后,可以在确定订阅客户端订阅了某条持久化消息后,将该持久化消息发送至订阅客户端,而不需要等到服务器接收到新的发布消息后,才向订阅客户端发送该新的发布消息。
需要说明的是,本申请实施例中,在步骤402服务器接收到订阅客户端发送的订阅消息,并根据订阅消息获取到订阅客户端的标识后,可以先获取预先存储的至少一条持久化消息,并将订阅消息中包括的至少一个主题过滤器作为一颗订阅树,然后通过进行主题匹配和标签匹配,确定将哪些持久化消息发送至该订阅客户顿啊。其中,服务器根据任意一条持久化消息中包括的主题名查找订阅树,以及进行标签匹配的具体过程与以下步骤306-步骤310的描述类似,在此不再赘述。然后,服务器再将订阅消息中包括的至少一个主题过滤器关联到预先存储的订阅树上,并在接收到新的发布消息时,执行以下步骤306-步骤310。
306、服务器根据主题名查找订阅树,获得订阅客户端的标识。
其中,在服务器获取到发布客户端的标识之后,服务器的主题匹配模块可以逐层遍历订阅树中的主题层级,将主题名的主题层级与订阅树中对应的主题层级进行比较,以获得一个与主题名匹配成功的主题过滤器,并在该主题过滤器的最后一个主题层级中获取到订阅客户端的标识。
在具体的实现中,图7为逐层进行主题匹配的流程图,如图7所示,服务器的主题匹配模块可以逐层遍历订阅树中的主题层级,将主题名的主题层级与订阅树中对应的主题层级进行比较。对于第N个主题层级,服务器可以将主题名的第N个主题层级与订阅树中的所有第N个主题层级进行比较,先判断主题名的第N个主题层级的内容与订阅树的某第N个主题层级的内容是否相同,或者,判断订阅树的某第N个主题层级是否为+,如果主题名的第N个主题层级的内容与订阅树中的第N-1个主题层级下的第N个主题层级的内容相同,或者,如果订阅树中第N-1个主题层级下的某个第N个主题层级为+,则表明该层匹配成功,服务器可以判断订阅树该第N个主题层级下是否存在第N+1个主题层级,如果存在,则服务器继续进行下一个主题层级的匹配,如果不存在,则表明主题名与该主题过滤器匹配成功,服务器可以获取该到第N个主题层级中保存的订阅客户端的标识。否则,服务器判断订阅树的某第N个主题层级是否为#,如果订阅树中某第N个主题层级为#,则表明主题名与该主题过滤器匹配成功,服务器可以获取该第N个主题层级中保存的订阅客户端的标识。如果订阅树的该第N个主题层级不为#,则可以判断该第N个主题层级之后是否还有子树,如果有,则将主题名的第N个主题层级与该第N级主题层级匹配。且在获取到该第N个主题层级中保存的订阅客户端的标识之后,发布服务模块可以判断第N个主题层级之后是否还有子树,如果有,则将主题名的第N个主题层级与该第N级主题层级匹配。
例如,假设服务器接收到的主题名为thermometer/1234,则主题名的第一个主题层级thermometer与订阅树的第一个主题层级thermometer匹配成功,此时,服务器将主题名的第二个主题层级1234与订阅树的第一个主题层级thermometer下的第二个主题层级+匹配成功,获得的订阅客户端的标识为C1’、C4’、C7’和C8’。且服务器在确定 订阅树的第一个主题层级thermometer下还有另一第二个主题层级1234,与主题名的第二个主题层级1234的内容相同,获得订阅客户端的标识为C3,C6’。服务器确定主题名的第一个主题层级与订阅树的另一第一个主题层级ammeters匹配失败。
再例如,假设服务器接收到的主题名为Thermometer/2345,则由于主题对字母的大小写敏感,使得主题名的第一个主题层级Thermometer与订阅树的第一个主题层级thermometer匹配失败。且主题名的第一个主题层级Thermometer与订阅树的第一个主题层级ammeters匹配失败。
再例如,假设服务器接收到的主题名为things/12/temp,则主题名的第一个主题层级things与订阅树的第一个主题层级thermometer和ammeters均匹配失败。
需要说明的是,为了在实现发布消息的按需分流时,解决订阅客户端上的订阅关系较难维护的问题,在服务器的主题匹配模块获得了订阅客户端的标识后,针对多个订阅客户端的标识中的任意一个订阅客户端的标识,可以执行以下步骤307-步骤310:
307、服务器确定存储有订阅客户端的标识的子树中还存储有用于指示订阅客户端支持标签匹配的指示信息。
其中,主题匹配模块可以判断存储有订阅客户端的标识的子树中是否还存储有用于指示该订阅客户端支持标签匹配的指示信息,如果确定存储有用于指示订阅客户端支持标签匹配的指示信息,则表明该订阅客户端支持标签匹配,此时可以执行以下步骤308。如果确定存储有用于指示订阅客户端不支持标签匹配的指示信息,则表明该订阅客户端不支持标签匹配,则主题匹配模块可以通过发布服务模块向该订阅客户端发送发布消息。这样,由于客户端的标签是维护在服务器中的,与现有技术二中的在主题中携带区域标识相比,实现了现有技术中原有的仅支持主题匹配的订阅发布机制的保留。
308、服务器根据订阅客户端的标识以及第一映射表获取与订阅客户端的标识对应的第一标签,并根据发布客户端的标识和第一映射表获取与发布客户端的标识对应的第二标签。
其中,标签用于指示与该标签对应的客户端的至少一种属性信息。在确定出存储有订阅客户端的标识的子树中还存储有用于指示该订阅客户端支持标签匹配的指示信息后,主题匹配模块可以指示标签管理模块从第一映射表中获取与订阅客户端的标识对应的第一标签,并获取与发布客户端的标识对应的第二标签。
需要说明的是,在本申请实施例中,第一映射表的每个表项中包括客户端的标识以及与客户端的标识对应的标签,标签用于指示客户端的至少一种属性信息。一种属性信息可以包含属性名称和属性值,其中,属性值可以是单个值,也可以是多个值,如数组或列表,也可以是标签引擎模块支持的逻辑表达式,还可以是基于JavaScript语言的轻量级的数据交换格式(JavaScript object notation)的内容。且客户端的属性信息除了唯一标识,对应关系中包含的属性信息外,还可以包括显示名称等。
且由于客户端包括发布客户端和订阅客户端,对于不同种类的客户端,标签中包含的属性值也是不同的。示例性的,如果发布客户端的属性值是多个值,则表示广播的含义,相当于多个发布客户端分别发布了两条发布消息,每个发布客户端的标签中分别包含了多个值中的一个。例如,假设发布客户端的一种属性信息的属性名称为域(zone),属性值为sz和nj,则相当于两个发布客户端发布了两条消息,两个发布客户端分别具 有一种属性信息,为域=sz,域=nj。示例性的,如果订阅客户端的属性值是多个值,则表示包含的含义,若发布客户端的同种属性信息的属性值中存在一个值与订阅客户端的属性值相同,则订阅客户端的该种属性信息和发布客户端的该种属性信息匹配成功。例如,假设订阅客户端的一种属性信息的属性名称为域,属性值为sz和nj,相当于该订阅客户端同时订阅了域=sz的发布客户端和域=nj的发布客户端发布的消息。
309、服务器确定第一标签包括的每种属性信息的属性值是否分别与第二标签包括的对应的属性信息的属性值符合预设的逻辑关系。
其中,在标签管理模块获取到第一标签和第二标签后,可以向标签引擎(tags engine)模块发送该第一标签和第二标签,标签引擎模块便可以确定第一标签包括的每种属性信息的属性值是否分别与第二标签包括的对应的属性信息的属性值符合预设的逻辑关系,只有在两个属性值符合预设的逻辑关系的情况下,确定该种属性信息匹配成功,且只有在所有种类的属性信息匹配成功的情况下,确定第一标签和第二标签匹配成功,并向发布服务模块返回匹配成功的结果,以便发布服务模块在接收到匹配成功的结果后向订阅客户端发送发布消息。
需要说明的是,在本申请实施例中,预设的逻辑关系与属性信息的种类有很大的关系,例如,该逻辑关系可以是不同属性值的包含关系。
310、服务器在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。
需要说明的是,在服务器向订阅客户端发送了发布消息之后,服务器可以判断是否还有订阅客户端的标识,如果还有订阅客户端的标识,则服务器可以重复执行步骤307-步骤310,如果没有订阅客户端的标识,则服务器可以判断同层的主题层级中是否还有子树,如果有,则重复执行步骤306-步骤310,直到获取到最后一个与主题名匹配成功的主题过滤器,从而获取到订阅客户端的标识,并向最后一个标签匹配成功的订阅客户端发送发布消息为止。
示例性的,在多租户的场景中,假设第一标签和第二标签中包括两种属性信息,分别为租户(tenant)和域,此时,标签引擎模块可以在确定订阅客户端的租户的属性值包含发布客户端的租户的属性值,且订阅客户端的域的属性值包含发布客户端的域的属性值的情况下,确定第一标签和第二标签匹配成功。例如,按照步骤306中的例子,假设服务器获取到的发布客户端的标识为t1,获得的订阅客户端的标识为C1’、C4’、C7’和C8’,如表4所示,为第一映射表中客户端的标识,以及与客户端的标识对应的标签,该标签包括租户和域。
表4
Figure PCTCN2018099659-appb-000002
那么,服务器在获取到与C1对应的标签和与t1对应的标签后,确定C1的租户的属性值租户1包含t1的租户的属性值租户1,C1的域的属性值sz包含t1的域的属性值sz,则可以向标识为C1的订阅客户端发送发布消息。服务器确定还有订阅客户端的标识C4,则确定C4的租户的属性值租户2与t1的租户的属性值租户1不相等,不会向标识为C4的订阅客户端发送发布消息。服务器确定还有订阅客户端的标识C7,则确定C7的租户的属性值租户1包含t1的租户的属性值租户1,C7的域的属性值sz,nj包含t1的域的属性值sz,向标识为C7的订阅客户端发送发布消息。与C4类似,服务器不会向标识为C8的订阅客户端发送发布消息。
示例性的,在有优先级(priority)的场景中,属性的值可以是复杂的逻辑表达式,假设第一标签和第二标签中包括两种属性信息,分别为域和优先级,此时,标签引擎模块可以在确定发布客户端的域的属性值满足订阅客户端的域的属性值的逻辑表达式,且发布客户端的优先级的属性值满足订阅客户端的优先级的属性值的逻辑表达式的情况下,确定第一标签和第二标签匹配成功,并向订阅客户端发送发布消息。这样,通过进行优先级的匹配,实现了不同的订阅客户端处理不同优先级的发布消息。例如,假设存在订阅客户端A和订阅客户端B,如果订阅客户端A可以使用更快的网络,更多的资源,订阅客户端B使用的网络较慢,使用的资源较少,那么可以通过在标签管理模块中设置与订阅客户端A对应的标签中的优先级的属性值大于50,与订阅客户端B对应的标签中的优先级的属性值小于50,从而使得订阅客户端A可以处理优先级较高的发布消息,订阅客户端B处理优先级较低的发布消息。
例如,按照步骤306中的例子,假设服务器获取到的发布客户端的标识为t1,获得的订阅客户端的标识为C1’、C4’、C7’和C8’,如表5所示,为第一映射表中客户端的标识,以及与客户端的标识对应的标签,该标签包括域和优先级。
表5
Figure PCTCN2018099659-appb-000003
且,本申请实施例在此对表5中涉及到的操作符进行介绍:$not:表示逻辑“非”,$eq:表示相等或包含,与$in类似($eq强调单值的包含,$in强调值是数组),$or:表示逻辑“或”,$and:表示逻辑“与”;$gt:表示大于,$ge:表示大于或等于,$lt:表示小于,$le:表示小于或等于。
那么,服务器可以在获取到与C1对应的标签和与t1对应的标签后,确定t1的域的属性值sz不满足C1的域的属性值的逻辑表达式{$not:{$eq:sz}},该逻辑表达式的含义为:包括除sz以外的域,不会向标识为C1的订阅客户端发送发布消息。
本申请实施例提供的订阅发布方法,服务器在接收到发布客户端发送的包括有主题名的发布消息,并根据发布消息获取到该发布客户端的标识后,根据该发布消息中的主 题名查找订阅树,获得与主题名匹配成功的一个主题过滤器对应的订阅客户端的标识,且服务器在根据订阅客户端的标识和第一映射表获取到第一标签,根据该发布客户端的标识和第一映射表获取到第二标签后,可以将第一标签和第二标签进行匹配,并在确定第一标签和第二标签匹配成功的情况下,向订阅客户端发送发布消息。本申请中预先在服务器中存储记录了客户端标识与标签的对应关系的第一映射表,服务器可以在主题名与主题过滤器匹配成功的情况下,匹配发布客户端和订阅客户端的属性信息,并在发布客户端与订阅客户端的属性信息匹配成功时,向订阅客户端发送发布消息。这样,在订阅客户端迁移,扩容时,订阅客户端也不需要重新发布订阅消息,仅更改客户端的属性信息即可,从而解决了订阅客户端自己维护订阅关系导致的维护困难的问题。且,本申请中客户端的属性信息为包括有区域的多种信息,与现有技术中仅能匹配区域相比,可以使订阅客户端获得更多维度的发布消息,即实现更多维度的订阅,扩展性更好。
并且,服务器在确定订阅客户端的标识不是支持标签匹配的标识的情况下,向订阅客户端发送发布消息。这样,由于客户端的标签是维护在服务器中的,与现有技术二中的在主题中携带区域标识相比,实现了现有技术中原有的仅支持主题匹配的订阅发布机制的保留。通过在服务器中管理主题过滤器支持标签匹配的情况,实现了订阅消息中的主题过滤器与支持标签匹配情况的分离,使得在主题过滤器保持不变,改变该主题过滤器支持标签匹配的情况下,可以调整服务器中与该主题过滤器对应的标识信息,而不需要订阅客户端先取消订阅再重新订阅该主题过滤器。
上述主要从各个网元之间交互的角度对本申请实施例提供的方案进行了介绍。可以理解的是,服务器为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对服务器进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述和实施例中涉及的服务器的一种可能的组成示意图,如图8所示,该服务器可以包括:接收模块41、获取模块42、发布服务模块43、标签管理模块44和标签引擎模块45,其中,发布服务模块43可以包括主题匹配模块431。
其中,接收模块41,用于执行图2所示的订阅发布方法中的步骤202中所述的接收发布客户端发送的发布消息,图3所示的订阅发布方法中的步骤302中所述的接收订阅客户端发送的订阅消息,步骤305中所述的接收发布客户端发送的发布消息。
获取模块42,用于执行图2所示的订阅发布方法中的步骤202中所述的根据发布消息获取发布客户端的标识,图3所示的订阅发布方法中的步骤302中所述的根据订阅消 息获取订阅客户端的标识,步骤305中所述的根据发布消息获取发布客户端的标识。
发布服务模块43是处理发布消息的模块,用于执行图2所示的订阅发布方法中的步骤206,图3所示的订阅发布方法中的步骤310,即用于在接收到标签引擎模块45返回的匹配成功结果后,向订阅客户端发送发布消息,或者在接收到标签匹配模块432的指示后向订阅客户端发送发布消息。且发布服务模块43,还用于在接收到ACL模块48发送的指示后,对发布消息进行处理。具体的:如果发布消息中包含持久化标识,则发布服务模块43指示持久化模块49进行发布消息的持久化,也就是说,将发布消息以一定格式保存到硬盘、磁带等非易失介质中,以便于服务器在接收到订阅客户端发送的订阅消息后,可以在确定该订阅客户端订阅了该持久化的发布消息时,将该持久化的发布消息发送至该订阅客户端,而不需要等待接收到新的发布消息后才能向该订阅客户端发送新的发布消息。发布服务模块43,还用于根据发布消息中包含的QoS标识,向发布客户端返回响应消息,并在会话管理模块47中,与发布客户端的标识对应的会话中将该发布消息保存一段时间,以便订阅了该发布消息的订阅客户端在断开连接并重新连接到服务器时,发布服务模块43可以在确定订阅客户端订阅了发布消息时,向该订阅客户端发送发布消息。
主题匹配模块431,用于执行图2所示的订阅发布方法中的步骤203,图3所示的订阅发布方法中的步骤306,即用于根据发布消息中包括的主题名查找订阅树,获得与主题名匹配成功的主题过滤器对应的订阅客户端的标识。
标签管理模块44,用于提供与客户端对应的标签的管理服务,可以实时的更新与客户端的标识对应的标签。在具体的实现中,标签管理模块44,用于执行图2所示的订阅发布方法中的步骤204,图3所示的订阅发布方法中的步骤308,即用于在接收到第二订阅处理模块462发送的指示后,根据订阅客户端的标识和第一映射表获取与订阅客户端的标识对应的第一标签,并根据发布客户端的标识和第一映射表获取与发布客户端的标识对应的第二标签,并将第一标签和第二标签发送标签引擎模块45。
标签引擎模块45,用于执行图2所示的订阅发布方法中的步骤205,图3所示的订阅发布方法中的步骤309,即用于将第一标签和第二标签进行匹配,并向发布服务模块43返回匹配结果。
在本申请实施例中,进一步的,如图9所示,服务器还可以包括:订阅服务模块46、会话管理模块47、ACL模块48和持久化模块49,发布服务模块43还包括标签匹配模块432,订阅服务模块46还包括第一订阅处理模块461和第二订阅处理模块462。
标签匹配模块432,用于判断订阅客户端是否支持标签匹配,如果支持标签匹配,则指示标签管理模块44获取与订阅客户端的标识对应的第一标签,以及与发布客户端的标识对应的第二标签,如果不支持标签匹配,则指示发布服务模块43向订阅客户端发送发布消息。
订阅服务模块46是处理订阅消息的模块,用于执行图3所示的订阅发布方法中的步骤303,即用于在接收到ACL模块48发送的指示后,判断订阅消息中包括的至少一个主题过滤器中的每个主题过滤器是否支持标签匹配。对于任意一个主题过滤器,如果该主题过滤器支持标签匹配,则向第一订阅处理模块461发送一指示,第一订阅处理模块461,用于在接收到指示后,将该主题过滤器关联到订阅树中相应的子树上,并在存储 有该主题过滤器的最后一个主题层级的子树中保存订阅客户端的信息,该订阅客户端的信息包括订阅客户端的标识和用于指示订阅客户端支持标签匹配的指示信息。如果该主题过滤器不支持标签匹配,则向第二订阅处理模块462发送一指示,第二订阅处理模块462,用于在接收到指示后,将该主题过滤器关联到订阅树中相应的子树上,并在存储有该主题过滤器的最后一个主题层级的子树中保存订阅客户端的信息,该订阅客户端的信息包括订阅客户端的标识和用于指示订阅客户端不支持标签匹配的指示信息。
会话管理模块47中保存有第二映射表,该第二映射表的每个表项包含客户端的标识,与客户端的标识对应的至少一个主题过滤器,以及至少一个主题过滤器中每个主题过滤器对应的标识信息,每个标识信息用于指示与标识信息对应的主题过滤器是否支持标签匹配,即会话管理模块47,用于执行图3所示的订阅发布方法中的根据订阅客户端的标识、第一主题过滤器以及第二映射表获取与第一主题过滤器对应的标识信息。会话管理模块47,还用于在客户端断开后重新连接到服务器后,在确定该客户端的会话在有效期内时,根据会话恢复订阅工作。
ACL模块48,用于客户端的接入认证和操作鉴权,客户端可以包括订阅客户端和发布客户端。在具体的实现中,ACL模块48,用于在接收到客户端发送的包含有用户名、密码以及客户端的标识的连接请求后,对用户名和密码进行认证,并在认证通过后向客户端反馈结果,且在会话管理模块47中生成并保存该客户端的会话,以及与该会话对应的客户端的标识。ACL模块48,还用于在接收到订阅客户端发送的订阅消息后,判断是否有订阅该订阅消息中包括的至少一个主题过滤器的权限,并在确定具有订阅的权限后,指示订阅服务模块46对订阅消息进行处理。ACL模块48,还用于在接收到发布客户端发送的发布消息后,判断发布客户端是否有发布消息到指定主题名的权限,并在确定具有发布的权限后,指示发布服务模块43对发布消息进行处理。
持久化服务模块49,用于会话、订阅消息和发布消息的持久化。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例提供的服务器,用于执行上述订阅发布方法,因此可以达到与上述订阅发布方法相同的效果。
在采用集成的单元的情况下,该服务器可以包括处理模块、通信模块和存储模块。其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器(digital signal processor,DSP)和微处理器的组合等等。通信模块可以是收发器、收发电路或通信接口等。存储模块可以是存储器。
图10示出了上述实施例中所涉及的服务器的另一种可能的组成示意图。如图10所示,该服务器包括:处理器51,存储器52、通信接口53和通信总线54。
处理器51是服务器的控制中心,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器51是一个中央处理器(central processing unit,CPU),也可以是特定集成电路(application-specific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个DSP,或,一个或者多个 现场可编程门阵列(field-programmable gate array,FPGA)。
其中,处理器51可以通过运行或执行存储在存储器52内的软件程序,以及调用存储在存储器52内的数据,执行服务器的各种功能。例如,处理器51,用于执行图2中的步骤202中所述的根据发布消息获取发布客户端的标识、步骤203、步骤204,步骤205,图3中的步骤302所述的根据订阅消息获取订阅客户端的标识、步骤303、步骤305中所述的根据发布消息获取发布客户端的标识、步骤306、步骤307、步骤308、步骤309,和/或用于本文所描述的技术的其它过程。
在具体的实现中,作为一种实施例,处理器51可以包括一个或多个CPU,例如图10中所示的CPU0和CPU1。作为一种实施例,服务器可以包括多个处理器,例如图10中所示的处理器51和处理器55。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器52可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器52可以是独立存在,通过通信总线54与处理器51相连接。存储器52也可以和处理器51集成在一起。
其中,存储器52用于存储执行本申请方案的软件程序,并由处理器51来控制执行。
通信接口53,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如订阅客户端、发布客户端、无线接入网(radio access network,RAN),无线局域网(wireless local area networks,WLAN)等,在具体的实现中,服务器可以通过通信接口53接收订阅客户端发送的订阅客户端的标签的属性信息,以及发布客户端发送的发布客户端的标签的属性信息。通信接口53可以包括接收单元实现接收功能,以及发送单元实现发送功能。例如,通信接口53,用于执行图2中的步骤202所述的接收发布客户端发送的发布消息,步骤206,图3中的步骤302中所述的接收订阅客户端发送的订阅消息,步骤305中所述的接收发布客户端发送的发布消息,步骤310。
在本申请实施例的具体实现中,通信接口53是服务器上运行的服务端对外提供服务的接口。由于MQTT协议可以基于传输控制协议/互联网协议(transmission control protocol/internet protocol,TCP/IP)进行通信,因此默认该通信接口53与1833服务端口绑定。当然,MQTT协议也可以基于其他协议,如Socket协议进行通信,此时需要配置与其他服务端口连接的通信接口53,因此基于不同的通信协议,服务器可以根据需要配置不同的通信接口53。且,服务器可以配置用于管理标签的通信接口53,通过该通信接口53,可以动态调整客户端的标签。服务器还可以配置用于管理主题过滤器的通信接口53,通过该通信接口53,可以动态修改与主题过滤器对应的标识信息,以变更主题过滤器是否支持标签匹配的情况。需要说明的是,在本申请实施例中,用于管理 标签的通信接口53和用于管理主题过滤器的通信接口53可以是同一个接口,也可以是不同的接口,本申请实施例在此对用于管理标签的通信接口和用于管理主题过滤器的接口是否是同一个接口并不做具体限制。
通信总线54,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component interconnect,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (24)

  1. 一种订阅发布方法,其特征在于,所述方法包括:
    服务器接收发布客户端发送的发布消息,所述发布消息中包括主题名;
    所述服务器根据所述发布消息获取所述发布客户端的标识;
    所述服务器根据所述主题名查找订阅树,获得订阅客户端的标识,所述订阅树为至少一个主题过滤器组成的拓扑结构,所述订阅客户端的标识为与所述主题名匹配成功的一个主题过滤器对应的标识;
    所述服务器根据所述订阅客户端的标识以及第一映射表获取与所述订阅客户端的标识对应的第一标签;所述第一映射表的每个表项包括客户端的标识与对应的标签;所述标签用于指示与所述标签对应的客户端的至少一种属性信息;
    所述服务器根据所述发布客户端的标识以及所述第一映射表获取与所述发布客户端的标识对应的第二标签;
    所述服务器将所述第一标签与所述第二标签进行匹配;
    所述服务器在确定所述第一标签和所述第二标签匹配成功的情况下,向所述订阅客户端发送所述发布消息。
  2. 根据权利要求1所述的方法,其特征在于,所述服务器根据所述订阅客户端的标识以及第一映射表获取与所述订阅客户端的标识对应的第一标签,包括:
    所述服务器在确定所述订阅客户端支持标签匹配的情况下,根据所述订阅客户端的标识以及所述第一映射表获取所述第一标签。
  3. 根据权利要求1或2所述的方法,其特征在于,在所述服务器根据所述主题名查找订阅树,获得所述订阅客户端的标识之前,所述方法还包括:
    所述服务器接收所述订阅客户端发送的订阅消息,所述订阅消息中包括至少一个主题过滤器;
    所述服务器根据所述订阅消息获取所述订阅客户端的标识。
  4. 根据权利要求3所述的方法,其特征在于,每个主题过滤器被分为多层,每层为一个主题层级,每个主题层级存储于所述订阅树的一个子树中,所述方法还包括:
    所述服务器在确定所述至少一个主题过滤器中的第一主题过滤器支持标签匹配时,将所述第一主题过滤器关联到所述订阅树上,并在所述订阅树中存储有所述第一主题过滤器的最后一个主题层级的子树中保存所述订阅客户端的信息,所述订阅客户端的信息包括:所述订阅客户端的标识和用于指示所述订阅客户端支持标签匹配的指示信息,所述第一主题过滤器为所述至少一个主题过滤器中的任意一个。
  5. 根据权利要求4所述的方法,其特征在于,所述订阅消息中还包括:第一标志位,所述第一标志位包括第一值或者第二值,所述第一值用于指示所述至少一个主题过滤器中的每个主题过滤器支持标签匹配,所述第二值用于指示所述至少一个主题过滤器中包括至少一个不支持标签匹配的主题过滤器。
  6. 根据权利要求5所述的方法,其特征在于,所述确定所述至少一个主题过滤器中的第一主题过滤器支持标签匹配,包括:
    所述服务器在确定所述第一标志位包括所述第一值时,确定所述第一主题过滤器支 持标签匹配。
  7. 根据权利要求5所述的方法,其特征在于,所述订阅消息中还包括:所述至少一个主题过滤器中每个主题过滤器对应的第二标志位,每个第二标志位包括第三值或第四值,所述第三值用于指示与所述第二标志位对应的主题过滤器支持标签匹配,所述第四值用于指示与所述第二标志位对应的主题过滤器不支持标签匹配。
  8. 根据权利要求7所述的方法,其特征在于,所述确定所述至少一个主题过滤器中的第一主题过滤器支持标签匹配,包括:
    所述服务器在确定所述第一标志位包括所述第二值,且确定与所述第一主题过滤器对应的第二标志位包括所述第三值时,确定所述第一主题过滤器支持标签匹配。
  9. 根据权利要求4所述的方法,其特征在于,所述方法还包括:
    所述服务器根据所述订阅客户端的标识、所述第一主题过滤器以及第二映射表获取与所述第一主题过滤器对应的标识信息,所述第二映射表的每个表项包含客户端的标识,与客户端的标识对应的至少一个主题过滤器,以及至少一个主题过滤器中每个主题过滤器对应的标识信息,每个标识信息包括第五值或第六值,所述第五值用于指示与所述标识信息对应的主题过滤器支持标签匹配,所述第六值用于指示与所述标识信息对应的主题过滤器不支持标签匹配;
    所述确定所述至少一个主题过滤器中的第一主题过滤器支持标签匹配,包括:
    所述服务器在确定与所述第一主题过滤器对应的标识信息包括所述第五值时,确定所述第一主题过滤器支持标签匹配。
  10. 根据权利要求4-9中任一项所述的方法,其特征在于,所述确定所述订阅客户端支持标签匹配,包括:
    所述服务器在确定存储有所述订阅客户端的标识的子树中还存储有用于指示所述订阅客户端支持标签匹配的指示信息时,确定所述订阅客户端支持标签匹配。
  11. 根据权利要求1-10中任一项所述的方法,其特征在于,所述属性信息包含属性名称和属性值,所述服务器将所述第一标签与所述第二标签进行匹配,包括:
    所述服务器将所述第一标签包括的每种属性信息的属性值分别与所述第二标签包括的对应的属性信息的属性值进行比较;确定所述第一标签包括的每种属性信息的属性值是否分别与所述第二标签包括的对应的属性信息的属性值符合预设的逻辑关系;
    所述确定所述第一标签和所述第二标签匹配成功,包括:
    所述服务器在确定所述第一标签包括的每种属性信息的属性值分别与所述第二标签包括的对应的属性信息的属性值符合所述预设的逻辑关系的情况下,确定所述第一标签和所述第二标签匹配成功。
  12. 根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
    所述服务器接收第二订阅客户端发送的第二订阅消息,所述第二订阅消息中包括至少一个主题过滤器;
    所述服务器根据所述第二订阅消息获取所述第二订阅客户端的标识;
    所述服务器获取预先存储的持久化消息,所述持久化消息为持久化的发布消息,所述持久化消息中包括一个主题名;
    所述服务器根据所述持久化消息中包括的主题名查找所述订阅树,获得与所述持久 化消息中的主题名匹配成功的主题过滤器对应的所述第二订阅客户端的标识;
    所述服务器根据所述持久化消息获取第二发布客户端的标识;
    所述服务器根据所述第二发布客户端的标识以及所述第一映射表,获取与所述第二发布客户端的标识对应的第三标签;
    所述服务器根据所述第二订阅客户端的标识以及所述第一映射表,获取与所述第二订阅客户端的标识对应的第四标签;
    所述服务器将所述第三标签与所述第四标签进行匹配;
    所述服务器在确定所述第三标签和所述第四标签匹配成功的情况下,向所述第二订阅客户端发送所述持久化消息。
  13. 一种服务器,其特征在于,所述服务器包括:接收模块、获取模块、发布服务模块、标签管理模块和标签引擎模块,所述发布服务模块包括主题匹配模块;
    所述接收模块,用于接收发布客户端发送的发布消息,所述发布消息中包括主题名;
    所述获取模块,用于根据所述发布消息获取所述发布客户端的标识;
    所述主题匹配模块,用于根据所述主题名查找订阅树,获得订阅客户端的标识,所述订阅树为至少一个主题过滤器组成的拓扑结构,所述订阅客户端的标识为与所述主题名匹配成功的一个主题过滤器对应的标识;
    所述标签管理模块,用于根据所述订阅客户端的标识以及第一映射表获取与所述订阅客户端的标识对应的第一标签;所述第一映射表的每个表项包括客户端的标识与对应的标签;所述标签用于指示与所述标签对应的客户端的至少一种属性信息;根据所述发布客户端的标识以及所述第一映射表获取与所述发布客户端的标识对应的第二标签;
    所述标签引擎模块,用于将所述第一标签与所述第二标签进行匹配;
    所述发布服务模块,用于在确定所述第一标签和所述第二标签匹配成功的情况下,向所述订阅客户端发送所述发布消息。
  14. 根据权利要求13所述的服务器,其特征在于,所述标签管理模块,具体用于:
    在确定所述订阅客户端支持标签匹配的情况下,根据所述订阅客户端的标识以及所述第一映射表获取所述第一标签。
  15. 根据权利要求13或14所述的服务器,其特征在于,
    所述接收模块,还用于接收所述订阅客户端发送的订阅消息,所述订阅消息中包括至少一个主题过滤器;
    所述获取模块,还用于根据所述订阅消息获取所述订阅客户端的标识。
  16. 根据权利要求15所述的服务器,其特征在于,每个主题过滤器被分为多层,每层为一个主题层级,每个主题层级存储于所述订阅树的一个子树中,所述服务器还包括订阅服务模块;
    所述订阅服务模块,用于在确定所述至少一个主题过滤器中的第一主题过滤器支持标签匹配时,将所述第一主题过滤器关联到所述订阅树上,并在所述订阅树中存储有所述第一主题过滤器的最后一个主题层级的子树中保存所述订阅客户端的信息,所述订阅客户端的信息包括:所述订阅客户端的标识和用于指示所述订阅客户端支持标签匹配的指示信息,所述第一主题过滤器为所述至少一个主题过滤器中的任意一个。
  17. 根据权利要求16所述的服务器,其特征在于,所述订阅消息中还包括:第一 标志位,所述第一标志位包括第一值或者第二值,所述第一值用于指示所述至少一个主题过滤器中的每个主题过滤器支持标签匹配,所述第二值用于指示所述至少一个主题过滤器中包括至少一个不支持标签匹配的主题过滤器。
  18. 根据权利要求17所述的服务器,其特征在于,所述订阅服务模块,具体用于:
    在确定所述第一标志位包括所述第一值时,确定所述第一主题过滤器支持标签匹配。
  19. 根据权利要求17所述的服务器,其特征在于,所述订阅消息中还包括:所述至少一个主题过滤器中每个主题过滤器对应的第二标志位,每个第二标志位包括第三值或第四值,所述第三值用于指示与所述第二标志位对应的主题过滤器支持标签匹配,所述第四值用于指示与所述第二标志位对应的主题过滤器不支持标签匹配。
  20. 根据权利要求19所述的服务器,其特征在于,所述订阅服务模块,具体用于:
    在确定所述第一标志位包括所述第二值,且确定与所述第一主题过滤器对应的第二标志位包括所述第三值时,确定所述第一主题过滤器支持标签匹配。
  21. 根据权利要求16所述的服务器,其特征在于,所述服务器还包括会话管理模块;
    所述会话管理模块,用于根据所述订阅客户端的标识、所述第一主题过滤器以及第二映射表获取与所述第一主题过滤器对应的标识信息,所述第二映射表的每个表项包含客户端的标识,与客户端的标识对应的至少一个主题过滤器,以及至少一个主题过滤器中每个主题过滤器对应的标识信息,每个标识信息包括第五值或第六值,所述第五值用于指示与所述标识信息对应的主题过滤器支持标签匹配,所述第六值用于指示与所述标识信息对应的主题过滤器不支持标签匹配;
    所述订阅服务模块,具体用于在确定与所述第一主题过滤器对应的标识信息包括所述第五值时,确定所述第一主题过滤器支持标签匹配。
  22. 根据权利要求16-21中任一项所述的服务器,其特征在于,
    所述标签管理模块,具体用于在确定存储有所述订阅客户端的标识的子树中还存储有用于指示所述订阅客户端支持标签匹配的指示信息时,确定所述订阅客户端支持标签匹配。
  23. 根据权利要求13-22中任一项所述的服务器,其特征在于,所述属性信息包含属性名称和属性值;
    所述标签引擎模块,具体用于将所述第一标签包括的每种属性信息的属性值分别与所述第二标签包括的对应的属性信息的属性值进行比较;确定所述第一标签包括的每种属性信息的属性值是否分别与所述第二标签包括的对应的属性信息的属性值符合预设的逻辑关系;
    所述发布服务模块,具体用于在确定所述第一标签包括的每种属性信息的属性值分别与所述第二标签包括的对应的属性信息的属性值符合所述预设的逻辑关系的情况下,确定所述第一标签和所述第二标签匹配成功。
  24. 根据权利要求13或14所述的服务器,其特征在于,
    所述接收模块,还用于接收第二订阅客户端发送的第二订阅消息,所述第二订阅消息中包括至少一个主题过滤器;
    所述获取模块,还用于根据所述第二订阅消息获取所述第二订阅客户端的标识;获取预先存储的持久化消息,所述持久化消息为持久化的发布消息,所述持久化消息中包括一个主题名;
    所述主题匹配模块,还用于根据所述持久化消息中包括的主题名查找所述订阅树,获得与所述持久化消息中的主题名匹配成功的主题过滤器对应的所述第二订阅客户端的标识;
    所述获取模块,还用于根据所述持久化消息获取第二发布客户端的标识;
    所述标签管理模块,还用于根据所述第二发布客户端的标识以及所述第一映射表,获取与所述第二发布客户端的标识对应的第三标签;根据所述第二订阅客户端的标识以及所述第一映射表,获取与所述第二订阅客户端的标识对应的第四标签;
    所述标签引擎模块,还用于将所述第三标签与所述第四标签进行匹配;
    所述发布服务模块,还用于在确定所述第三标签和所述第四标签匹配成功的情况下,向所述第二订阅客户端发送所述持久化消息。
PCT/CN2018/099659 2017-08-29 2018-08-09 一种订阅发布方法及服务器 WO2019042110A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP18851872.4A EP3668055B1 (en) 2017-08-29 2018-08-09 Subscription publication method, and server
US16/802,376 US20200195740A1 (en) 2017-08-29 2020-02-26 Subscribe and publish method and server

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201710757780.8A CN109428922B (zh) 2017-08-29 2017-08-29 一种订阅发布方法及服务器
CN201710757780.8 2017-08-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/802,376 Continuation US20200195740A1 (en) 2017-08-29 2020-02-26 Subscribe and publish method and server

Publications (1)

Publication Number Publication Date
WO2019042110A1 true WO2019042110A1 (zh) 2019-03-07

Family

ID=65503574

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2018/099659 WO2019042110A1 (zh) 2017-08-29 2018-08-09 一种订阅发布方法及服务器

Country Status (4)

Country Link
US (1) US20200195740A1 (zh)
EP (1) EP3668055B1 (zh)
CN (2) CN109428922B (zh)
WO (1) WO2019042110A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110708247A (zh) * 2019-09-27 2020-01-17 浙江大搜车软件技术有限公司 消息路由方法、装置、计算机设备和存储介质
CN114979265A (zh) * 2022-05-24 2022-08-30 树根互联股份有限公司 消息订阅方法、装置、计算机设备及计算机可读存储介质

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109981161B (zh) * 2019-03-13 2021-06-08 南京邮电大学 一种基于发布订阅的多无人机通信模式的设计方法
CN110113381B (zh) * 2019-04-09 2023-04-07 深圳前海微众银行股份有限公司 一种区块链中订阅主题的方法及装置
CN112311825B (zh) * 2019-07-29 2023-05-19 浙江宇视科技有限公司 消息推送方法、装置、推送服务器及可读存储介质
CN110417499A (zh) * 2019-08-13 2019-11-05 沈阳风驰软件股份有限公司 基于mqtt协议的站台区域广播系统
US20210152639A1 (en) * 2019-11-15 2021-05-20 Ford Global Technologies, Llc Vehicle network using publish-subscribe protocol
CN110932874B (zh) * 2019-11-22 2022-08-16 南京甄视智能科技有限公司 分布式消息广播通知实现方法
CN113094614A (zh) * 2019-12-23 2021-07-09 中国移动通信集团湖南有限公司 一种数据分发方法、系统及装置
CN111181976B (zh) * 2019-12-31 2022-06-24 深圳云天励飞技术股份有限公司 基于消息队列的行列权限管理的方法系统、电子设备及存储介质
CN111371889B (zh) * 2020-03-03 2023-03-31 广州致远电子股份有限公司 消息处理方法、装置、物联网系统和存储介质
CN111381986B (zh) * 2020-03-10 2024-04-16 北京奇艺世纪科技有限公司 消息传输方法、系统、装置、电子设备及可读存储介质
CN111597184A (zh) * 2020-04-01 2020-08-28 深圳英飞拓智能技术有限公司 一种基于树形结构数据的消息发布与订阅的方法和装置
CN113542314B (zh) * 2020-04-13 2022-07-08 烽火通信科技股份有限公司 一种基于关键字过滤的订阅模式实现方法及系统
CN111651476A (zh) * 2020-05-18 2020-09-11 青岛海洋科学与技术国家实验室发展中心 一种物联网关中mqtt主题的快速匹配方法及系统
CN111343289B (zh) * 2020-05-22 2020-09-25 苏宁智能终端有限公司 基于mqtt协议的消息推送方法及系统
CN111949302B (zh) * 2020-09-18 2022-05-31 苏州浪潮智能科技有限公司 一种用于工业计算机管理系统的即时性更新方法、系统和设备
CN112711636B (zh) * 2020-12-30 2023-09-05 腾讯科技(深圳)有限公司 数据同步方法、装置、设备及介质
CN112783647A (zh) * 2021-01-13 2021-05-11 中国银联股份有限公司 服务器扩缩容方法、服务器、系统及存储介质
CN112953940A (zh) * 2021-02-20 2021-06-11 同济大学 基于混合加密算法和关键属性过滤的安全发布订阅系统及方法
CN113190778A (zh) * 2021-04-30 2021-07-30 深圳壹账通创配科技有限公司 业务数据推送方法、系统、计算机设备及计算机存储介质
CN113239307A (zh) * 2021-05-17 2021-08-10 北京百度网讯科技有限公司 用于存储消息主题的方法及装置
CN113596140B (zh) * 2021-07-26 2023-09-22 深圳Tcl新技术有限公司 基于mqtt协议的信息发布方法及装置
CN113783838B (zh) * 2021-08-05 2024-02-06 山东有人物联网股份有限公司 一种订阅方法、订阅控制装置及计算机可读存储介质
CN115914358A (zh) * 2021-08-06 2023-04-04 青岛海尔科技有限公司 消息推送方法、装置、电子设备及计算机存储介质
CN114172947B (zh) * 2021-12-09 2023-11-24 福建环宇通信息科技股份公司 一种物联网设备间的通讯方法及装置
CN114513509B (zh) * 2022-01-04 2023-05-16 烽火通信科技股份有限公司 一种基于MQTT的wi-sun网络数据采集方法与装置
CN114866504B (zh) * 2022-03-25 2024-02-23 安徽南瑞中天电力电子有限公司 一种基于mqtt消息协议的能源控制器进程间的通信方法
CN114500495B (zh) * 2022-04-01 2022-09-30 荣耀终端有限公司 一种设备控制方法和设备控制系统
CN115378989B (zh) * 2022-08-10 2023-08-15 深圳华芯信息技术股份有限公司 基于唤醒通道的mqtt主题订阅系统、方法、终端及介质
CN115065595B (zh) * 2022-08-17 2022-12-02 湖南云畅网络科技有限公司 一种自动化发布部署方法
CN115550439B (zh) * 2022-11-29 2023-04-11 杭州涂鸦信息技术有限公司 事件管理系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101193077A (zh) * 2006-11-30 2008-06-04 国际商业机器公司 用于订阅匹配的方法和系统
CN102685155A (zh) * 2011-03-07 2012-09-19 联想(北京)有限公司 内容传送的方法、内容传送服务器及内容传送代理服务器
WO2016168116A1 (en) * 2015-04-17 2016-10-20 Interdigital Patent Holdings, Inc. Method and apparatus for matching information supply and demand in icn based on imperfect matching

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0228941D0 (en) * 2002-12-12 2003-01-15 Ibm Methods, apparatus and computer programs for processing alerts and auditing in a publish/subscribe system
GB2428828A (en) * 2005-07-30 2007-02-07 Ibm Publish/subscribe messaging system
GB0524111D0 (en) * 2005-11-26 2006-01-04 Ibm Method, apparatus and computer program for access control
GB0905457D0 (en) * 2009-03-30 2009-05-13 Touchtype Ltd System and method for inputting text into electronic devices
CN103905471B (zh) * 2012-12-25 2019-01-01 腾讯科技(深圳)有限公司 社交网络的信息推送方法、服务器及社交网络
US9660943B2 (en) * 2014-04-25 2017-05-23 International Business Machines Corporation Messaging based signaling for communications sessions
CN105338014A (zh) * 2014-06-26 2016-02-17 青岛海尔智能家电科技有限公司 一种基于订阅机制的通信方法和主题服务器
CN106130882B (zh) * 2016-07-13 2019-04-30 北京百度网讯科技有限公司 用于传输消息的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101193077A (zh) * 2006-11-30 2008-06-04 国际商业机器公司 用于订阅匹配的方法和系统
CN102685155A (zh) * 2011-03-07 2012-09-19 联想(北京)有限公司 内容传送的方法、内容传送服务器及内容传送代理服务器
WO2016168116A1 (en) * 2015-04-17 2016-10-20 Interdigital Patent Holdings, Inc. Method and apparatus for matching information supply and demand in icn based on imperfect matching

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP3668055A4
ZHANG SHENGDONG ET AL.: "Matching Structure Based on Attribute Grouping in Publish/Subscribe System", COMPUTER ENGINEERING, vol. 37, no. 23, 1 December 2011 (2011-12-01), pages 1 - 3, XP055677737, ISSN: 1000-3428, DOI: 10.3969/j.issn.1000-3428.2011.23.003 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110708247A (zh) * 2019-09-27 2020-01-17 浙江大搜车软件技术有限公司 消息路由方法、装置、计算机设备和存储介质
CN114979265A (zh) * 2022-05-24 2022-08-30 树根互联股份有限公司 消息订阅方法、装置、计算机设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN109428922B (zh) 2020-09-08
EP3668055B1 (en) 2022-04-06
EP3668055A4 (en) 2020-07-01
EP3668055A1 (en) 2020-06-17
CN109428922A (zh) 2019-03-05
CN112039942A (zh) 2020-12-04
US20200195740A1 (en) 2020-06-18

Similar Documents

Publication Publication Date Title
WO2019042110A1 (zh) 一种订阅发布方法及服务器
US11616690B2 (en) Discovery of virtualization environments
US10110671B2 (en) Method, system, and device for managing server hardware resources in a cloud scheduling environment
US10545914B2 (en) Distributed object storage
US9548897B2 (en) Network entity registry for network entity handles included in network traffic policies enforced for a provider network
EP3861706B1 (en) Framework for dynamic brokerage and management of topics and data at the service layer
US20130339549A1 (en) Systems and methods for supporting ip ownership in a cluster
US20160119421A1 (en) Methods and systems for accessing virtual storage servers in a clustered environment
WO2014101777A1 (zh) 流表匹配方法和装置以及交换机
WO2018161881A1 (zh) 结构化数据的处理方法、存储介质和计算机设备
WO2019015382A1 (zh) 一种别名管理方法及设备
US20150052575A1 (en) Steering Traffic Among Multiple Network Services Using a Centralized Dispatcher
WO2022063170A1 (zh) 一种公有云的网络配置方法及相关设备
WO2016086659A1 (zh) 一种业务消息的传输方法、装置及系统
US10931630B2 (en) System and method for connecting using aliases
US20190182356A1 (en) Data networking method in data-centric network system and apparatus implementing same
US20160337456A1 (en) Probabilistic federated agent discovery for pervasive device management system
WO2018233579A1 (en) INFORMATION CENTERED NETWORKING ON MULTIPLE ACCESS NETWORK INTERFACES
US20230208938A1 (en) Orchestrating execution of a complex computational operation
CN113296968A (zh) 地址列表更新方法、装置、介质及电子设备
WO2017041509A1 (zh) 一种基于多处理单元的报文采样方法和装置
US11601305B2 (en) Physical infrastructure/virtual infrastructure integration system
US11924309B2 (en) Managing resource state notifications
WO2023138032A1 (zh) 一种地址空间推荐方法、装置及相关设备
US20240098089A1 (en) Metadata customization for virtual private label clouds

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18851872

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2018851872

Country of ref document: EP

Effective date: 20200310