DOI: 10.4018/IJCAC.2018070105 International Journal of Cloud Applications and Computing Volume 8 • Issue 3 • July-September 2018 Copyright © 2018, IGI Global. Copying or distributing in print or electronic forms without written permission of IGI Global is prohibited. 60 An Efcient Data Replication Algorithm for Distributed Systems Sanjaya Kumar Panda, Veer Surendra Sai University of Technology, Burla, India Saswati Naik, Sambalpur University Institute of Information Technology, Burla, India ABSTRACT This article describes how data replication plays an important role in distributed systems. It primarily focuses on the redundancy of data at two or more nodes, to achieve both fault tolerance and improved performance. Therefore, many researchers have proposed various data replication algorithms to manage the redundancy of data. However, they have not considered the faults that are associated with the nodes, such as permanent, transient and intermittent. Moreover, they have not incorporated any recovery approach to rejoin the failed nodes. Therefore, the authors propose a data replication algorithm, called dynamic vote-based data replication (DVDR). The main contribution of DVDR is to consider all types of faults and rejoin the failed nodes. DVDR is based on dynamic vote assignment among the connected nodes, and referred as passive and non-hierarchical one. The authors perform rigorous analysis of DVDR and compare with an existing dynamic vote assignment algorithm. The result shows the efficacy of the proposed algorithm. KEywoRDS Data Replication, Distributed Systems, Dynamic Vote Assignment, Fault Tolerance, Non-Hierarchical, Passive, Recovery INTRoDUCTIoN In distributed systems, data replication is the process of storing multiple copies of data at different nodes (Tenzekhti, Day, & Ould-Khaoua, 2002; Wang, & Li, 2006). The primary objective of data replication is to increase the availability of data and fault tolerance. Moreover, if one of the nodes is failed due to some unavoidable reasons, then the data is accessed from other nodes. However, the major concern is to make the data consistent in each individual node (Jajodia, & Mutchler, 1990). In general, replication is of two types, namely active and passive. A replication is said to be active if the update request is processed at every node. It can be used for deterministic processes. On the other hand, passive replication processes an update request on a single node and propagates the update to the other nodes. It can be used for deterministic and nondeterministic processes (Deshpande, & Kamalapur, 2014). In distributed systems, a fault (or a failure) can disconnect the connected nodes (referred as a network) into two or more disconnected networks. A fault may be permanent, transient and intermittent (Koren, & Krishna, 2007; Panda, Khilar, & Mohapatra, 2013; Panda, Khilar, & Mohapatra, 2014; Mishra, & Panda, 2017; Panda, & Khilar, 2012; Panda, & Khilar, 2012; Bhoi, Panda, & Khilar, 2012). A permanent fault at a node reflects severe damage and disconnects the node from the network. A transient fault at a node occurs for a short duration of time. It disconnects the node from the network for some time. An intermittent fault at a node oscillates between active and inactive state. Here, active