IP Library › Granted Patent US 8,379,525
Granted Patent B2
US 8,379,525 · App. 12/892,649 · Granted Feb 19, 2013

Techniques to support large numbers of subscribers to a real-time event

Inventors: Cheuk Wan William Lau (Bellevue, WA); RaviKant Cherukuri (Snoqualmie, WA); Stephen Gordon (Woodinville, WA); Offir Bakshitz (Redmond, WA)
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 8,379,525
App. No.
12/892,649
Granted
Feb 19, 2013
Kind
B2
Abstract

Techniques to manage large numbers of subscribers to real-time events are described. Embodiments may filter subscribers dynamically into buckets where publications are distributed only to subscribers in the same bucket as the publisher. Buckets may be dynamically created and removed to lower or raise the publication rate for subscribers to an acceptable level. Embodiments may use a two-level bucketing algorithm for filtering that is memory and CPU efficient, and scales with large numbers of subscriptions. The techniques may also reduce the context loss for a subscriber when a new bucket has to be created and subscribers distributed between buckets. Embodiments may be scaled out to multiple servers, to accommodate very large numbers of subscribers and publications. Other embodiments are described and claimed.

Claims (76)

1. A computer-implemented method, comprising:

allocating subscribers to a real-time event to a bucket and a slot within the bucket, the bucket having at least one slot;

monitoring a publication rate for the real-time event;

adding a bucket when the publication rate exceeds a first threshold;

removing a bucket when the publication rate falls below a second threshold; and

publishing a first subscriber publication only to other subscribers allocated to the same bucket as the first subscriber.

2. The method of claim 1 , further comprising:

allocating subscribers to a slot in a bucket by hashing a subscriber identifier to a slot number.

3. The method of claim 1 , further comprising:

ordering the total number of slots for the real-time event;

allocating slots to a bucket by evenly dividing the slots among the buckets for the real-time event; and

re-allocating the slots among the buckets while maintaining the order of the slots when a bucket is added.

4. The method of claim 1 , wherein monitoring the publication rate comprises:

monitoring a moving average rate of publications per bucket over a number of defined periods.

5. The method of claim 1 , further comprising:

monitoring a publication rate for each slot;

adding ordered slots to the bucket while the publication rate is between the second threshold and the first threshold;

adding a bucket and allocating a slot to the added bucket when adding the slot causes the publication rate to exceed the first threshold;

removing the added bucket and allocating any slots in the removed bucket to a previous bucket when adding a bucket causes the publication rate to fall below the second threshold.

6. The method of claim 5 , further comprising:

allocating new slots to existing buckets in a round-robin fashion when no more buckets can be added.

7. The method of claim 1 , further comprising:

monitoring the publication rate for each bucket;

dividing one bucket having a publication rate that exceeds the first threshold into two buckets until the publication rate per bucket falls to between the second and first thresholds; and

merging one bucket having a publication rate that falls below the second threshold into another bucket until the publication rate per bucket rises to between the second and first thresholds.

8. The method of claim 7 , wherein merging a bucket comprises:

selecting a second bucket to merge with by selecting the second bucket such that the merged bucket publication rate does not exceed the first threshold.

9. An article of manufacture comprising a computer-readable storage medium comprising no signals containing instructions that if executed enable a system to:

maintain an ordered set of servers to host a real-time event;

maintain at least one bucket on each server in the set, wherein each bucket on a server corresponds to a bucket on every other server;

allocate a subscriber of the real-time event to a server;

allocate the subscriber to a bucket at the server and a slot within the bucket, the bucket having at least one slot;

monitor a publication rate for the real-time event; broadcast a first subscriber publication to all servers in the set; and publish the first subscriber publication only to other subscribers allocated to the same bucket as the first subscriber and to the buckets corresponding to the same bucket on each server.

10. The article of claim 9 , further comprising instructions that if executed enable the system to re-allocate the subscriber to the same or a different server when a server is added to or removed from the ordered set of servers.

