1. A method of processing a plurality of discrete events, each discrete event comprising a plurality of independent sub-events, said method comprising the steps of: distributing each discrete event into one of a plurality of segments, each segment comprising a sequence of at least one discrete event to be processed; initiating each of said plurality of segments to execute concurrently on said at least one processor; for each segment, processing each discrete event contained within said segment sequentially; for each discrete event, processing each independent sub-event of said discrete event sequentially and then storing the results of said processing; monitoring each of said segments to detect failures; deactivating each segment for which a failure is detected; re-initializing each failed segment; and re-initiating each failed segment.