1. A computer implemented method for providing failover and fault tolerance, comprising: maintaining a first replica in a partition for storing state information; maintaining an engine node that writes and reads state information to and from the first replica and uses the state information to process messages; detecting that the first replica has failed by the engine node; reporting the failure to a second replica in the partition; and updating a view of the partition by the second replica in order to reflect the failure of the first replica.