EP2245535B1

Balanced consistent hashing for distributed resource management

Abstract

This record has no abstract on file.

EP2245535B1, drawing sheet 1
Sheet 1 of 12

Term

2.2 yearsleft in the term

Expires 23 December 2028.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

14 claims: 3 independent, 11 dependent

  1. 1
    A method of balanced consistent hashing for distributed resource management comprising:determining locations of a plurality of resource identifiers in a resource identification space (410);dividing the resource identification space into a first plurality of disjoint areas of responsibility, wherein each area of responsibility is associated with a distinct network node (110) of a plurality of nodes (110), each network node of the plurality of nodes is a member of a cluster (105), and a sum of all the areas of responsibility encompasses the entire resource identification space;assigning management responsibility for a shared resource associated with a resource identifier located in a first area of responsibility to an associated network node (110), wherein the associated network node is associated with the first area of responsibility, the assigning comprises distributing lock mastering responsibilities associated with the resource identifier to the associated network node, and the distributing lock mastering responsibilities prevents concurrent access to the shared resource;and detecting a cluster membership change, wherein the cluster membership change involves a first network node being added to or removed from the cluster, in response to the detecting, dividing the resource identification space into a second plurality of disjoint areas of responsibility and redistributing lock mastering responsibilities, and the redistributing comprises transferring responsibilities associated with a first resource identifier to a second network node and transferring responsibilities associated with a second resource identifier to a third network node.
  2. 2
    The method of Claim 1 wherein the resource identification space is a name space.
  3. 3
    The method of Claim 2 further comprising:calculating a resource identifier of the plurality of resource identifiers by hashing a name of the shared resource.
  4. 4
    The method of Claim 3 further comprising:deriving the name of the shared resource using a inode identifier, wherein the shared resource is one of a file and a storage location in a file system.
  5. 5
    The method of Claim 3 further comprising:deriving the name of the shared resource using an electronic mail address, wherein the shared resource is one of a mailbox, state information associated with the mailbox, metadata associated with the mailbox, management information associated with the mailbox, and mail data in an electronic mail system.
  6. 6
    The method of Claim 1 wherein a resource identified by one of the plurality of resource identifiers is accessible to all members of the cluster of network nodes.
  7. 7
    The method of Claim 1 further comprising:determining the area of responsibility for the associated network node based on a capability of the associated network node.
  8. 8
    The method of Claim 7 further comprising:relating the capability of the associated network node to one or more of processor capacity and memory capacity.
  9. 9
    The method of Claim 7 further comprising:defining the capability of the associated network node by user input.
  10. 10
    The method of Claim 7 wherein the capability of the associated network node is defined relative to each other network node.
  11. 11
    The method of Claim 1 further comprising:maximizing an overlap of areas of responsibility between the first plurality of areas of responsibility and the second plurality of areas of responsibility.
  12. 12
    A computer-readable storage medium comprising instructions, executable by a processor, for causing a programmable processing apparatus to become configured to carry out the method of any preceding claim.
  13. 13
    A system for balanced consistent hashing to enable distributed resource management comprising:a plurality of network nodes (110), wherein each network node (110) of the plurality of network nodes comprises a corresponding processor (814), a memory (817) coupled to the processor, and a network interface (848) coupled to the processor;a network (120) configured to couple the plurality of network nodes to one another wherein the network is coupled to the network interface of each network node;and wherein, the memory of each network node stores a first set of instructions, executable by the processor of the network node, configured to determine locations of a plurality of resource identifiers in a resource identification space (410), a second set of instructions, executable by the processor of the network node, configured to divide the resource identification space into a first plurality of disjoint areas of responsibility, wherein each area of responsibility is associated with a distinct network node (110) of the plurality of network nodes, each network node of the plurality of nodes is a member of a cluster (105), and a sum of all the areas of responsibility encompasses the entire resource identification space, a third set of instructions, executable by the processor of the network node, configured to assign management responsibility for a shared resource associated with a resource identifier located in a first area of responsibility to an associated network node (110), wherein the associated network node is associated with the first area of responsibility, the assigning comprises distributing lock mastering responsibilities associated with the resource identifier to the associated network node, and the distributing lock mastering responsibilities prevents concurrent access to the shared resource;and a fourth set of instructions, executable by the processor of the network node, configured to detect a cluster membership change, wherein the cluster membership change involves a first network node being added to or removed from the cluster, in response to the detecting, dividing the resource identification space into a second plurality of disjoint areas of responsibility and redistributing lock mastering responsibilities, and the redistributing comprises transferring responsibilities associated with a first resource identifier to a second network node and transferring responsibilities associated with a second resource identifier to a third network node.
  14. 14
    The system of Claim 13 wherein the memory of each network node further stores:a fifth set of instructions, executable by the processor of the network node, configured: to calculate a resource identifier of the plurality of resource identifiers by hashing a name of the resource, wherein the resource identification space is a name space;and/or to determine the area of responsibility for the associated network node based on a capability of the associated network node.