Data replication framework
First Claim
Patent Images
1. A computing system comprising:
- a plurality of hosts comprising one or more computing devices, the plurality of hosts configured to receive queries for data, the plurality of hosts associated with an ordered list of available hosts from the plurality of hosts, the list comprising an index; and
a router configured to;
receive an individual request for data, wherein the individual request for data comprises a request key;
route the individual request for data to at least one of the available hosts based on a comparison between the request key and at least one divider key of a plurality of divider keys associated with a divider, wherein routing the individual request comprises;
determining that the request key is equal to the at least one divider key of the plurality of divider keys, wherein the request key and the at least one divider key each correspond to an index value in an ordered index; and
in response to determining that the request key is equal to the at least one divider key;
determine, based at least in part on the index value of the at least one divider key, a probability list of an ordered set of hosts associated with the divider, wherein a probability for individual hosts is defined based on a number of times the divider key is assigned to individual hosts and a number of times the divider key is assigned to the plurality of hosts, androute the individual request to a host of the ordered subset of hosts based at least in part on the probability list of the ordered subset of hosts.
0 Assignments
0 Petitions
Accused Products
Abstract
Generally described, the present disclosure is directed to an eventually consistent replicated data store that uses, for its underlying storage, a computer software library that provides a high-performance embedded database for data. The replicated data store employs a plurality of hosts interconnected to one another, allowing for writes to any host and full awareness of membership across all hosts. With the data replication framework disclosed herein, various modes are allowed to be built up on top of the core system.
67 Citations
20 Claims
-
1. A computing system comprising:
-
a plurality of hosts comprising one or more computing devices, the plurality of hosts configured to receive queries for data, the plurality of hosts associated with an ordered list of available hosts from the plurality of hosts, the list comprising an index; and a router configured to; receive an individual request for data, wherein the individual request for data comprises a request key; route the individual request for data to at least one of the available hosts based on a comparison between the request key and at least one divider key of a plurality of divider keys associated with a divider, wherein routing the individual request comprises;
determining that the request key is equal to the at least one divider key of the plurality of divider keys, wherein the request key and the at least one divider key each correspond to an index value in an ordered index; andin response to determining that the request key is equal to the at least one divider key; determine, based at least in part on the index value of the at least one divider key, a probability list of an ordered set of hosts associated with the divider, wherein a probability for individual hosts is defined based on a number of times the divider key is assigned to individual hosts and a number of times the divider key is assigned to the plurality of hosts, and route the individual request to a host of the ordered subset of hosts based at least in part on the probability list of the ordered subset of hosts. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method of dynamically routing requests of data across a plurality of hosts, the method comprising:
-
receiving at least one request for data, the at least one request including a request key; comparing the request key with keys associated with a list of dividers, wherein the request key and each of the keys associated with the list of dividers correspond to index values in an ordered index; routing the at least one request for data to a host based on the comparison, wherein routing the at least one request for data includes; determining whether the request key is less than or equal to at least one divider key of a plurality of divider keys of an individual divider, wherein the individual divider is associated with an ordered set of hosts; in response to determining that the request key is less than the at least one divider key associated with the individual divider, routing the at least one request to a host ordered first in the ordered set of hosts; and in response to determining that the request key is equal to the at least one divider key; determining a probability list of the ordered set of hosts based at least in part on the index value of the at least one divider key associated with the individual divider, wherein a probability for individual hosts is defined based on a number of times the divider key is assigned to individual hosts and a number of times the divider key is assigned to the plurality of hosts; and routing the at least one request to a host of the ordered set of hosts based at least in part on the probability list of the ordered set of hosts, wherein the method is performed on a computing device comprising a hardware processor and memory. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A nontransitory computer-readable medium having computer-executable instructions stored thereon that, in response to execution by one or more processors of a computing device, cause the computing device to perform actions for dynamically routing requests of data across a plurality of hosts, the actions comprising:
-
receiving at least one request for data, the at least one request including a request key; comparing the request key with at least one divider key of a plurality of divider keys associated with a list of dividers, wherein the request key and each of the key associated with the list of dividers correspond to index values in an ordered index; routing the at least one request for data to a host based on the comparison, wherein routing the at least one request for data includes; determining whether the request key is less than or equal to at least one divider key of an individual divider, wherein the individual divider is associated with an ordered set of hosts; in response to determining that the request key is less than the at least one divider key associated with the individual divider, routing the at least one request to a host ordered first in the ordered set of hosts; and in response to determining that the request key is equal to the at least one divider key associated with an individual divider; determining a probability list of the ordered set of hosts based at least in part on the index value of the at least one divider key associated with the individual divider, wherein a probability for individual hosts is defined based on a number of times the divider key is assigned to individual hosts and a number of times the divider key is assigned to the plurality of hosts; and routing the at least one request to a host of the ordered set of hosts based at least in part on the probability list of the ordered set of hosts. - View Dependent Claims (20)
-
Specification