IP Library › Granted Patent US 10,270,849
Granted Patent B2
US 10,270,849 · App. 15/052,675 · Granted Apr 23, 2019

Scalable peer matching

Inventors: Brandon T. Hunt (Redmond, WA); Alexander Burba (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L67/104H04L67/107H04L67/1046H04L67/1048H04L67/1055H04L67/1089H04L67/1093
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 10,270,849
App. No.
15/052,675
Filed
Feb 24, 2016
Granted
Apr 23, 2019
Kind
B2
Art Unit
2456
USPC
709/223
Abstract

The techniques and systems described herein implement an improved peer matching service by coordinating peer matching requests across multiple peer matching nodes configured within a peer matching unit so that resource consumption can be spread out and resource limitations are not exceeded. Moreover, the peer matching service can determine if a peer matching unit is overloaded (e.g., experiencing an increased number of requests in a given time interval that is causing performance degradation), and the peer matching service can implement an action to scale out the number of requests within the peer matching unit (e.g., re-distribute some peer matching requests to another peer matching unit). In various examples, the peer matching service can determine if peer devices are co-located peer devices based on location information and can generate a list that prioritizes the co-located peer devices.

Claims (56)

1. A device comprising:

one or more processors;

memory storing a first version of a list of grouped peer identifiers corresponding to a set of peer devices that have registered with a plurality of peer matching nodes for peer matching services associated with a content identifier; and

instructions stored on the memory and executable by the one or more processors to:

identify a first set of changes to the first version of the list of grouped peer identifiers, the first set of changes occurring at a particular peer matching node of the plurality of peer matching nodes, an individual change in the first set of changes including one or more of:

an addition of a new peer identifier based at least in part on a reception of a new request from a new peer device to register with the particular peer matching node for the peer matching services associated with the content identifier;

a removal of an expired peer identifier based at least in part on a determination that an existing peer device is no longer registered with the particular peer matching node for the peer matching services associated with the content identifier; or

updated metadata representative of a peer state changing from a first peer state to a second peer state that is different than the first peer state;

determine that a defined time period has expired or that a number of changes in the first set of changes exceeds a threshold number of changes;

generate, based at least in part on the determining that the defined time period has expired or that the number of changes in the first set of changes exceeds the threshold number of changes, first information representative of the first set of changes to the first version of the list of grouped peer identifiers;

send, to a hub that is configured to update a second version of the list of grouped peer identifiers based on a second set of changes that occur across at least two of the plurality of peer matching nodes for the peer matching services associated with the content identifier, the first information representative of the first set of changes to the first version of the list of grouped peer identifiers;

receive, from the hub, second information representative of the second set of changes to the second version of the list of grouped peer identifiers;

update the first version of the list of grouped peer identifiers based at least in part on the second information received from the hub; and

provide the updated first version of the list of grouped peer identifiers to at least one peer device that has registered with the particular peer matching node.

2. The device of claim 1 , wherein the first information representative of the first set of changes to the first version of the list of grouped peer identifiers comprises multiple new peer identifiers added during a most recent time interval.

3. The device of claim 1 , wherein the first information representative of the first set of changes to the first version of the list of grouped peer identifiers comprises multiple expired peer identifiers removed during a most recent time interval.

4. The device of claim 1 , wherein the instructions are further executable by the one or more processors to:

determine that a failure has occurred and the device has been re-started;

send, to the hub, a request for all the peer identifiers maintained in the second version of the list of grouped peer identifiers; and

receive, from the hub, all the peer identifiers maintained in the second version of the list of grouped peer identifiers.

5. The device of claim 1 , wherein the set of peer devices comprises a swarm, and wherein updating the first version and the second version of the list of grouped peer identifiers avoids swarm fragmentation.

6. A method comprising:

identifying, at a first peer matching node of a plurality of peer matching nodes, a first set of changes to a first local list of grouped peer identifiers maintained at the first peer matching node, an individual change in the first set of changes including one or more of:

an addition of a new peer identifier based at least in part on a reception of a new request from a new peer device to register with the first peer matching node for peer matching services associated with a content identifier;

a removal of an expired peer identifier based at least in part on a determination that an existing peer device is no longer registered with the first peer matching node for the peer matching services associated with the content identifier; or

updated metadata representative of a peer state changing from a first peer state to a second peer state that is different than the first peer state;

determining, by one or more processors, that a defined time period has expired or that a number of changes in the first set of changes exceeds a threshold number of changes;

generating, based at least in part on the determining that the defined time period has expired or that the number of changes in the first set of changes exceeds the threshold number of changes, first information representative of the first set of changes to the first local list of grouped peer identifiers;

sending, from the first peer matching node to a hub device that is configured to synchronize information across the plurality of peer matching nodes, the first information representative of the first set of changes;

receiving, at the first peer matching node and from the hub device, second information representative of a second set of changes, an individual change in the second set of changes including another addition of another new peer identifier to a second local list of grouped peer identifiers, maintained by a second peer matching node of the plurality of peer matching nodes, based at least in part on another reception of another new request from another new peer device to register with the second peer matching node for the peer matching services associated with the content identifier;

updating, by the first peer matching node, the first local list of grouped peer identifiers based at least in part on the second information received from the hub device; and

providing the updated first local list of grouped peer identifiers to at least one peer device that has registered with the first peer matching node for the peer matching services associated with the content identifier.

7. The method of claim 6 wherein the first information representative of the first set of changes comprises multiple new peer identifiers added during a most recent time interval.

8. The method of claim 6 , further comprising:

determining that a failure has occurred and the first peer matching node has been re-started;

sending, from the first peer matching node and to the hub device, a request for all peer identifiers on a synchronized list of grouped peer identifiers maintained by the hub device; and

receiving, at the first peer matching node and from the hub device, all the peer identifiers on the synchronized list of grouped peer identifiers maintained by the hub device.

9. The method of claim 6 , wherein updating the first local list of grouped peer identifiers avoids swarm fragmentation.

10. A method comprising:

identifying, at a first peer matching node of a plurality of peer matching nodes, a first set of changes to a first local list of grouped peer identifiers, maintained at the first peer matching node, the first local list of grouped peer identifiers corresponding to a set of peer devices that have registered with the plurality of peer matching nodes for peer matching services associated with a content identifier, an individual change in the first set of changes including one or more of:

an addition of a new peer identifier based at least in part on a reception of a new request from a new peer device to register with the particular peer matching node for the peer matching services associated with the content identifier;

a removal of an expired peer identifier based at least in part on a determination that an existing peer device is no longer registered with the particular peer matching node for the peer matching services associated with the content identifier; or

updated metadata representative of a peer state changing from a first peer state to a second peer state that is different than the first peer state;

determining, by one or more processors, that a defined time period has expired or that a number of changes in the first set of changes exceeds a threshold number of changes;

generating, based at least in part on the determining that the defined time period has expired or that the number of changes in the first set of changes exceeds the threshold number of changes, first information representative of the first set of changes to the first version of the list of grouped peer identifiers;

sending, to a hub that is configured to update a second version of the list of grouped peer identifiers based on a second set of changes that occur across at least two of the plurality of peer matching nodes for the peer matching services associated with the content identifier, the first information representative of the first set of changes to the first version of the list of grouped peer identifiers;

receiving, from the hub, second information representative of the second set of changes to the second version of the list of grouped peer identifiers;

updating the first version of the list of grouped peer identifiers based at least in part on the second information received from the hub; and

providing the updated first version of the list of grouped peer identifiers to at least one peer device that has registered with the particular peer matching node.

11. The method of claim 10 , wherein the first information representative of the first set of changes to the first version of the list of grouped peer identifiers comprises multiple new peer identifiers added during a most recent time interval.

12. The method of claim 10 , wherein the first information representative of the first set of changes to the first version of the list of grouped peer identifiers comprises multiple expired peer identifiers removed during a most recent time interval.

13. The method of claim 10 , further comprising:

determining that a failure has occurred and the particular peer matching node has been re-started;

sending, to the hub, a request for all the peer identifiers maintained in the second version of the list of grouped peer identifiers; and

receiving, from the hub, all the peer identifiers maintained in the second version of the list of grouped peer identifiers.

14. The method of claim 10 , wherein the set of peer devices comprises a swarm, and wherein updating the first version and the second version of the list of grouped peer identifiers avoids warm fragmentation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2016
From: HUNT, BRANDON T.; BURBA, ALEXANDER
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 037819/0103 →
Continuity (2)
Provisional Application 62121413 · Feb 26, 2015
Related Publication 20160255142A1 · Sep 1, 2016