Maintaining Availability of Replicated Data in a Dynamic Failure Environment