Address generation in distributed systems using tree method
First Claim
1. A computer-implemented method comprising:
- generating an identifier for each of a plurality of data objects to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node;
selecting a path of a binary tree structure based on a capacity of nodes along the path, the tree structure comprising the plurality of nodes organized in the structure;
identifying a first node at an end of the path in which the plurality of data objects are to be stored;
for each data object of the plurality of data objects, generating a universal identifier for the data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part that is generated, at least in part, as a pseudo-random value, and an object identifier part that uniquely identifies the data object in the first node, wherein, for each data object, one or more leading reserve bits of the reserve part for the data object have the same value;
based on a node split creating at least two new nodes from the first node, i) maintaining a locality of the plurality of data objects based on the one or more leading reserve bits having the same value, and ii) setting, for each data object of the plurality of data objects, one or more other bits of the reserve part to identify a particular node of the new nodes, on which the data object is stored following the split; and
load balancing the nodes by navigating the binary tree to select particular node based on relative loads on the other nodes of the cluster.
2 Assignments
0 Petitions
Accused Products
Abstract
Methods and apparatus, including computer program products, for managing a cluster of servers organized into nodes. A method of one aspect includes establishing a cluster; establishing a set of ultimate identifiers for nodes resulting from splitting in the cluster; and storing every new data object on a node that has a node identifier that identifies a subset of the set of ultimate identifiers, and providing for the object a universal identifier that combines (i) an object identifier that is unique on the node and (ii) a server identifier that is one of the ultimate identifiers in the subset. A method of another aspect includes generating for a new data object a universal identifier that has a node identifier part that uniquely identifies a node, a reserve part generated at least in part as a pseudo-random value, and an object identifier part that uniquely identifies the object in the node.
53 Citations
12 Claims
-
1. A computer-implemented method comprising:
-
generating an identifier for each of a plurality of data objects to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node; selecting a path of a binary tree structure based on a capacity of nodes along the path, the tree structure comprising the plurality of nodes organized in the structure; identifying a first node at an end of the path in which the plurality of data objects are to be stored; for each data object of the plurality of data objects, generating a universal identifier for the data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part that is generated, at least in part, as a pseudo-random value, and an object identifier part that uniquely identifies the data object in the first node, wherein, for each data object, one or more leading reserve bits of the reserve part for the data object have the same value; based on a node split creating at least two new nodes from the first node, i) maintaining a locality of the plurality of data objects based on the one or more leading reserve bits having the same value, and ii) setting, for each data object of the plurality of data objects, one or more other bits of the reserve part to identify a particular node of the new nodes, on which the data object is stored following the split; and load balancing the nodes by navigating the binary tree to select particular node based on relative loads on the other nodes of the cluster. - View Dependent Claims (2, 3, 4)
-
-
5. A non-transitory computer-readable medium comprising instructions operable to cause data processing apparatus to:
-
generate an identifier for each of a plurality of data objects to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node; select a path of a binary tree structure based on a capacity of nodes along the path, the tree structure comprising the plurality of nodes organized in the structure; determine a first node at an end of the path in which the plurality of data objects are to be stored; for each data object of the plurality of data objects, generate a universal identifier for new data object, the universal identifier having a node identifier part that uniquely identifies the first node in the cluster, a reserve part that is generated, at least in part, as a pseudo-random value, and an object identifier part that uniquely identifies the data object in the first node, wherein, for each data object, one or more leading reserve bits of the reserve part for the data object have the same value; based on a node split creating at least two new nodes from the first node, i) maintain a locality of the plurality of data objects based on the one or more leading reserve bits having the same value, and ii) set, for each data object of the plurality of data objects, one or more other bits of the reserve part to identify a particular node of the nodes, on which the new data object is stored following the split; and load balancing the nodes by navigating the binary tree to select particular node based on relative loads on the other nodes of the cluster. - View Dependent Claims (6, 7, 8)
-
-
9. A system comprising:
-
data processing apparatus; and a non-transitory computer-readable medium storing instructions executable by the data processing apparatus to perform operations comprising; generating an identifier for each of a plurality of data objects to be stored in a cluster of back-end servers of the kind where the cluster is organized into a plurality of nodes where each of the plurality of nodes in the cluster has a node identifier that is unique in the cluster, and where every back-end server in any of the plurality of nodes mirrors every other back-end server in the same node; selecting a path of a binary tree structure based on a capacity of nodes along the path, the tree structure comprising the plurality of nodes organized in the structure; determining a first node at an end of the path in which the plurality of data objects are to be stored; generating a node identifier for the new data object that uniquely identifies the first node in the cluster for storing the new data object; for each data object of the plurality of data objects, generating a universal identifier for new data object, the universal identifier having a node identifier part for the node identifier, a reserve part that is generated, at least in part, as a pseudo-random value, and an object identifier part that uniquely identifies the data object in the first node, wherein, for each data object, one or more leading reserve bits of the reserve part for the data object have the same value;
based on a node split creating at least two new nodes from the first node, i) maintaining a locality of the plurality of data objects based on the one or more leading reserve bits having the same value, and ii) setting, for each data object of the plurality of data objects, one or more other bites of the reserve part to identify a particular node of the new nodes, on which the data object is stored following the split; andload balancing the nodes by navigating the binary tree to select particular node based on relative loads on the other nodes of the cluster. - View Dependent Claims (10, 11, 12)
-
Specification