Event queuing and distribution system
AssigneeRackspace US, Inc.
InventorKurt Evan Griffiths
Life of this patent
Estimating the term…
Abstract
A REST-based event distribution system is described, with particular applicability to the distribution of distributed filesystem notifications over a high-latency best-effort network such as the Internet. In one embodiment, event channels are mapped to URL spaces and created and distributed through the use of HTTP POST and GET requests. The system is optimized for short polling by clients; an event history is maintained to buffer messages and maintain the idempotence of requests. In another embodiment, the events are registered as a SIP event pack allowing for the distribution of filesystem events.
Claims20
An event distribution system, the system comprising:
- a server configured to respond to event requests via a synchronous client-server protocol, the server further including:
- a backing store configured to store an event associated with a first channel identifier and to allow subsequent retrieval of the event using the first channel identifier, wherein the event is associated with an event identifier;
- a communications module operable to receive event requests and send responses, wherein the communications module receives from a client an event request including a last seen event identifier that indicates a most recent event consumed by the client;
- an event filtering system operable to identify a number of clients active on the first channel identifier and further to evaluate, modify, and block event requests and responses, wherein the event filtering system modifies one or more event requests based on the number of clients active on the first channel identifier, and wherein the event filtering system sends a response including all events that have occurred in the first channel since the event associated with the last seen event identifier;
- and
- an event manager coordinating the use of the backing store, communications module, and event filtering system;
- wherein the event requests represent interactions with a distributed file system storage system.
A method comprising:
- receiving at a server an event publishing request, the event publishing request including an event publishing verb and a first subject, wherein the verb describes a publishing action based on the event publishing request, and wherein the first subject includes a first event, the first event further including a first channel identifier, a first resource identifier and a first associated action;
- receiving a first event notification request, the first event notification request including the first channel identifier;
- performing at the server a first filtering operation to obtain a first filtering result;
- if indicated by the first filtering result, sending a first response, the first response including a representation of the first event, the representation of the first event including the first resource identifier and a representation of the first associated action, and a set of resources is manipulated through the representation of the first associated action;
- receiving a second event notification request, the second event notification request including the first channel identifier;
- performing at the server a second filtering operation to obtain a second filtering result;
- if indicated by the second filtering result, sending a second response including a representation of the first event, wherein the representation of the first event in the second response is substantially identical to the first response;
- wherein the first resource identifier is representative of a file system object stored in a file space, and the first associated action describes an interaction with the file system object, and wherein when different clients interact with the file space and have overlapping requests for modification to the file system object, an event notification frequency is modified.
A non-transient computer readable medium containing executable instructions, which when executed on a processor:
- receive at a server a request formatted according to a client-server protocol, the request addressed to a channel identifier and including a set of parameters;
- evaluate the set of parameters to determine a response, wherein:
- in a first possible response, the set of parameters define a new event associated with the channel identifier, and the executable instructions are operable to store a representation of event parameters on the computer-readable medium and return a response indicating successful storage of the event;
- in a second possible response, the set of parameters are interpreted to refer to one or more existing events associated with the channel identifier and the set of parameters include a last seen event identifier that indicates a most recent event consumed by a client, wherein the one or more existing events published to a channel associated with the channel identifier subsequent to the last seen event identifier are selected, and the executable instructions are operable to load a representation of the one or more existing events, and include a representation of the one or more existing events in a response, wherein the second possible response includes all events that have occurred in the channel since the event associated with the last seen event identifier;
- and
- in a third possible response, the set of parameters are interpreted to refer to a nonexisting event associated with the channel identifier, and the executable instructions are operable to send an empty response;
- wherein the event parameters are a name of a file system object and an action associated with the named file system object.
Dependencies are inferred from the claim text.