IP Library Granted Patent US 11,621,891
Granted Patent B1
US 11,621,891 · App. 16/849,585 · Granted Apr 4, 2023

Systems and methods for routing network data based on social connections of users

Inventors: David Shu-Hao Chou (Menlo Park, CA); Tianyin Xu (Urbana, IL); Kaushik Veeraraghavan (Bainbridge Island, WA); Andrew John Newell (Fremont, CA); Sonia Margulis (Mountain View, CA); Lin Xiao (Redwood City, CA); Pol Mauri Ruiz (Mountain View, CA); Justin James Meza (San Jose, CA); Kiryong Ha (Redmond, WA); Shruti Padmanabha (San Francisco, CA); Kevin Burton Cole (Menlo Park, CA); Dmitri Perelman (San Jose, CA)
Assignee: Meta Platforms, Inc.
H04L41/12G06K9/6224G06Q50/01H04L45/48H04L47/20H04L47/2441H04L67/568
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,621,891
App. No.
16/849,585
Granted
Apr 4, 2023
Kind
B1
Abstract

A disclosed computer-implemented method may include partitioning, based on a social graph representative of social connections among a plurality of users of a social networking system, the plurality of users into a plurality of user buckets. Each user bucket may include at least one user of the social networking system. The method may further include selecting a set of user buckets from the plurality of user buckets, assigning the set of user buckets to a data center included in a networking infrastructure, and routing data sent from a user device associated with a user included in the set of user buckets to the data center. Various other methods, systems, and computer-readable media are also disclosed.

Claims (61)

1. A computer-implemented method comprising:

partitioning, based on a social graph representative of social connections among a plurality of users of a social networking system, the plurality of users into a plurality of user buckets, each user bucket comprising at least one user of the social networking system;

selecting a set of user buckets from the plurality of user buckets;

within a networking infrastructure comprising a plurality of data centers and at least one point-of-presence (POP) edge node, assigning the set of user buckets to one of the data centers the plurality of data centers;

receiving a routing table indicating an amount of traffic received by the POP edge node that the POP edge node routes to the data center; and

routing data sent from a user device associated with a user included in the set of user buckets to the data center via the POP edge node in accordance with the routing table.

2. The computer-implemented method of claim 1 , wherein the routing table indicates a fraction of data received by the POP edge node that the POP edge node routes the data center.

3. The computer-implemented method of claim 1 , wherein the social graph comprises:

at least two graph nodes, each graph node representative of a different set of users of the social networking system; and

at least one graph edge, each graph edge representative of a social connection between the at least two graph nodes.

4. The computer-implemented method of claim 3 , wherein partitioning the plurality of users into the plurality of user buckets comprises arranging the social graph into a complete binary tree, wherein each leaf node in the complete binary tree corresponds to a different graph node included in the social graph.

5. The computer-implemented method of claim 4 , wherein arranging the social graph into the complete binary tree comprises constructing the complete binary tree based on the social graph in accordance with a Social Hash algorithm.

6. The computer-implemented method of claim 4 , wherein partitioning the plurality of users into the plurality of user buckets further comprises performing at least one balanced bipartition of the complete binary tree.

7. The computer-implemented method of claim 6 , wherein performing the balanced bipartition of the complete binary tree comprises minimizing a number of graph edges bisected by the balanced bipartition.

8. The computer-implemented method of claim 1 , wherein partitioning the plurality of users into the plurality of user buckets comprises limiting a difference between the plurality of user buckets and a previous partitioning of the plurality of users into a different plurality of users buckets to less than a threshold difference.

9. The computer-implemented method of claim 1 , wherein assigning the set of user buckets to the data center included in a networking infrastructure comprises assigning the set of user buckets to the data center based on a Consistent Mapping algorithm.

10. The computer-implemented method of claim 9 , wherein assigning the set of user buckets to the data center based on the Consistent Mapping algorithm comprises:

grouping the plurality of user buckets into a plurality of segments of user buckets;

determining, for each data center included in the networking infrastructure, a preference of the data center for each segment of user buckets included in the plurality of segments of user buckets; and

assigning each user bucket included in the set of user buckets to the data center based on the preference of the data center for each segment of user buckets included in the plurality of segments of user buckets.

11. The computer-implemented method of claim 1 , wherein routing data sent from the user device associated with the user included in the set of user buckets to the data center comprises:

receiving an initial request from the user device;

associating the initial request with a user bucket included in the plurality of user buckets;

including a bucket identifier associated with the user bucket in a hypertext transfer protocol (HTTP) cookie associated with the initial request;

