IP Library Granted Patent US 7,526,672
Granted Patent B2
US 7,526,672 · App. 10/886,794 · Granted Apr 28, 2009

Mutual exclusion techniques in a dynamic peer-to-peer environment

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,526,672
App. No.
10/886,794
Granted
Apr 28, 2009
Kind
B2
Abstract

Mutual exclusion techniques for use in a dynamic peer-to-peer environment are described. In an implementation, a method includes receiving, at each of a plurality of logical replicas, a request from a client. Each of the logical replicas includes a queue and is for exclusive association with one of the clients. The request is for accessing one of a plurality of resources. When a particular one of the logical replicas is exclusively associated with another one of the clients, the request is stored in the queue of the particular logical replica.

Claims (118)

1. A method comprising:

receiving, at each of a plurality of logical replicas, a request from a client, wherein:

the client is one of a plurality of clients;

each of the plurality of logical replicas is configured for exclusive association with any one of the plurality of clients at any particular time;

each said logical replica includes a queue; and

the request is for accessing one of a plurality of resources; and for each of the plurality of logical replicas:

in an event that, when the logical replica receives the request, the logical replica has an exclusive association with another one of the plurality of clients, storing the request in the queue of the logical replica; and

in an event that, when the logical replica receives the request, the logical replica does not have an exclusive association with another one of the plurality of clients, establishing for the logical replica, an exclusive association with the client.

2. The method as described in claim 1 , further comprising forming, at each of the plurality of logical replicas, a response for communication to the client that identifies the exclusive association of the logical replica.

3. The method as described in claim 2 , wherein each said response is for determining by the client whether the client is permitted to access the one said resource.

4. The method as described in claim 2 , wherein

each said response is for determining by the client whether the client is permitted to access the one said resource; and

the client is permitted to access the one said resource when the client is exclusively associated with a quorum of the plurality of logical replicas.

5. The method as described in claim 2 , wherein:

each said response is for determining by the client whether the client is permitted to access the one said resource; and

the client waits for another said response from each said logical replica when another one of the plurality of clients is permitted to access the one said resource.

6. The method as described in claim 2 , wherein:

each said response is for determining whether one of the plurality of clients is permitted to access the one said resource; and

if none of the plurality of clients are permitted to access the one said resource, forming a yield message by client for:

communication to individual ones of the plurality of logical replicas; and

causing each of the individual ones of the plurality of logical replicas to form another said response.

7. The method as described in claim 6 , wherein the other said response is formed from a previous said request stored in a respective said queue.

8. The method as described in claim 1 , wherein:

the plurality of resources are partitioned using a Distributed Hash Table (DHT);

the DHT partitions each of the plurality of resources into a respective one of a plurality of buckets; and

the plurality of buckets are provided by a plurality of computing devices in a peer-to-peer network.

9. The method as described in claim 8 , wherein the plurality of computing devices provide failover functionality such that when one said computing device that provides a respective said bucket is not available to the client, the respective said bucket is made available by another said computing device.

10. One or more computer storage comprising computer executable instructions that, when executed on a computer, direct the computer to perform the method as recited in claim 1 .

11. A method comprising:

forming a request by a client for communication to a plurality of logical replicas, wherein:

the client is one of a plurality of clients; and

the request is for one of a plurality of resources;

receiving, at the client, a plurality of responses from the plurality of logical replicas, wherein each said response is configured to identify whether a respective said logical replica is owned by the client;

determining, from the plurality of responses, whether the client is permitted to utilize the one said resource; and

if it is determined that another one of the plurality of clients is permitted to utilize the one said resource, waiting, by the client, for another plurality of said responses without sending another said request.

12. The method as described in claim 11 , wherein:

each said replica includes a queue; and

when none of the plurality of clients are permitted to utilize the one said resource, forming a yield message by at least one said client for:

communication to the plurality of logical replicas; and

causing the plurality of logical replicas to form another plurality of said responses from a respective said queue.

13. The method as described in claim 11 , wherein the client is permitted to utilize the one said resource when exclusively associated with a quorum of the plurality of logical replicas.

14. The method as described in claim 11 , wherein:

the plurality of resources are partitioned using a Distributed Hash Table (DHT);

the DHT partitions the plurality of resources into a plurality of buckets;

the plurality of buckets are provided by a plurality of computing devices in a peer-to-peer network; and

the plurality of computing devices provide failover functionality such that when one said computing device that provides a respective said bucket is not available to the plurality of clients, the respective said bucket is made available by another said computing device.

15. The method as described in claim 11 , wherein:

each said logical replica includes a queue that stores one or more said requests; and

each said request in the queue is organized according to when the request was received by a respective said logical replica.

16. One or more computer storage media comprising computer executable instructions that, when executed on a computer, direct the computer to perform the method as recited in claim 11 .

17. A method comprising:

forming, at each of a plurality of clients, a request for one of a plurality of resources for communication to a plurality of logical replicas;

receiving, at the plurality of clients, a plurality of responses from the plurality of logical replicas;

determining, at each said client using the plurality of responses, whether one of the plurality of clients is permitted to utilize the one said resource; and

when none of the plurality of clients are permitted to utilize the one said resource, forming, by at least one said client, a yield message for:

communication to one or more of the plurality of logical replicas; and

causing each of the one or more said logical replicas to form another said response from a respective queue storing previous requests received from one or more said clients.

18. The method as described in claim 17 , wherein:

each said response is configured to identify whether a respective said logical replica is exclusively associated with one of the plurality of clients;

each said previous request in the queue is organized according to when the previous request was received by a respective said logical replica; and

