Method for guaranteeing processing of messages in a continuous processing system
First Claim
1. A method for ensuring that messages in a distributed, continuous processing system are processed in their entirety, even in the event of a system failure, the method comprising:
- pushing messages through a set of connected primitives that process the messages in accordance with an execution plan, where the primitives are distributed across a plurality of servers and where the messages are pushed through in accordance with protocol that does not permit unprocessed messages to be permanently lost and that enables messages to be identified uniquely over a connection,wherein at least one primitive is associated with an input queue and an output queue, each input queue receiving an inbound message and transferring the inbound message to said at least one primitive, and each output queue;
sending an outbound message to either a different primitive or a system output, andbuffering the outbound message in the output queue associated with the at least one primitive until the sending of the outbound message is fully completed; and
for each primitive having a state, updating the state of the primitive after fully processing each received message;
for each primitive, saving in persistent storage, at select checkpoints, any input message queue, output message queue, and state associated with such primitive; and
if a failure occurs on a server in the system, restoring each primitive on such server to the input message queue, output message queue, and state, if any, saved for the primitive at the last applicable checkpoint for the primitive, where the primitive continues processing starting from such checkpoint.
4 Assignments
0 Petitions
Accused Products
Abstract
A method for processing messages ensures that every message that enters a continuous processing system is fully processed in its entirety, even in the event of a failure within the system. Messages are pushed through an execution plan that includes a set of connected “primitives” that process the message, where the primitives may be distributed across a group of servers. Messages are pushed through in accordance with a protocol that does not permit unprocessed messages to be permanently lost as they travel from input sources, between primitives, and to output sources within the execution plan. The input queue, output queue, and state (if any) associated with each primitive are saved in persistent storage at select checkpoints. If a failure occurs on a server, the server, after it starts up again, restores the primitives on that server to the input queues, output queues, and states saved at the last applicable checkpoint.
19 Citations
22 Claims
-
1. A method for ensuring that messages in a distributed, continuous processing system are processed in their entirety, even in the event of a system failure, the method comprising:
-
pushing messages through a set of connected primitives that process the messages in accordance with an execution plan, where the primitives are distributed across a plurality of servers and where the messages are pushed through in accordance with protocol that does not permit unprocessed messages to be permanently lost and that enables messages to be identified uniquely over a connection, wherein at least one primitive is associated with an input queue and an output queue, each input queue receiving an inbound message and transferring the inbound message to said at least one primitive, and each output queue; sending an outbound message to either a different primitive or a system output, and buffering the outbound message in the output queue associated with the at least one primitive until the sending of the outbound message is fully completed; and for each primitive having a state, updating the state of the primitive after fully processing each received message; for each primitive, saving in persistent storage, at select checkpoints, any input message queue, output message queue, and state associated with such primitive; and if a failure occurs on a server in the system, restoring each primitive on such server to the input message queue, output message queue, and state, if any, saved for the primitive at the last applicable checkpoint for the primitive, where the primitive continues processing starting from such checkpoint. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A system for ensuring that messages in a distributed, continuous processing system are processed in their entirety, comprising:
-
a continuous processing engine (CPE); and a plurality of servers, each server comprising an input queue, a processor, an output queue, a storage and a primitive having a state, wherein each primitive is associated with the input queue, the processor, the output queue and the storage, and wherein; the input queue is configured to, in accordance with an execution plan, receive an input message, and buffer the input message until the input message is processed, the processor is configured to, in accordance with the execution plan, receive the input message from the input queue, process the input message, and update the state of the primitive after the input message is fully processed, the output queue is configured to, in accordance with the execution plan, receive an output message from the processor and buffer the output message for transfer to a system output or another primitive, and the storage is configured to store contents, at select checkpoints, of the input queue, output queue, and the state of the primitive; and wherein the continuous processing engine (CPE) is configured to; manage pushing through messages by each of the primitives in accordance with the execution plan, the execution plan having a protocol that does not permit unprocessed messages to be permanently lost, and enable messages to be identified uniquely over a connection wherein if a failure occurs on a server in the plurality of servers, each primitive associated with the failed server is restored to the input message queue, output message queue, and state, if any, saved for the primitive at a last applicable checkpoint for the primitive, wherein the restored primitive is configured to continue processing starting from the last applicable checkpoint. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
-
Specification