Replication in interactive distributed applications: abstractions, algorithms and evaluation