Claims
- 1. A method for providing persistent caching of messages delivered via a publish-subscribe network, comprising the steps of:
(a) receiving, at a first node, a message having data via the network; (b) time-marking the data; (c) caching the data in a cache memory at the first node; and (d) routing the message to a second node using content-based routing.
- 2. The method of claim 1, further comprising the step of:
(e) repeating steps (a) through (d) at the second node, wherein the data is cached in a cache memory at the second node.
- 3. The method of claim 1, further comprising the steps of:
determining if a time granularity G has passed since the caching step (c); and moving the cached data from the cache memory to a disk based on a determination that G has passed.
- 4. The method of claim 1, further comprising the steps of:
determining if a persistent time-frame T has passed since the caching step (c) for a last block of the cached data; and deleting the cached data based on a determination that T has passed for the last block of the cached data.
- 5. The method of claim 4, wherein T is set based on a channel with which the data is associated.
- 6. The method of claim 1, wherein the first node comprises an intelligent router and the receiving step (a) receives the message at the intelligent router.
- 7. The method of claim 6, wherein the intelligent router includes a cache manager and the cache manager performs steps (b) and (c).
- 8. The method of claim 1, wherein the second node comprises a subscriber machine.
- 9. A router for providing persistent caching of messages delivered via a publish-subscribe network, comprising modules for executing the method of claim 1.
- 10. A publish-subscribe network for providing persistent caching of messages, comprising nodes that include modules for executing the method of claim 2.
- 11. A computer-readable medium comprising instructions for executing the method of claim 1.
- 12. A method for providing persistent caching of messages delivered via a publish-subscribe network, comprising the steps of:
receiving a message having data via the publish-subscribe network; time-marking the data; caching the data in a cache memory; determining if a time granularity G has passed since the caching step; moving the cached data to a disk based on a determination that G has passed; determining if a persistent time-frame T has passed since the caching step for a last block of the cached data; and deleting the cached data from the disk based on a determination that T has passed for the last block of the cached data.
- 13. The method of claim 12, further comprising the step of determining whether a request for the cached data has been received.
- 14. The method of claim 13, wherein the request for the cached data is received from a user machine.
- 15. The method of claim 13, further comprising retrieving the cached data based on a determination that a request for the cached data has been received.
- 16. The method of claim 15, wherein the retrieving step comprises invoking an upstream cache and retrieving the cached data from the upstream cache.
- 17. The method of claim 16, further comprising performing duplicate suppression on the cached data retrieved from the upstream cache.
- 18. The method of claim 16, wherein the retrieving step obtains a listing of upstream caches from a user machine agent.
- 19. The method of claim 15, further comprising the step of transferring the cached data to a backbone router for routing to a user machine.
- 20. The method of claim 12, further comprising the step of indexing the cached data.
- 21. The method of claim 20, wherein the indexing step indexes the cached data by channel ID, subjects and/or time stamps.
- 22. The method of claim 12, further comprising the steps of performing the receiving, time-marking and caching steps at an upstream routing node.
- 23. The method of claim 12, further comprising the step of repeating the receiving step.
- 24. A router for providing persistent caching of messages delivered via a publish-subscribe network, comprising modules for executing the method of claim 12.
- 25. A publish-subscribe network for providing persistent caching of messages, comprising a first node and a second node, wherein the first node is upstream from the second node and the first node and the second node each include modules for executing the method of claim 12.
- 26. A computer-readable medium comprising instructions for executing the method of claim 12.
- 27. A method for providing persistent caching of messages delivered via a publish-subscribe subscribe network, comprising the steps of:
(a) receiving a plurality of messages having data via the network at a plurality of upstream nodes; (b) time-marking the data; (c) caching the data in cache memories at one or more of the plurality of upstream nodes; (d) routing the messages to an edge node using content-based routing; and, (e) repeating steps (a) through (c) at the edge node, wherein the data is cached in a cache memory at the second node.
- 28. The method of claim 27, further comprising the step of routing at least one of the messages from the edge node to a subscriber machine using content-based routing.
- 29. The method of claim 28, further comprising the step of the edge node receiving a request for cached data from the subscriber machine.
- 30. The method of claim 29, further comprising the steps of:
determining a time-amount of cached data to retrieve in response to the request; and, retrieving the determined time-amount of cached data based on the time-mark of the cached data.
- 31. The method of claim 30, wherein the time-amount is determined from the request, wherein the request includes a requested time-amount of cached data to be retrieved.
- 32. The method of claim 30, wherein the time-amount is determined by calculating a disconnected time for the subscriber machine, wherein the disconnected time is the amount of time that the subscriber machine was disconnected from the publish-subscribe network.
- 33. The method of claim 29, further comprising the step of determining that at least some requested cached data is stored at one or more of the plurality of upstream nodes.
- 34. The method of claim 33, further comprising the step of the edge node receiving a list of upstream nodes from the subscriber machine.
- 35. The method of claim 33, further comprising the steps of:
communicating the request for cached data to one or more of the plurality of upstream nodes; retrieving requested cached data from the one or more of the plurality of upstream nodes; and, routing the retrieved data to the subscriber machine.
- 36. The method of claim 35, further comprising the step of performing duplicate suppression on the retrieved data.
- 37. A publish-subscribe network for providing persistent caching of messages, comprising a plurality of upstream nodes and an edge node, wherein the nodes include modules for executing the method of claim 27.
REFERENCE TO RELATED APPLICATIONS
[0001] The present application incorporates by reference and claims the priority of U.S. Provisional Application No. 60/369,832, entitled “Method and Apparatus for Implementing Persistent and Reliable Message Delivery,” filed Apr. 3, 2002, and U.S. Provisional Application No. 60/447,782, entitled “Propagating Content Filters, Content-Based Packet Routing Using Compact Filter Storage and Off-Line Pre-computation, Reliable Publishing and Subscribing, Implementing Persistent and Reliable Message Delivery, and Implementing Query-Response Interactions By Mapping Data Advertisements as Subscriptions and Queries as Notifications in a Publish-Subscribe Network,” filed Feb. 19, 2003. The present application is also a Continuation-in-Part (CIP) of U.S. patent application Ser. No. 10/199,356, entitled “Packet Routing Via Payload Inspection,” U.S. patent application Ser. No. 10/199,368, entitled “Method And Apparatus For Content-Based Routing And Filtering At Routers Using Channels,” U.S. patent application Ser. No. 10/199,439, entitled “Method For Sending And Receiving A Boolean Function Over A Network”, U.S. patent application Ser. No. 10/199,369, entitled “Method For Storing Boolean Functions To Enable Evaluation, Modification, Reuse, And Delivery Over A Network,” and U.S. patent application Ser. No. 10/199,388, entitled “Efficient Implementation of Wildcard Matching On Variable-Sized Fields In Connect-Based Routing,” all filed Jul. 19, 2002 and all hereby incorporated by reference.
[0002] The present application also incorporates by reference the following U.S. patent applications, also CIPs of the above-referenced applications, filed herewith: application Ser. No. ______, entitled “Method and Apparatus for Reliable Publishing and Subscribing in an Unreliable Network,” application Ser. No. ______, entitled “Method and Apparatus for Propagating Content Filters For a Publish-Subscribe Network,” application Ser. No. ______, entitled “Method and Apparatus for Content-Based Packet Routing Using Compact Filter Storage and Off-Line Pre-computation,” and, application Ser. No. ______, entitled “Method and Apparatus for Implementing Query-Response Interactions in a Publish-Subscribe Network.”
Provisional Applications (2)
|
Number |
Date |
Country |
|
60369832 |
Apr 2002 |
US |
|
60447782 |
Feb 2003 |
US |
Continuation in Parts (5)
|
Number |
Date |
Country |
Parent |
10199356 |
Jul 2002 |
US |
Child |
10400462 |
Mar 2003 |
US |
Parent |
10199368 |
Jul 2002 |
US |
Child |
10400462 |
Mar 2003 |
US |
Parent |
10199439 |
Jul 2002 |
US |
Child |
10400462 |
Mar 2003 |
US |
Parent |
10199369 |
Jul 2002 |
US |
Child |
10400462 |
Mar 2003 |
US |
Parent |
10199388 |
Jul 2002 |
US |
Child |
10400462 |
Mar 2003 |
US |