IP Library Granted Patent US 8,751,661
Granted Patent B1
US 8,751,661 · App. 14/085,731 · Granted Jun 10, 2014

Sticky routing

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 8,751,661
App. No.
14/085,731
Granted
Jun 10, 2014
Kind
B1
Abstract

A system and method are provided for sticky routing of a user's service requests and connections to a distributed service hosted by multiple data centers. Sticky routing data are generated when a user first connects, to include member ID, preferred data center, a user bucket associated with one data center, a generation of the bucket, a generation of the user's sticky routing data, and timing information identifying a time of issue and/or a time of expiration of the routing data. A user bucket is either online (accepts new users; their requests are routed to the associated data center), offline (not accepting new users; existing users are expelled and must join a different bucket), or closed (not accepting new users; existing users' requests continue to be routed to the associated data center). All of a user's requests, from all devices, are thus routed to one data center, based on member ID.

Claims (97)

1. A method of sticky routing of user connections to a distributed service comprising multiple data centers, the method comprising:

for each of the multiple data centers, establishing multiple associated user buckets, wherein all service requests from all users in a given bucket are routed to the associated data center, and wherein each user bucket has only one of three states:

online, wherein an online bucket is available to receive new users;

offline, wherein users assigned to an offline bucket are expelled from the bucket; and

closed, wherein a closed bucket is not available to receive new users and users assigned to a closed bucket are not expelled from the bucket;

receiving a first service request from a first device operated by a first user;

assigning the first user to a first user bucket that is online, wherein the first user bucket is associated with a first data center;

storing first sticky routing data for the first user, wherein the first sticky routing data comprises:

a member ID;

an identifier of the first user bucket; and

a generation of the first user bucket; and

routing the first service request to the first data center.

2. The method of claim 1 , further comprising:

receiving a second service request from a second device operated by the first user;

retrieving the first sticky routing data; and

routing the second service request to the first data center.

3. The method of claim 2 , wherein:

routing the first service request comprises delivering a cookie comprising the sticky routing data to the first device; and

routing the second service request comprises delivering the cookie to the second device.

4. The method of claim 1 , further comprising:

from the multiple data centers, determining a preferred data center for the first user;

wherein the first sticky routing data further comprises the preferred data center.

5. The method of claim 1 , wherein:

a user expelled from an offline bucket is assigned to an online bucket when a next service request is received from a device operated by the user.

6. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform a method of method of sticky routing of user connections to a distributed service comprising multiple data centers, the method comprising:

for each of the multiple data centers, establishing multiple associated user buckets, wherein all service requests from all users in a given bucket are routed to the associated data center, and wherein each user bucket has only one of three states:

online, wherein an online bucket is available to receive new users;

offline, wherein users assigned to an offline bucket are expelled from the bucket; and

closed, wherein a closed bucket is not available to receive new users and users assigned to a closed bucket are not expelled from the bucket;

receiving a first service request from a first device operated by a first user;

assigning the first user to a first user bucket that is online, wherein the first user bucket is associated with a first data center;

storing first sticky routing data for the first user, wherein the first sticky routing data comprises:

a member ID;

an identifier of the first user bucket; and

a generation of the first user bucket; and

routing the first service request to the first data center.

7. An apparatus for sticky routing of requests to a distributed service comprising multiple data centers, the apparatus comprising:

one or more processors;

sticky routing data for each of multiple users of the distributed service, wherein first sticky routing data of a first user comprises:

a member ID of the first user;

an identifier of a first bucket the first user is assigned to, wherein the first bucket is one of one or more buckets associated with a first data center and has only one of three states:

online, wherein an online bucket is available to receive new users:

offline, wherein users assigned to an offline bucket are expelled from the bucket; and

closed, wherein a closed bucket is not available to receive new users and users assigned to a closed bucket are not expelled from the bucket;

a generation of the bucket; and

a generation of the first sticky routing data; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

in response to a first service request from a first device of the first user, generate the first sticky routing data for the first user;

store the first sticky routing data; and

cause service requests from a plurality of devices operated by the first user to be routed to the first data center and not any other data center of the multiple data centers.

8. The apparatus of claim 7 , wherein generating the first sticky routing data comprises:

from the member ID of the first user, identifying a preferred data center;

determining whether the preferred data center of the first user is online; and

assigning the first user to a bucket that is online, wherein the assigned bucket is the first bucket.

9. The apparatus of claim 7 , wherein causing service requests from a plurality of devices operated by the first user to be routed to the first data center and not any other data center of the multiple data centers comprises:

serving a common cookie to each of the plurality of devices, wherein the common cookie comprises at least a portion of the first sticky routing data.

10. A system, comprising:

multiple data centers, each data center including multiple computers, each computer comprising a processor and memory and hosting a common application;

multiple points of presence for routing application requests to the multiple data centers; and

for each data center, one or more associated logical buckets, wherein each user of the application is assigned to one bucket, and all application requests received from devices operated by one user are routed to the data center associated with the one user's assigned bucket, and wherein each bucket has only one of three states:

online, wherein an online bucket is available to receive new users;

offline, wherein users assigned to an offline bucket are expelled from the bucket; and

closed, wherein a closed bucket is not available to receive new users and users assigned to a closed bucket are not expelled from the bucket.

11. The system of claim 10 , further comprising, for each user of the application, a cookie configured to identify:

the logical bucket to which the user is assigned;

a generation of the logical bucket; and

a generation of the cookie.

12. The system of claim 11 , wherein:

the logical bucket generation is modified when a status of the associated data center changes.

13. The system of claim 10 , further comprising:

a data store that stores, for each user of the common application, sticky routing data comprising:

a member ID;

an identifier of a current logical bucket to which the user is assigned;

a generation of the current logical bucket;

a generation of the user's sticky routing data; and

a time of issue of the user's sticky routing data.

14. The system of claim 10 , wherein the common application is a professional social networking service.

15. The system of claim 10 , further comprising:

a sticky routing server comprising:

a processor; and

memory storing instructions that, when executed by the processor, cause the sticky routing server to:

receive from a point of presence a request for sticky routing data for a first user;

determine whether the requested sticky routing data exists;

generate the requested sticky routing data if the requested sticky routing data does not exist, said generation including assigning the first user to a bucket that is online; and

transmitting the requested sticky routing data to the point of presence.

16. The system of claim 15 , wherein determining whether the requested sticky routing data exists comprises:

retrieving the requested sticky routing data from a sticky routing data store;

determining whether a bucket to which the first user is assigned is offline or is closed; and

if the bucket to which the first user is assigned is offline or is closed, re-assigning the first user to a bucket that is online.

17. The apparatus of claim 7 , wherein the memory further stores instructions that, when executed by the one or more processors, cause the apparatus to:

determine that the first bucket has changed to an offline or closed state; and

re-assign the first user to a bucket that is online.

18. The apparatus of claim 7 , wherein the distributed service is a professional networking service.

19. The method of claim 1 , wherein:

the first service request is part of a first user session with the distributed service; and

the first sticky routing data persists across multiple user sessions with the distributed service.

20. The method of claim 1 , wherein the distributed service is a professional networking service.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2017
From: LINKEDIN CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 044746/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 10, 2013
From: YOUNG, DOUGLAS A.; LIM, SWEE B.; VENKATASUBRAMANIAN, GANESAN
To: LINKEDIN CORPORATION
Reel/Frame 031749/0164 →