Probabilistic technique for consistency checking cache entries
AssigneeAmazon Technologies, Inc.
InventorsHemant Madhav Bhanoo, Ozgun A. Erdogan, Tobias Holgers, Nevil A. Shah, Ryan J. Snodgrass
Life of this patent
Estimating the term…
Loading patent…
AssigneeAmazon Technologies, Inc.
InventorsHemant Madhav Bhanoo, Ozgun A. Erdogan, Tobias Holgers, Nevil A. Shah, Ryan J. Snodgrass
Estimating the term…
A facility for determining whether to consistency-check a cache entry is described. The facility randomly or pseudorandomly selects a value in a range. If the selected value satisfies a predetermined consistency-checking threshold within the range, the facility consistency-checks the entry, and may decide to propagate this knowledge to other cache managers. If, on the other hand, the selected value does not satisfy the consistency-checking threshold, the facility determines not to consistency-check the entry.
A computer-readable medium whose contents cause a computer system to perform a method for managing objects comprising:
A computer-readable medium whose contents cause a computing system to perform a method for managing objects comprising:
A computer-readable medium whose contents cause a computing system to perform a method for managing objects comprising:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
No references of this kind are recorded.
Storing data temporarily at an intermediate stage, e.g. caching: policies or rules for updating, deleting or replacing the stored data
Browsing optimisation, e.g. caching or content distillation: of access to content, e.g. by caching
Network services: provisioning of proxy services
Digital communication
Term ended 21 Aug 2026 (estimated)
The described technology is directed to the field of processing requests for data.
Caching generally refers to the local storage of data obtained from a remote source to streamline access to this data. FIG. 1 is a network diagram that shows a typical architecture for caching data. It shows a number of data provider nodes such as data providers 110, 120, and 130 that each provide data to a number of data consumer nodes. For example, data provider 110 provides data to consumers including consumers 112 and 113. Each data provider further has a local cache. For example, provider 110 has local cache 111. When a data provider receives a primary data request from one of its consumers, it first checks its local cache to see whether the primary data request can be satisfied from the cache. If so, the provider responds to the primary data request with a response that is based upon cache contents; otherwise, the provider (1) issues a secondary data request to an authoritative data source, (2) responds to the primary data request with a response that is based upon data provided by the data source in response to the secondary data request, and (3) stores the data provided by the data source in response to the secondary data request as an entry in its local cache for use to satisfy future primary data requests. In some cases (not shown), multiple providers may share the same cache. In some cases (not shown), a cache may manage itself, or may be managed by an entity other than the corresponding data provider.
As one example, each data consumer may be a web client requesting web pages or other resources from data providers that are web servers. Data sources may be central data stores or services that provide data that enables the web servers to construct web pages or other resources requested by web clients. Such an architecture employing local caching is described in U.S. patent application Ser. No. 11/177,206, filed on Jul. 8, 2005, which is hereby incorporated by reference in its entirety. Alternatively, data providers may be proxy servers or other intermediate caches—such as caches stored on the same computer system that the web client executes on—that are for one or more web clients and web servers.
FIG. 1 is a network diagram that shows a typical architecture for caching data.
FIG. 2 is a block diagram showing some of the components typically incorporated in at least some of the computer systems and other devices on which the facility executes.
FIG. 3 is a timeline diagram illustrating the operation of the facility.
A software facility for performing probabilistic cache entry consistency checking (“the facility”) is described. The facility permits two amounts of time to be established for each entry: a minimum lifetime specifying a minimum amount of time that the entry will be present in the cache and honored—unless explicitly invalidated—and a maximum lifetime specifying a maximum amount of time that the entry will be honored. If a primary data request that can be satisfied using a cache entry is made at a time before its minimum lifetime has expired, then the facility uses the cache entry to satisfy the primary data request. If a primary data request that can be satisfied using a cache entry is made at a time after its maximum lifetime has expired, then the facility issues a secondary data request to a data source to satisfy the primary data request and updates the cache to reflect the result of the secondary data request. If, however, a primary data request that can be satisfied using a cache entry is made at a time after its minimum lifetime has expired but before its maximum lifetime has been reached, then the facility determines probabilistically whether to use the cache entry or to consistency-check the cached object by issuing a secondary data request. In particular, the facility generates a random or pseudorandom number, and compares it to a probability threshold determined for the object. If the random number is above the probability threshold, the facility uses the cache entry, whereas if the random number is not above the probability threshold, the facility issues a secondary data request to a data source to satisfy the primary data request and updates the cache to reflect the result of the secondary data request.
In some embodiments, where the facility issues a new secondary data request to satisfy the primary data request, the facility compares the new secondary data result to the cached result. If these differ, the facility notifies the managers of other caches to invalidate any entries they have for corresponding objects. In some embodiments, the facility includes the new result in the notification. In some embodiments, the facility includes in the notification a digest for the invalidated cache entry that permits receiving cache managers to efficiently determine whether the sender is invalidating the value it has cached for the object or a different one.
By managing caches in some or all of the ways described above, embodiments of the facility provide good cache performance without consuming an excessive level of resources.