Resource server providing a rapidly changing resource
First Claim
1. A non-transitory computer-readable medium having stored thereon computer-readable instructions that when executed by a computing device cause the computing device to:
- receive a block of streamed data, wherein the block includes a value associated with an event and a unique identifier of the event;
select a pre-allocated block of memory, wherein the pre-allocated block of memory includes one or more previously compressed blocks, wherein each of the one or more previously compressed blocks includes an associated value and a different unique identifier;
compress the received block with the one or more previously compressed blocks to create a new compressed block;
store the new compressed block in the selected pre-allocated block of memory, wherein a reference to the selected pre-allocated block of memory is stored in a tree map based on the unique identifier;
receive a second block of streamed data, wherein the second block includes a second value associated with the event and the unique identifier of the event, wherein the second value is different from the value;
identify the pre-allocated block of memory from the tree map using the unique identifier;
read the received block and at least one of the one or more previously compressed blocks from the identified pre-allocated block of memory;
select a second pre-allocated block of memory;
compress the received second block with the at least one of the one or more previously compressed blocks to create a second new compressed block;
store the second new compressed block in the selected second pre-allocated block of memory, wherein a reference to the selected second pre-allocated block of memory is stored in the tree map based on the unique identifier;
receive a request for an update for the event based on the unique identifier from a requesting event client system; and
send the stored, second new compressed block to the requesting event client system.
1 Assignment
0 Petitions
Accused Products
Abstract
A computing device is provided that supports receipt and processing of blocks of streamed data associated with an event and provision of pre-rendered and compressed events to event client systems with a high-throughput. The computing device includes a compression optimizer module that determines how to make new compressed blocks of the right level of compression as the blocks of streamed data are received from an event publishing system. The compression optimizer module utilizes a tree map and unique identifiers to selectively compress, read, and recompress the blocks of streamed data associated with each event. To prevent duplicate work in compressing the streamed data, compressed blocks are re-used where possible to support requests from the event client systems. Each new block includes a unique identifier defined by the event publishing system that generated the event, so that a previous version of the event in a compressed block can be replaced.
-
Citations
3 Claims
-
1. A non-transitory computer-readable medium having stored thereon computer-readable instructions that when executed by a computing device cause the computing device to:
-
receive a block of streamed data, wherein the block includes a value associated with an event and a unique identifier of the event; select a pre-allocated block of memory, wherein the pre-allocated block of memory includes one or more previously compressed blocks, wherein each of the one or more previously compressed blocks includes an associated value and a different unique identifier; compress the received block with the one or more previously compressed blocks to create a new compressed block; store the new compressed block in the selected pre-allocated block of memory, wherein a reference to the selected pre-allocated block of memory is stored in a tree map based on the unique identifier; receive a second block of streamed data, wherein the second block includes a second value associated with the event and the unique identifier of the event, wherein the second value is different from the value; identify the pre-allocated block of memory from the tree map using the unique identifier; read the received block and at least one of the one or more previously compressed blocks from the identified pre-allocated block of memory; select a second pre-allocated block of memory; compress the received second block with the at least one of the one or more previously compressed blocks to create a second new compressed block; store the second new compressed block in the selected second pre-allocated block of memory, wherein a reference to the selected second pre-allocated block of memory is stored in the tree map based on the unique identifier; receive a request for an update for the event based on the unique identifier from a requesting event client system; and send the stored, second new compressed block to the requesting event client system.
-
-
2. A computing device comprising:
-
a processor; and a computer-readable medium operably coupled to the processor, the computer-readable medium having computer-readable instructions stored thereon that, when executed by the processor, cause the computing device to receive a block of streamed data, wherein the block includes a value associated with an event and a unique identifier of the event; select a pre-allocated block of memory, wherein the pre-allocated block of memory includes one or more previously compressed blocks, wherein each of the one or more previously compressed blocks includes an associated value and a different unique identifier; compress the received block with the one or more previously compressed blocks to create a new compressed block; store the new compressed block in the selected pre-allocated block of memory, wherein a reference to the selected pre-allocated block of memory is stored in a tree map based on the unique identifier; receive a second block of streamed data, wherein the second block includes a second value associated with the event and the unique identifier of the event, wherein the second value is different from the value; identify the pre-allocated block of memory from the tree map using the unique identifier; read the received block and at least one of the one or more previously compressed blocks from the identified pre-allocated block of memory; select a second pre-allocated block of memory; compress the received second block with the at least one of the one or more previously compressed blocks to create a second new compressed block; store the second new compressed block in the selected second pre-allocated block of memory, wherein a reference to the selected second pre-allocated block of memory is stored in the tree map based on the unique identifier; receive a request for an update for the event based on the unique identifier from a requesting event client system; and send the stored, second new compressed block to the requesting event client system.
-
-
3. A method of serving data resources from a publishing system to a client system, the method comprising:
-
receiving a block of streamed data, wherein the block includes a value associated with an event and a unique identifier of the event; selecting, by a computing device, a pre-allocated block of memory, wherein the pre-allocated block of memory includes one or more previously compressed blocks, wherein each of the one or more previously compressed blocks includes an associated value and a different unique identifier; compressing, by the computing device, the received block with the one or more previously compressed blocks to create a new compressed block; storing the new compressed block in the selected pre-allocated block of memory, wherein a reference to the selected pre-allocated block of memory is stored in a tree map based on the unique identifier; receiving a second block of streamed data, wherein the second block includes a second value associated with the event and the unique identifier of the event, wherein the second value is different from the value; identifying, by the computing device, the pre-allocated block of memory from the tree map using the unique identifier; reading, by the computing device, the received block and at least one of the one or more previously compressed blocks from the identified pre-allocated block of memory; selecting, by the computing device a second pre-allocated block of memory; compressing, by the computing device, the received second block with the at least one of the one or more previously compressed blocks to create a second new compressed block; storing the second new compressed block in the selected second pre-allocated block of memory, wherein a reference to the selected second pre-allocated block of memory is stored in the tree map based on the unique identifier; receiving a request for an update for the event based on the unique identifier from a requesting event client system; and sending, by the computing device, the stored, second new compressed block to the requesting event client system.
-
Specification