IP Library Granted Patent US 10,523,619
Granted Patent B2
US 10,523,619 · App. 14/135,982 · Granted Dec 31, 2019

Stateless message routing

Inventors: Juhani Honkala (Helsinki, FI); Ari Talja (Espoo, FI)
Assignee: ROVIO ENTERTAINMENT LTD.
H04L51/28H04L51/14
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 10,523,619
App. No.
14/135,982
Granted
Dec 31, 2019
Kind
B2
Abstract

Defining a scalable cluster for high volume message delivery and delivering messages between actors is described. Actors are mapped to virtual nodes and virtual nodes to nodes using mathematical algorithms. The mathematical algorithms are further used to determine address information of actors for message delivery.

Claims (34)

1. A method comprising:

obtaining by a computer entity a message comprising at least one actorID identifying, at least partly, a sending actor and a receiving actor, wherein the at least one actorID comprised in the message includes data used to authenticate the sending actor and the receiving actor;

determining using a deterministic algorithm by the computer entity address information of a first virtual node for the sending actor and a second virtual node for the receiving actor from the at least one actorID comprised in the message;

determining by the computer entity based on the address information of the first virtual node and the address information of the second virtual node whether the sending actor and the receiving actor are associated with a same first node;

if the receiving actor is associated with the same first node as the sending actor, delivering by the computer entity the message to a user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message; and

if the receiving actor is not associated with the same first node as the sending actor, determining, using another deterministic algorithm by the computer entity, address information of a different second node associated with the second virtual node, and redirecting the message to the second virtual node associated with the different second node for delivering the message to the user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message.

2. The method according to claim 1 , wherein the address information is determined from the actorID deterministically.

3. The method according to claim 1 , wherein the first node has a virtual node associated with the first node.

4. The method according to claim 1 , wherein a first method is usable to determine the address information of the virtual node and a second method is usable to determine the address information of a physical node associated with the virtual node.

5. The method according to claim 4 , wherein the first method is a hashing and the second method is a consistent hashing.

6. The method according to claim 1 , further comprising delivering by the computer entity the message first to a segment in a buffer associated with the second virtual node.

7. A non-transitory computer-readable memory that contains computer readable instructions which, when executed by at least one data processor cause:

obtaining by a computer entity a message comprising at least one actorID identifying, at least partly, a sending actor and a receiving actor, wherein the at least one actorID comprised in the message includes data used to authenticate the sending actor and the receiving actor;

determining using a deterministic algorithm by the computer entity address information of a first virtual node for the sending actor and a second virtual node for the receiving actor from the at least one actorID comprised in the message;

determining by the computer entity based on the address information of the first virtual node and the address information of the second virtual node whether the sending actor and the receiving actor are associated with a same first node;

if the receiving actor is associated with the same first node as the sending actor, delivering by the computer entity the message to a user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message; and

if the receiving actor is not associated with the same first node as the sending actor, determining, using another deterministic algorithm by the computer entity, address information of a different second node associated with the second virtual node, and redirecting the message to the second virtual node associated with the different second node for delivering the message to the user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message.

8. The non-transitory computer-readable memory according to claim 7 , wherein the address information is determined from the actorID deterministically.

9. The non-transitory computer-readable memory according to claim 7 , wherein the first node has a virtual node associated with the first node.

10. The non-transitory computer-readable memory according to claim 7 , wherein a first method is usable to determine the address information of the virtual node and a second method is usable to determine the address information of a physical node associated with the virtual node.

11. The non-transitory computer-readable memory according to claim 10 , wherein the first method is a hashing and the second method is a consistent hashing.

12. The non-transitory computer-readable memory according to claim 7 , further comprising delivering by the computer entity the message first to a segment in a buffer associated with the second virtual node.

13. A computer program product including one or more sequences of one or more instructions which, when executed by one or more processors, cause an apparatus to at least perform the steps of:

obtaining by a computer entity a message comprising at least one actorID identifying, at least partly, a sending actor and a receiving actor, wherein the at least one actorID comprised in the message includes data used to authenticate the sending actor and the receiving actor;

determining, using a deterministic algorithm by the computer entity address information of a first virtual node for the sending actor and a second virtual node for the receiving actor from the at least one actorID comprised in the message;

determining by the computer entity based on the address information of the first virtual node and the address information of the second virtual node whether the sending actor and the receiving actor are associated with a same first node;

if the receiving actor is associated with the same first node as the sending actor, delivering by the computer entity the message to a user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message; and

if the receiving actor is not associated with the same first node as the sending actor, determining, using another deterministic algorithm by the computer entity, address information of a different second node associated with the second virtual node, and redirecting the message to the second virtual node associated with the different second node for delivering the message to the user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message.

14. An apparatus comprising at least one processor, an interface unit and at least one memory including computer program code configured to, with the at least one processor, cause the apparatus to perform at least the following,

obtain by a computer entity a message comprising at least one actorID identifying, at least partly, a sending actor and a receiving actor, wherein the at least one actorID comprised in the message includes data used to authenticate the sending actor and the receiving actor;

determine, using a deterministic algorithm by the computer entity address information of a first virtual node for the sending actor and a second virtual node for the receiving actor from the at least one actorID comprised in the message;

determine by the computer entity based on the address information of the first virtual node and the address information of the second virtual node whether the sending actor and the receiving actor are associated with a same first node;

if the receiving actor is associated with the same first node as the sending actor, deliver by the computer entity the message to a user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message; and

if the receiving actor is not associated with the same first node as the sending actor, determine, using another deterministic algorithm by the computer entity, address information of a different second node associated with the second virtual node, and redirect the message to a virtual node associated with the different second node for delivering the message to a user device of the receiving actor via the second virtual node using the address information determined from the at least one actorID comprised in the message.

Assignments (2)
PATENT SECURITY AGREEMENT Recorded May 1, 2023
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 063503/0742 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2014
From: HONKALA, JUHANI; TALJA, ARI
To: ROVIO ENTERTAINMENT LTD.
Reel/Frame 032079/0166 →