1. A computer implemented method for providing failover and fault tolerance, comprising: maintaining a replica for storing state information; maintaining an engine node that writes and reads state information to and from the replica and uses the state information to process messages; periodically polling the replica by the engine node; failing to poll by the engine node for a specified period of time; and determining that the engine node has failed by the replica upon expiration of the specified period of time; wherein the engine node periodically polls the replica for a set of expired timer objects that need to be processed by the engine node.