IP Library › Granted Patent US 11,431,816
Granted Patent B1
US 11,431,816 · App. 17/322,611 · Granted Aug 30, 2022

Broker cell for distributed message system

Inventor: Sherif Abdelwahab (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L67/2809G16Y10/75H04L5/0055H04L49/90H04L67/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,431,816
App. No.
17/322,611
Granted
Aug 30, 2022
Kind
B1
Abstract

Examples are disclosed that relate to message queuing telemetry transport (MQTT) broker cells. One example provides a computing system configured to implement an MQTT broker cell comprising instructions executable to operate two or more back-end brokers arranged in a matrix, the matrix comprising m vertical chains of back-end brokers and k back-end brokers in each vertical chain, each vertical chain comprising at least a head back-end broker and a tail back-end broker, each vertical chain configured to replicate a state update received at the head back-end broker through the vertical chain to the tail back-end broker, and operate n front-end brokers, each front-end broker configured to output a control message to a selected vertical chain of the m vertical chains and to output an application message for publication to subscribers and to one or more other MQTT broker cells. The instructions are further executable to operate r networking devices.

Claims (53)

1. A computing system configured to implement a message queuing telemetry transport (MQTT) broker cell, the computing device comprising

a logic subsystem comprising one or more processors; and

a storage subsystem comprising one or more storage devices including instructions executable by the logic subsystem to

operate two or more back-end brokers arranged in an m×k matrix in the broker cell, the matrix comprising m vertical chains of back-end brokers and k back-end brokers in each vertical chain, where m and k are integers, m is greater than zero, and k is greater than one, each vertical chain comprising at least a head back-end broker and a tail back-end broker, each vertical chain configured to replicate a state update received at the head back-end broker through the vertical chain to the tail back-end broker, each tail back-end broker configured to determine one or more subscribers to a topic;

operate n front-end brokers in the broker cell, each front-end broker configured to output a control message to a selected vertical chain of the m vertical chains and to output an application message for publication to subscribers and to one or more other MQTT broker cells, where n is an integer greater than zero; and

operate r networking devices configured to communicate application messages to subscribers and control messages to one or more other MQTT broker cells, where r is an integer greater than one.

2. The computing system of claim 1 , wherein each back-end broker is configured to store one or more of a topic table comprising information regarding one or more topics being published, a session table comprising information regarding respective sessions established by one or more clients and one or more topics to which the one or more clients subscribe, or a topic filter table comprising information regarding one or more topic filters associated with one or more front-end brokers having one or more clients subscribing to the one or more topic filters.

3. The computing system of claim 1 , wherein each back-end broker is configured to store a topic routing table comprising information regarding one or more topic filters associated with an adjacent MQTT broker cell.

4. The computing system of claim 1 , wherein each front-end broker is configured to select the selected vertical chain to which to output the control message based at least on consistent hashing determined based on one or more of a topic filter or a client identifier.

5. The computing system of claim 1 , wherein the matrix further comprises a horizontal chain of back-end brokers formed by m tail back-end brokers, wherein the horizontal chain is configured to replicate a state update regarding a wildcard topic filter and not to replicate a state update regarding a non-wildcard topic filter.

6. The computing system of claim 1 , wherein the n front-end brokers advertise a common network address to the r networking devices.

7. The computing system of claim 1 , wherein each tail back-end broker is configured to identify the one or more subscribers to the topic to a corresponding front-end broker.

8. The computing system of claim 1 , further comprising instructions executable to, in response to detecting a failure of a first back-end broker, reconfigure a second back-end broker to operate as the first back-end broker.

9. The computing system of claim 1 , wherein the MQTT broker cell is configured to discover the one or more other MQTT broker cells via a gossip-based communication protocol.

10. The computing system of claim 1 , further comprising instructions executable by the logic subsystem to

receive, at a front-end broker, a request by a client to subscribe to one or more topics;

output, from the front-end broker to a head back-end broker, a control message including an identifier of the client and a topic filter indicating the one or more topics;

based at least on the control message, replicate a state update from the head back-end broker through a vertical chain comprising the head-back end broker and a tail back-end broker;

send, from the tail back-end broker to the front-end broker, an acknowledgement indicating that the state update was replicated through the vertical chain; and

send, from the front-end node for receipt by the client, an acknowledgement indicating that the client is subscribed to the one or more topics.

11. The computing system of claim 1 , further comprising instructions executable by the logic subsystem to

receive, at a front-end broker, a publication of an application message;

output, from the front-end broker to a head back-end broker, a control message including the application message;

based at least on the control message, replicate a state update from the head back-end broker through a vertical chain comprising the head back-end broker and a tail back-end broker, the state update including the application message;

determine, at the tail back-end broker, one or more subscribing front-end brokers to a topic of the application message; and

publish, from the one or more subscribing front-end brokers to one or more clients subscribing to the topic, the application message.

12. On a computing system configured to implement a message queuing telemetry transport (MQTT) broker cell, a method, comprising

operating two or more back-end brokers arranged in an m×k matrix in the broker cell, the matrix comprising m vertical chains of back-end brokers and k back-end brokers in each vertical chain, where m and k are integers, m is greater than zero, and k is greater than one, each vertical chain comprising at least a head back-end broker and a tail back-end broker, each vertical chain configured to replicate a state update received at the head back-end broker through the vertical chain to the tail back-end broker, each tail back-end broker configured to determine one or more subscribers to a topic;

operating n front-end brokers in the broker cell, each front-end broker configured to output a control message to a selected vertical chain of the m vertical chains and to output an application message for publication to subscribers and to one or more other MQTT broker cells, where n is an integer greater than zero; and

operating r networking devices configured to communicate application messages to subscribers and control messages to one or more other MQTT broker cells, where r is an integer greater than one.

13. The method of claim 12 , further comprising storing, at each back-end broker, a topic routing table comprising information regarding one or more topic filters associated with an adjacent MQTT broker cell.

14. The method of claim 12 , wherein the matrix further comprises a horizontal chain of back-end brokers formed by m tail back-end brokers, the method further comprising, at the horizontal chain, replicating a state update regarding a wildcard topic filter and not replicating a state update regarding a non-wildcard topic filter.

15. The method of claim 12 , further comprising

receiving, at a front-end broker, a request by a client to subscribe to one or more topics;

outputting, from the front-end broker to a head back-end broker, a control message including an identifier of the client and a topic filter indicating the one or more topics;

based at least on the control message, replicating a state update from the head back-end broker through a vertical chain comprising the head-back end broker and a tail back-end broker;

sending, from the tail back-end broker to the front-end broker, an acknowledgement indicating that the state update was replicated through the vertical chain; and

sending, from the front-end node for receipt by the client, an acknowledgement indicating that the client is subscribed to the one or more topics.

16. The method of claim 12 , further comprising

receiving, at a front-end broker, a publication of an application message;

outputting, from the front-end broker to a head back-end broker, a control message including the application message;

based at least on the control message, replicating a state update from the head back-end broker through a vertical chain comprising the head back-end broker and a tail back-end broker, the state update including the application message;

determining, at the tail back-end broker, one or more subscribing front-end brokers to a topic of the application message; and

publishing, from the one or more subscribing front-end brokers to one or more clients subscribing to the topic, the application message.

17. A computing system configured to implement a plurality of message queuing telemetry transport (MQTT) broker cells, each broker cell comprising one or more computing devices, each computing device comprising a logic subsystem including one or more processors, and a storage subsystem comprising one or more storage devices including instructions executable by the logic subsystem to, at a first broker cell:

operate two or more back-end brokers arranged in an m×k matrix in the broker cell, the matrix comprising m vertical chains of back-end brokers and k back-end brokers in each vertical chain, where m and k are integers, m is greater than zero, and k is greater than one, each vertical chain comprising at least a head back-end broker and a tail back-end broker, each vertical chain configured to replicate a state update received at the head back-end broker through the vertical chain to the tail back-end broker, each tail back-end broker configured to determine one or more subscribers to a topic;

operate n front-end brokers in the broker cell, each front-end broker configured to output a control message to a selected vertical chain of the m vertical chains and to output an application message for publication to subscribers and to one or more other MQTT broker cells, where n is an integer greater than zero;

operate r networking devices configured to communicate application messages to subscribers and control messages to one or more other MQTT broker cells, where r is an integer greater than one;

receive, at a selected front-end broker, an application message published to the selected front-end broker by a client publishing to the selected front-end broker; and

publish, from the selected front-end broker to a front-end broker of a second broker cell, the application message for receipt by a client subscribing to the second broker cell.

18. The computing system of claim 17 , wherein the first broker cell is provided in a first logical layer of the computing system, and the second broker cell is provided in a second logical layer of the computing system separated from the first logical layer by a firewall.

19. The computing system of claim 17 , wherein a client of a first broker cell comprising the selected front-end broker comprises a sensor device implemented in an internet-of-things.

20. The computing system of claim 17 , wherein the first broker cell is located in a first zone of a cloud computing system, and the second broker cell is located in a second zone of the cloud computing system different from the first zone.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2021
From: ABDELWAHAB, SHERIF
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 056264/0593 →