the yield message causes the one or more said logical replicas to identify ownership in the other said response based on an earliest said previous request in a respective said queue.

19. The method as described in claim 18 , wherein the yield message causes each said logical replica that is owned by the at least one said client to choose a different said client based on the respective said queue.

20. The method as described in claim 17 , wherein the utilization of the one said resource is permitted when one of the plurality of clients is exclusively associated with a quorum of the plurality of logical replicas.

21. The method as described in claim 17 , further comprising when one said client is permitted to access the resource, one or more other said clients that are not permitted waits for an additional plurality of said responses.

22. The method as described in claim 17 , wherein:

the plurality of resources are partitioned using a Distributed Hash Table (DHT);

the DHT partitions the plurality of resources into a plurality of buckets;

the plurality of buckets are provided by a plurality of computing devices in a peer-to-peer network; and

the plurality of computing devices provide failover functionality such that when one said computing device that provides a respective said bucket is not available to the plurality of clients, the respective said bucket is made available by another said computing device.

23. One or more computer storage comprising computer executable instructions that, when executed on a computer, direct the computer to perform the method as recited in claim 17 .

24. A peer-to-peer network of computing devices comprising logical replicas for permitting resource access using a quorum consensus protocol, wherein the quorum consensus protocol is used to permit resource access to a client that is exclusively associated with a quorum of the logical replicas.

25. The peer-to-peer network as described in claim 24 , wherein each said logical replica is a peer that is executable by one or more of a plurality of computing devices.

26. The peer-to-peer network as described in claim 24 , wherein each said logical replica includes a queue for storing requests received from one or more clients for resource access.

27. The peer-to-peer network as described in claim 26 , wherein each said queue is for storing requests received from one said client when a respective said logical replica is exclusively associated with another said client.

28. The peer-to-peer network as described in claim 24 , wherein the resource is one of a plurality of resources partitioned using a distributed hash table.

29. The peer-to-peer network as described in claim 24 , wherein:

each said logical replica employs an informed backoff mechanism that provides an expected waiting time to a client for receiving a response to a request for resource access; and

the expected waiting time defines an amount of time the client is to wait before resending the request.

30. A system comprising:

a network;

a plurality of clients that are communicatively coupled to the network;

a plurality of computing devices that are communicatively coupled to the network and include a plurality of logical replicas, wherein each said logical replica:

is configured to be exclusively associated with any one of the plurality of clients at any one particular time; and

includes a queue for storing a request from one said client to access a resource when the logical replica is exclusively associated with another said client at the time the request is received from the one said client,

whereby, upon receipt, by a particular one of the logical replicas, of a request from a first client of the plurality of clients:

in an event that the particular logical replica is exclusively associated with a second client of the plurality of clients, the request is stored in the queue of the particular logical replica; and

in an event that the particular logical replica is not exclusively associated with any one of the plurality of clients, an exclusive association is established between the particular logical replica and the first client.

31. The system as described in claim 30 , wherein each said logical replica is further configured to form a response to the request which identifies the other said client.

32. The system as described in claim 31 , wherein each said client is configured to determine from each said response whether one of the plurality of clients is permitted to access the one said resource.

33. The system as described in claim 30 , wherein:

each said logical replica is further configured to form a response to the request which identifies when one said client owns the logical replica;

each said client is configured to determine from each said response whether one of the plurality of clients is permitted to utilize the one said partitioned resource; and

permission is obtained when one said client is exclusively associated with a quorum of the plurality of logical replicas.

34. The system as described in claim 30 , wherein:

each said logical replica is further configured to form a response to the request which identifies whether one said client is exclusively associated with the logical replica; and

each said response is for determining by each said client whether the client is permitted to access the one said partitioned resource, and if not, the client waits for another said response.

35. The system as described in claim 30 , wherein:

each said logical replica is further configured to form a response to the request which identifies whether one said client is exclusively associated with the logical replica;

each said response is for determining by the plurality of clients whether one said client is permitted to utilize the one said resource; and

if none of the plurality of clients are permitted to utilize the one said resource, at least one said client forms a yield message for:

communication to one or more of the plurality of logical replicas; and

causing each of the one or more said logical replicas to form another said response from a respective said queue storing previous requests received from one or more said clients.

36. The system as described in claim 30 , wherein:

a distributed hash table partitions the plurality of resources into a plurality of buckets;

the plurality of buckets are provided by the plurality of computing devices in a peer-to-peer network; and

the plurality of computing devices provide failover functionality such that when one said computing device that provides a respective said bucket is not available to the plurality of clients, the respective said bucket is made available by another said computing device.

37. The system as described in claim 30 , wherein

each said logical replica employs an informed backoff mechanism that provides an expected waiting time for receiving a response; and

the expected waiting time defines an amount of time a respective said client is to wait before resending a respective said request.

38. A system comprising:

means for forming a plurality of requests for a resource, wherein the forming means includes a plurality of clients;

means for networking the forming means in a communicative coupling; and

means for providing the resource, wherein the providing means are communicatively coupled to the network means and include:

a plurality of logical replica means for:

forming a response to each of the plurality of requests that identifies which of the forming means owns a respective said logical replica means; and

storing one or more said requests;

a plurality of computing devices communicatively coupled to form a peer-to-peer network; and

a distributed hash table.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2016
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ZHIGU HOLDINGS LIMITED
Reel/Frame 040354/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 8, 2004
From: LIN, SHIDING; LIAN, QIAO; ZHANG, ZHENG
To: MICROSOFT CORPORATION
Reel/Frame 015564/0505 →
Continuity (2)
Provisional Application 6054745700 · Feb 25, 2004
Related Publication 20050188085A1 · Aug 25, 2005