receiving a subsequent request from the user device that includes the bucket identifier; and

routing the subsequent request to the data center based on the bucket identifier.

12. A system comprising:

a partitioning module, stored in memory, that partitions, based on a social graph representative of social connections among a plurality of users of a social networking system, the plurality of users into a plurality of user buckets, each user bucket comprising at least one user of the social networking system;

a selecting module, stored in memory, that selects a set of user buckets from the plurality of user buckets;

an assigning module, stored in memory, that, within a networking infrastructure comprising a plurality of data centers and at least one point-of-presence (POP) edge node, assigns the set of user buckets to one of the data centers in the plurality of data centers;

a routing module, stored in memory, that:

receives a routing table that indicates an amount of traffic received by the POP edge node that the POP edge node routes to the data center; and

routes data sent from a user device associated with a user included in the set of user buckets to the data center via the POP edge node in accordance with the routing table; and

at least one physical processor that executes the partitioning module, the selecting module, the assigning module, and the routing module.

13. The system of claim 12 , wherein:

the social graph comprises:

at least two graph nodes, each graph node representative of a different set of users of the social networking system; and

at least one graph edge, each graph edge representative of a social connection between the at least two graph nodes; and

the partitioning module partitions the plurality of users into the plurality of user buckets by arranging the social graph into a complete binary tree, wherein each leaf node in the complete binary tree corresponds to a different graph node included in the social graph.

14. The system of claim 13 , wherein the partitioning module arranges the social graph into the complete binary tree by constructing the complete binary tree based on the social graph in accordance with a Social Hash algorithm.

15. The system of claim 12 , wherein the partitioning module partitions the plurality of users into the plurality of user buckets by limiting a difference between the plurality of user buckets and a previous partitioning of the plurality of users into a different plurality of users buckets to less than a threshold difference.

16. The system of claim 12 , wherein the assigning module assigns the set of user buckets to the data center included in a networking infrastructure comprises assigning the set of user buckets to the data center based on a Consistent Mapping algorithm.

17. The system of claim 12 , wherein the routing module routes data sent from the user device associated with the user included in the set of user buckets to the data center by:

receiving an initial request from the user device;

associating the initial request with a user bucket included in the plurality of user buckets;

including a bucket identifier associated with the user bucket in a hypertext transfer protocol (HTTP) cookie associated with the initial request;

receiving a subsequent request from the user device that includes the bucket identifier; and

routing the subsequent request to the data center based on the bucket identifier.

18. A non-transitory computer-readable medium comprising computer-readable instructions that, when executed by at least one processor of a computing system, cause the computing system to:

partition, based on a social graph representative of social connections among a plurality of users of a social networking system, the plurality of users into a plurality of user buckets, each user bucket comprising at least one user of the social networking system;

select a set of user buckets from the plurality of user buckets;

within a networking infrastructure comprising a plurality of data centers and at least one point-of-presence (POP) edge node, assign the set of user buckets to one of the data centers in the plurality of data centers;

receive a routing table indicating an amount of traffic received by the POP edge node that the POP edge node routes to the data center; and

route data sent from a user device associated with a user included in the set of user buckets to the data center.

19. The computer-readable medium of claim 18 , wherein:

the social graph comprises:

at least two graph nodes, each graph node representative of a different set of users of the social networking system; and

at least one graph edge, each graph edge representative of a social connection between the at least two graph nodes; and

the computer-readable instructions, when executed by the at least one processor of the computing system, further cause the computing system to:

partition the plurality of users into the plurality of user buckets by arranging the social graph into a complete binary tree, wherein each leaf node in the complete binary tree corresponds to a different graph node included in the social graph.

20. The computer-readable medium of claim 18 , wherein the computer-readable instructions, when executed by the at least one processor of the computing system, further cause the computing system to partition the plurality of users into the plurality of user buckets by limiting a difference between the plurality of user buckets and a previous partitioning of the plurality of users into a different plurality of users buckets to less than a threshold difference.

Assignments (2)
CHANGE OF NAME Recorded Jan 11, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058685/0901 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 14, 2020
From: CHOU, DAVID SHU-HAO; XU, TIANYIN; VEERARAGHAVAN, KAUSHIK; NEWELL, ANDREW JOHN; MARGULIS, SONIA; XIAO, LIN; RUIZ, POL MAURI; MEZA, JUSTIN JAMES; HA, KIRYONG; PADMANABHA, SHRUTI; COLE, KEVIN BURTON; PERELMAN, DMITRI
To: FACEBOOK, INC.
Reel/Frame 053504/0276 →
Cited By (1)
US 12,395,377