# US 2014/0156745 A1 · Distributing user information across replicated servers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0156745 A1
- Document ID: US20140156745A1
- Status: Published application
- Kind: A1
- Application number: 13/690,338
- Filed: 2012-11-30
- Published: 2014-06-05
- Earliest claimed: 2012-11-30
- Assignees: Facebook, Inc.
- Applicants: Facebook, Inc.
- Inventors: Ming Hua; Hong Yan
- Web page: https://patentgrep.com/patent/US20140156745A1

## CPC

- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L 67/1029: using data related to the state of servers by a load balancer
- H04L 67/1034: Reaction to server failures by a load balancer
- H04L 67/306: User profiles
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Online systems store information describing a large number of users in order to process requests accessing the user information. The user information is distributed across multiple servers. The distribution is performed so that the information is available even if one or more servers fail. The user information is distributed across a first set of servers and a second copy of the user information is distributed across a second set of servers. The user information from each server of the first set is uniformly distributed across multiple servers from the second set, for example, using random distribution, round robin strategy, or any other strategy that uniformly distributes the information across a given set of processors. Requests previously directed to a failed server are redistributed across multiple servers thereby load balancing the processing of these requests.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, by an online system, user profiles describing users of a system;
storing a first copy of user profiles in a first plurality of servers, such that a set of user profiles is mapped to each server of the first plurality of servers;
for each server from the first plurality, the server storing a set of user profiles:
mapping the set of user profiles to a second plurality of servers, such that a subset of user profiles from the set is mapped to each server of the second plurality;
storing a second copy of the set of user profiles in the second plurality of servers according to the mapping;
receiving information describing failure of a server from the first plurality;
receiving requests for information stored on the failed server, each request identifying a user profile stored on the failed server; and
for each request identifying a user profile, identifying a server storing a second copy of the user profile and redirecting the request to the identified server.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers, wherein each subset comprises substantially equal number of users.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein distributing the information describing the set of users stored on the server from the first plurality across all servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using a random mapping that assigns each user of the set to a randomly selected server from the second plurality.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using scheme that assigns the users of the set in a round robin fashion to servers of the second plurality.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of consecutive users from the set of users to each of the second plurality of servers, the subset of consecutive users obtained based on an ordering of the users.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein the second plurality of servers overlaps with the first plurality of servers such that the second copy of a set of users stored on a first server is mapped to a subset of the first plurality of servers that excludes the first server.

### Claim 8

A computer-implemented method comprising:
receiving information describing users of a system;
storing the information describing the users across a first plurality of servers, each of the plurality of servers storing information describing a set of users; and
for each server from the first plurality of servers, the server storing a first copy of information describing a set of users:
storing a second copy of information describing the set of users across a second plurality of servers, comprising:
distributing information describing the set of users across each of the second plurality of servers.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, further comprising:
receiving information describing a failure of a first server from the first plurality; and
responsive to receiving information describing the failure of a first server:
receiving a requests for information describing users stored on the first server; and
distributing the received requests across the second plurality of servers, comprising, for each request for information describing a user:
identifying a second server from the second plurality of servers storing the second copy of information describing the second user; and
sending the request for information to the second server.

### Claim 10 (depends on 8)

The computer-implemented method of claim 8, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers.

### Claim 11 (depends on 8)

The computer-implemented method of claim 8, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers, wherein each subset comprises substantially equal number of users.

### Claim 12 (depends on 8)

The computer-implemented method of claim 8, wherein distributing the information describing the set of users stored on the server from the first plurality across all servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using a random mapping that assigns each user of the set to a randomly selected server from the second plurality.

### Claim 13 (depends on 8)

The computer-implemented method of claim 8, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using scheme that assigns the users of the set in a round robin fashion to servers of the second plurality.

### Claim 14 (depends on 8)

The computer-implemented method of claim 8, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of consecutive users from the set of users to each of the second plurality of servers, the subset of consecutive users obtained based on an ordering of the users.

### Claim 15 (depends on 8)

The computer-implemented method of claim 8, wherein the second plurality of servers overlaps with the first plurality of servers such that the second copy of a set of users stored on a first server is mapped to a subset of the first plurality of servers that excludes the first server.

### Claim 16

A computer program product having a non-transitory computer-readable storage medium storing computer-executable code for modifying a numeric value using a touch screen of a computing device, the code comprising:
a mapping module configured to:
receive information describing users of a system;
store the information describing the users across a first plurality of servers, each of the plurality of servers storing a first copy of information describing a set of users;
store a second copy of the information describing the users of the system across a second plurality of servers, comprising, for each server from the first plurality of servers:
distribute information describing a set of users stored on the server from the first plurality across multiple servers of the second plurality of servers; and
a server monitor module configured to:
receive information describing a failure of a first server from the first plurality;
an aggregator module configured to:
responsive to receiving information describing the failure of a first server:
receive a requests for information describing users stored on the first server;
distribute the received requests across the second plurality of servers, comprising, for each request for information describing a user:
identify a second server from the second plurality of servers storing the second copy of information describing the second user; and
send the request for information to the second server.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of the set of users to each of the second plurality of servers, wherein each subset comprises substantially equal number of users.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein distributing the information describing the set of users stored on the server from the first plurality across all servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using a random mapping that assigns each user of the set to a randomly selected server from the second plurality.

### Claim 20 (depends on 16)

The computer program product of claim 16, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping the set of users to each of the second plurality of servers using scheme that assigns the users of the set in a round robin fashion to servers of the second plurality.

### Claim 21 (depends on 16)

The computer program product of claim 16, wherein distributing the information describing the set of users stored on the server from the first plurality across multiple servers of the second plurality comprises:
mapping a subset of consecutive users from the set of users to each of the second plurality of servers, the subset of consecutive users obtained based on an ordering of the users.

### Claim 22 (depends on 16)

The computer program product of claim 16, wherein the second plurality of servers overlaps with the first plurality of servers such that the second copy of a set of users stored on a first server is mapped to a subset of the first plurality of servers that excludes the first server.
