Article Preview
TopIntroduction
An Internet distributed system (IDS) is the collection of servers and clients that are connected together to share various resources and computation (Nishida, & Nguyen, 2013). The computers (e.g., clients and servers) are interacting with each other via request-response messages. A client is a computer or a workstation which obtains information, resources and applications from a server. On the other hand, a server is a computer or workstation that provides various services to the clients. Note that a client may request resources to more than one server in order to fulfil its requirements. Similarly, a server may provide resources to more than one client at the same time. However, it is subjected to the availability of resources. It is noteworthy to mention that the clients and servers must have a communicating language and a set of rules to understand the received information. As the number of client requests is increasing drastically, it is very much challenging to assign the requests to the servers in order to fulfil the requirements. However, the optimal client-server assignment is a well-known NP-Hard problem for Internet distributed system (Nishida, & Nguyen, 2013; Shi, & Malik, 2000; Fei, Ammar, & Zegura, 2002; Ba, Nguyen, Bose, & Tran, 2014).
In IDS, the clients and servers are very frequently interacting each other to exchange information like inter-process communication. The interactions may be disrupted due to an unwanted fault (or failure) in the component of the system or connection (Al-Jaroodi, Mohamed, & Nuaimi, 2015; Javadi, Kondo, Losup and Epema, 2013; Chen, Jia, & Zhou, 2014; Zhou, 1996; Tenzekhti, Day, & Ould-Khaoua, 2002; Panda, Khilar, & Mohapatra, 2014; Panda, Khilar, & Mohapatra, 2015). Moreover, these failures are categorized into four different types in IDS. They are server failure, client failure, client-server failure and connection failure. In server failure, a participated server in IDS is failed due to faulty hardware and software. Therefore, the loads of the failed server need to be transferred to other servers to fulfil the client requirements. In client failure, a client is failed due to its faulty component. Therefore, the loads of the failed client may be taken over by a backup client and the loads are redistributed among the servers. In client-server failure, both client and server may be failed at the same time. As a result, the loads of the corresponding client and server are redistributed. In connection failure, the communication between client and server is failed. Here, the loads of the failed connections are redistributed. Therefore, the main challenge is to address the above failures and develop efficient algorithms to tolerate such failures by balancing the loads among the servers.