Resource affinity in a dynamic resource pool
AssigneeMicrosoft Technology Licensing, LLC
InventorsQi Xu, Neil L. Shipp
Life of this patent
Estimating the term…
Abstract
Techniques disclosed herein describe methods for achieving resource affinity and scalability in dynamic environments by calculating the modulus of a numeric request identifier against a fixed selection of numbers. Using the proposed techniques yields a numeric request identifier and resource identifier combination that ensures a given resource possesses the unique state applicable to that user's request. Using a fixed selection of numbers thus maintains resource affinity while achieving scalability as resources are added to or subtracted from a pool of resources.
Claims20
A method of facilitating resource affinity in a dynamic resource pool, the method comprising:
- receiving a request for access to content, the content being stored in a distributed or cloud computing environment on an associated server resource of a changing group of server resources, the changing of the changing group of server resources occurring through adding or removing one or more server resources to or from the changing group;
- mapping the request to the associated server resource, wherein the mapping comprises:
- calculating a modulus on a request identifier with at least a first number in a predefined list of numbers to generate a resource identifier identifying the associated server resource, wherein each modulus result is a resource identifier that identifies possible server resources in the changing group, wherein at least one of the possible server resources is possible to be the associated server resource;
- and
- communicating with the associated server resource corresponding to the resource identifier.
An apparatus comprising:
- one or more computer readable storage media;
- a predefined list of numbers stored on at least one of the one or more computer readable storage media;
- and
- program instructions stored on at least one of the one or more computer readable media that, when executed by a processing system, direct the processing system to:
- receive a request for access to content, the content being stored in a distributed or cloud computing environment on an associated server resource of a changing group of server resources, the changing of the changing group of server resources occurring through adding or removing one or more server resources to or from the changing group;
- map the request to the associated server resource, the map comprising:
- calculating a modulus on a request identifier with at least a first number in the predefined list of numbers to generate a resource identifier identifying the associated server resource, wherein each modulus result is a resource identifier that identifies possible server resources in the changing group, wherein at least one of the possible server resources is possible to be the associated server resource;
- and
- communicating with the associated server resource corresponding to the resource identifier.
A resource locator comprising:
- one or more computer readable storage media;
- a predefined list of numbers stored on at least one of the one or more computer readable storage media, the predefined list of numbers comprising a plurality of prime numbers;
- and
- program instructions stored on at least one of the one or more computer readable storage media that, when executed by a processing system, direct the processing system to:
- receive requests for access to content, the content being stored in a distributed or cloud computing environment on associated server resources of a changing group of server resources, the changing of the changing group of server resources occurring through adding or removing one or more server resources to or from the changing group;
- map the requests to the associated server resources, wherein for each request, the program instructions direct the processing system to:
- obtain a numeric identifier (x) from the request;
- retrieve at least a first number (n) in the predefined list of numbers;
- calculate x mod n to generate a resource identifier, the resource identifier being the modulus result of x mod n;
- determine whether the resource identifier identifies an available associated server resource or an unavailable associated server resource;
- and
- in response to a determination that the resource identifier identifies the available associated server resource, communicate the request to the available associated server resource;
- in response to a determination that the resource identifier identifies the unavailable associated server resource, traverse the predefined list of numbers to retrieve a next number (m), calculate x mod m, and determine whether a resulting resource identifier identifies the available server associated resource or the unavailable associated server resource until the resource identifier identifies the available associated server resource.
Dependencies are inferred from the claim text.