Data Replication In Distributed Systems