Scalable billing with de-duplication in aggregator
AssigneeMicrosoft Corporation
InventorsMalcolm Erik Pearson, Matthew Charles Setzer
Life of this patent
Estimating the term…
Abstract
Scalable handling of billing events that affect one or more accounts. A computing system partitions received events into a number of channels, perhaps by account identifier. The channels receive the events, process the events, and forwards the events to an aggregator to allow the events to be aggregated by account to allow for easier computation of a bill. The aggregator also performs de-duplication of events to help reduce the risk of double billing.
Claims13
A method, implemented at a computing system that includes one or more processors, for handling a plurality of events, the method comprising:
- an act of the computing system receiving a plurality of events in the form of event messages, each of at least some of the events affecting one or more of a plurality of accounts;
- an act of the computing system using the one or more processors to partition each of the plurality of events into a corresponding one of a plurality of channels, such that each of the plurality of channels receives a subset of the plurality of events, at least a particular one of the plurality of channels being configured to:
- de-duplicate events by:
- identifying any duplicate events within the corresponding subset of the plurality of events that are received at the particular channel based on a first de-duplication scheme that includes checking first event data;
- and
- discarding any identified duplicate events, such that the corresponding subset of the plurality of events is a subset of original events only;
- and
- dispatch each original event in the subset of original events to a corresponding aggregator;
- and
- an act of the corresponding aggregator processing the events received from the particular channel, including:
- performing an additional de-duplicating of the events received from the particular channel to remove any duplicate events introduced during the dispatch, the additional de-duplicating being performed with a different de-duplication scheme than the first de-duplication scheme and which checks different event data than the first event data that is checked in the first de-duplication scheme;
- and
- aggregating the events received from the particular channel.
A computer program product comprising one or more computer storage devices having stored thereon computer-executable instructions that, when executed by one or more processors of a computer system, cause the computer system to carry out a method for handling a plurality of events, including the following:
- receiving a plurality of events in the form of event messages, each of at least some of the events affecting one or more of a plurality of accounts;
- partitioning each of the plurality of events into a plurality of channels, each of the plurality of events into a corresponding one of a plurality of channels, such that each of the plurality of channels receives a subset of the plurality of events, at least a particular one of the plurality of channels being configured to:
- de-duplicate events by:
- identifying any duplicate events within the corresponding subset of the plurality of events that are received at the particular channel based on a first de-duplication scheme that includes checking first event data;
- and
- discarding any identified duplicate events, such that the corresponding subset of the plurality of events is a subset of original events only;
- and
- dispatch each original event in the subset of original events to a corresponding aggregator;
- and
- an act of the corresponding aggregator processing the events received from the particular channel, including:
- performing an additional de-duplicating of the events received from the particular channel to remove any duplicate events introduced during the dispatch, the additional de-duplicating being performed with a different de-duplication scheme than the first de-duplication scheme and which checks different event data than the first event data that is checked in the first de-duplication scheme;
- and
- aggregating the events received from the particular channel.
A computer system, comprising:
- one or more processors;
- system memory;
- and
- one or more computer storage devices having stored thereon computer-executable instructions representing the following:
- a routing module that is configured to:
- receive a plurality of events in the form of event messages, each of at least some of the events affecting one or more of a plurality of accounts;
- and
- partition each of the plurality of events one of a plurality of channels;
- the plurality of channels, each of the plurality of channels being configured to receive a subset of the plurality of events, and to:
- de-duplicate events by:
- identifying any duplicate events within the corresponding subset of the plurality of events that are received at the particular channel based on a first de-duplication scheme that includes checking first event data;
- and
- discarding any identified duplicate events, such that the corresponding subset of the plurality of events is a subset of original events only;
- and
- dispatch each original event in the subset of original events to a corresponding aggregator;
- and
- an act of the corresponding aggregator processing the events received from the particular channel, including:
- performing an additional de-duplicating of the events received from the particular channel to remove any duplicate events introduced during the dispatch, the additional de-duplicating being performed with a different de-duplication scheme than the first de-duplication scheme and which checks different event data than the first event data that is checked in the first de-duplication scheme;
- and
- aggregating the events received from the particular channel.
Dependencies are inferred from the claim text.