IP Library › Granted Patent US 11,126,483
Granted Patent B1
US 11,126,483 · App. 16/851,605 · Granted Sep 21, 2021

Direct message retrieval in distributed messaging systems

Inventors: Mihir Kumar Das (Pleasanton, CA); Yuvaraj Chandrasekaran (Newark, CA); Santosh Kumar Kotikalapudi (Pleasanton, CA)
Assignee: ORACLE INTERNATIONAL CORPORATION
G06F9/546H04L51/16H04L51/24H04L51/28H04L51/34
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,126,483
App. No.
16/851,605
Granted
Sep 21, 2021
Kind
B1
Abstract

A messaging service may be distributed in a cluster of nodes such that each node includes an instance of the messaging service. To ensure that messages are not lost in the messaging service through a load balancer, addresses for each of the nodes may be accessed, and messages may be retrieved from individual instances of the messaging service by addressing the nodes directly and bypassing the load balancer. To retrieve messages, a client may cycle through the node addresses and retrieve messages until each corresponding message queue is empty. Once a message queue is empty, the client may stop sending requests to the corresponding node until the message queues on the other nodes have been emptied. Various request patterns may be used to cycle through node addresses, including Round Robin patterns and patterns that correspond to traffic patterns seen by the load balancer.

Claims (35)

1. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

accessing, by a client device, a plurality of node addresses for a plurality of nodes in a cluster, wherein a messaging service is distributed across the plurality of nodes in the cluster, and the client device is outside of the cluster, and wherein the cluster comprises a load balancer configured to receive requests to retrieve messages from the messaging service and to distribute the requests between the plurality of nodes based on request traffic;

cycling, by the client device, through the plurality of node addresses to retrieve messages addressed to a user of the client device from the plurality of nodes by addressing the plurality of nodes directly using the plurality of node addresses, wherein addressing the plurality of nodes directly using the plurality of node addresses bypasses the load balancer; and

removing, by the client device, a node address from the plurality of node addresses after receiving a response from a corresponding node indicating that no messages addressed to the user are available at the corresponding node.

2. The non-transitory computer-readable medium of claim 1 , wherein the load balancer receives requests from client devices that do not address the plurality of nodes directly.

3. The non-transitory computer-readable medium of claim 1 , wherein cycling through the plurality of node addresses to retrieve the messages from the plurality of nodes comprises:

determining a pattern that the load balancer has used to distribute requests for messages to the plurality of nodes; and

cycling through the plurality of node addresses based on the pattern.

4. The non-transitory computer-readable medium of claim 1 , wherein the plurality of node addresses comprises IP addresses of the plurality of nodes.

5. The non-transitory computer-readable medium of claim 1 , wherein the plurality of nodes comprise instances of the messaging service, and the instances of the messaging service operate independent of other instances of the messaging service.

6. The non-transitory computer-readable medium of claim 5 , wherein the cluster comprises additional nodes that do not include the instances of the messaging service.

7. The non-transitory computer-readable medium of claim 5 , wherein the instances of the messaging service comprise message queues.

8. The non-transitory computer-readable medium of claim 7 , wherein the instances of the messaging service are configured to return a single message in a corresponding message queue when one or more messages are available, and to return a null response when the corresponding message queue is empty.

9. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise sending a request to the cluster to retrieve the plurality of node addresses from the cluster.

10. The non-transitory computer-readable medium of claim 9 , wherein the plurality of node addresses are retrieved through a Java Naming and Directory Interface (JNDI).

11. The non-transitory computer-readable medium of claim 1 , wherein cycling through the plurality of node addresses to retrieve the messages from the plurality of nodes comprises:

requesting a first message from a first node in the plurality of nodes;

receiving the first message from the first node; and

requesting a second message from a second node in the plurality of nodes after receiving the message from the first node.

12. The non-transitory computer-readable medium of claim 1 , wherein cycling through the plurality of node addresses to retrieve the messages from the plurality of nodes comprises:

using a Round Robin pattern to sequentially retrieve messages from the plurality of nodes until each of the plurality of nodes indicates that no messages are available.

13. The non-transitory computer-readable medium of claim 1 , wherein removing the node address from the plurality of node addresses prevents requests to retrieve messages from being sent to the corresponding node until messages indicating that no messages are available at each remaining node in the plurality of nodes have been received.

14. The non-transitory computer-readable medium of claim 1 , wherein the operations further comprise maintaining a data structure comprising the plurality of node addresses and a plurality of statuses indicating whether responses have been received indicating that no messages are available for the plurality of node addresses.

15. The non-transitory computer-readable medium of claim 14 , wherein removing a node address from the plurality of node addresses comprises changing a corresponding status in the plurality of statuses.

16. The non-transitory computer-readable medium of claim 1 , wherein cycling through the plurality of node addresses to retrieve the messages from the plurality of nodes comprises randomly determining a starting node address in the plurality of node addresses.

17. A method of retrieving messages in a distributed messaging system, the method comprising:

accessing, by a client device, a plurality of node addresses for a plurality of nodes in a cluster, wherein a messaging service is distributed across the plurality of nodes in the cluster, and the client device is outside of the cluster, and wherein the cluster comprises a load balancer configured to receive requests to retrieve messages from the messaging service and to distribute the requests between the plurality of nodes based on request traffic;

cycling, by the client device, through the plurality of node addresses to retrieve messages addressed to a user of the client device from the plurality of nodes by addressing the plurality of nodes directly using the plurality of node addresses, wherein addressing the plurality of nodes directly using the plurality of node addresses bypasses the load balancer; and

removing, by the client device, a node address from the plurality of node addresses after receiving a response from a corresponding node indicating that no messages addressed to the user are available at the corresponding node.

18. A system comprising:

one or more processors; and

one or more memory devices comprising instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising:

accessing, by a client device, a plurality of node addresses for a plurality of nodes in a cluster, wherein a messaging service is distributed across the plurality of nodes in the cluster, and the client device is outside of the cluster, and wherein the cluster comprises a load balancer configured to receive requests to retrieve messages from the messaging service and to distribute the requests between the plurality of nodes based on request traffic;

cycling, by the client device, through the plurality of node addresses to retrieve messages addressed to a user of the client device from the plurality of nodes by addressing the plurality of nodes directly using the plurality of node addresses, wherein addressing the plurality of nodes directly using the plurality of node addresses bypasses the load balancer; and

removing, by the client device, a node address from the plurality of node addresses after receiving a response from a corresponding node indicating that no messages addressed to the user are available at the corresponding node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2020
From: DAS, MIHIR KUMAR; CHANDRASEKARAN, YUVARAJ; KOTIKALAPUDI, SANTOSH KUMAR
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 052430/0088 →
Cited By (2)
US 12,580,880 US 12,647,374