11. The article of claim 9 , further comprising instructions that if executed enable the system to select one server in the set of servers as a primary server, wherein the primary server determines the number of buckets and the allocation of slots to buckets to be used by all of the servers.

12. The article of claim 9 , further comprising instructions that if executed enable the system to:

add a bucket at the server when the publication rate at a server exceeds a first threshold; and

remove a bucket from the server when the publication rate at the server falls below a second threshold.

13. The article of claim 12 , further comprising instructions that if executed enable the system to:

order the total number of slots for the real-time event;

allocate slots to a bucket by evenly dividing the slots among the buckets for the real-time event; and

re-allocate the slots among the buckets while maintaining the order of the slots when a bucket is added.

14. The article of claim 12 , further comprising instructions that if executed enable the system to:

monitor a publication rate for each slot;

add ordered slots to the bucket while the publication rate is between the second threshold and the first threshold;

add a bucket and allocate a slot to the added bucket when adding the slot causes the publication rate to exceed the first threshold; and

remove the added bucket and allocate any slots in the removed bucket to a previous bucket when adding a bucket causes the publication rate to fall below the second threshold.

15. The article of claim 12 , further comprising instructions that if executed enable the system to:

monitor the publication rate for each bucket;

divide one bucket having a publication rate that exceeds the first threshold into two buckets until the publication rate per bucket falls to between the second and first thresholds; and

merge one bucket having a publication rate that falls below the second threshold into another bucket until the publication rate per bucket rises to between the second and first thresholds.

16. An apparatus, comprising:

a processor; and

a real-time event host module operative on the processor to:

allocate subscribers to a real-time event to a bucket and a slot within the bucket, the bucket having at least one slot;

monitor a publication rate for the real-time event;

add a bucket when the publication rate exceeds a first threshold;

remove a bucket when the publication rate falls below a second threshold; and

publish a first subscriber publication only to other subscribers allocated to the same bucket as the first subscriber.

17. The apparatus of claim 16 , the real-time event host module further operative to:

order the total number of slots for the real-time event;

allocate slots to a bucket by evenly dividing the slots among the buckets for the real-time event; and

re-allocate the slots among the buckets while maintaining the order of the slots when a bucket is added.

18. The apparatus of claim 16 , the real-time event host module further operative to:

monitor a publication rate for each slot;

add ordered slots to the bucket while the publication rate is between the second threshold and the first threshold;

add a bucket and allocate a slot to the added bucket when adding the slot causes the publication rate to exceed the first threshold;

remove the added bucket and allocate any slots in the removed bucket to a previous bucket when adding a bucket causes the publication rate to fall below the second threshold.

19. The apparatus of claim 16 , the real-time event host module further operative to:

monitor the publication rate for each bucket;

divide one bucket having a publication rate that exceeds the first threshold into two buckets until the publication rate per bucket falls to between the second and first thresholds; and

merge one bucket having a publication rate that falls below the second threshold into another bucket until the publication rate per bucket rises to between the second and first thresholds.

20. The apparatus of claim 16 , wherein:

the apparatus is one of a set of servers;

each bucket on the apparatus corresponds to a bucket of each of the other servers in the set; and

the first subscriber publication is published only to other subscribers allocated to the same bucket as the first subscriber and to the buckets corresponding to the same bucket on each server in the set.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2011
From: LAU, CHEUK WAN WILLIAM; CHERUKURI, RAVIKANT; GORDON, STEPHEN; BAKSHITZ, OFFIR
To: MICROSOFT CORPORATION
Reel/Frame 026768/0459 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2010
From: LAU, CHEUK WAN WILLIAM; CHERUKURL, RAVIKANT; GORDON, STEPHEN; BAKSHITZ, OFFIR
To: MICROSOFT CORPORATION
Reel/Frame 025056/0538 →
Continuity (1)
Related Publication 20120075996A1 · Mar 29, 2012