Real-time, low memory estimation of unique client computers communicating with a server computer
First Claim
1. A system comprising:
- a memory;
one or more processors coupled to the memory and configured to;
receive, from a plurality of client computers, a first plurality of heartbeat messages;
wherein each heartbeat message of the first plurality of heartbeat messages;
is sent by a client computer of the plurality of client computers, andincludes a delta value that indicates an amount of time that has elapsed since a previous heartbeat message sent from the client computer;
wherein each heartbeat message in a first subset of heartbeat messages of the first plurality of heartbeat messages includes a first attribute;
wherein each heartbeat message in a second subset of heartbeat messages of the first plurality of heartbeat messages includes a second attribute;
determine a first subtotal based, at least in part, on the delta value in each heartbeat message of the first subset of heartbeat messages;
determine a second subtotal based, at least in part, on the delta value in each heartbeat message of the second subset of heartbeat messages;
receive a first query that identifies the first attribute, and in response, determine a first total number of active client computers based, at least in part, on the first subtotal and a defined amount of time in a first window, but not the second subtotal; and
receive a second query that identifies the second attribute, and in response, determine a second total number of active client computers based, at least in part, on the second subtotal and the defined amount of time in the first window, but not the first subtotal.
3 Assignments
0 Petitions
Accused Products
Abstract
Computer systems and methods for estimating the number of client computers actively coupled to a server computer system in real-time are discussed herein. Specifically, systems and methods are discussed for a server computer system receiving heartbeat messages from a plurality of client computers and generating an estimate of the number of client computers actively coupled to the server computer system in real-time without locks, such as a database table lock. A heartbeat message from a client computer need not include a client or user identifier. In an embodiment, the memory footprint/overhead is O(l), and may be a single whole number greater than zero, such as a 64-bit unsigned integer. Systems and methods are also discussed herein to calculate and reduce the expected error of the estimated number of active clients.
-
Citations
22 Claims
-
1. A system comprising:
-
a memory; one or more processors coupled to the memory and configured to; receive, from a plurality of client computers, a first plurality of heartbeat messages; wherein each heartbeat message of the first plurality of heartbeat messages; is sent by a client computer of the plurality of client computers, and includes a delta value that indicates an amount of time that has elapsed since a previous heartbeat message sent from the client computer; wherein each heartbeat message in a first subset of heartbeat messages of the first plurality of heartbeat messages includes a first attribute; wherein each heartbeat message in a second subset of heartbeat messages of the first plurality of heartbeat messages includes a second attribute; determine a first subtotal based, at least in part, on the delta value in each heartbeat message of the first subset of heartbeat messages; determine a second subtotal based, at least in part, on the delta value in each heartbeat message of the second subset of heartbeat messages; receive a first query that identifies the first attribute, and in response, determine a first total number of active client computers based, at least in part, on the first subtotal and a defined amount of time in a first window, but not the second subtotal; and receive a second query that identifies the second attribute, and in response, determine a second total number of active client computers based, at least in part, on the second subtotal and the defined amount of time in the first window, but not the first subtotal. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method comprising:
-
receiving, from a plurality of client computers, a first plurality of heartbeat messages; wherein each heartbeat message of the first plurality of heartbeat messages; is sent by a client computer of the plurality of client computers, and includes a delta value that indicates an amount of time that has elapsed since a previous heartbeat message sent from the client computer; wherein each heartbeat message in a first subset of heartbeat messages of the first plurality of heartbeat messages includes a first attribute; wherein each heartbeat message in a second subset of heartbeat messages of the first plurality of heartbeat messages includes a second attribute; determining a first subtotal based, at least in part, on the delta value in each heartbeat message of the first subset of heartbeat messages; determining a second subtotal based, at least in part, on the delta value in each heartbeat message of the second subset of heartbeat messages; receiving a first query that identifies the first attribute, and in response, determine a first total number of active client computers based, at least in part, on the first subtotal and a defined amount of time in a first window, but not the second subtotal; and receiving a second query that identifies the second attribute, and in response, determine a second total number of active client computers based, at least in part, on the second subtotal and the defined amount of time in the first window, but not the first subtotal; wherein the method is performed by one or more processors. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
Specification