An Adaptive Replication Algorithm in P2P File Systems ... - Ben Sisson

2 downloads 0 Views 136KB Size Report
Gnutella and Kazaa, are based on designs in which file names are indexed into a hierarchy in the network: nodes copy their filename list to super nodes (ultra ...
An Adaptive Replication Algorithm in P2P File Systems with Unreliable Nodes R˘azvan Andonie1,2 , Luke Magill3 , James Schwing1 , Ben Sisson1 , and Brandon Wysocki1 1 Computer Science Department, Central Washington University, Ellensburg, WA, USA 2 Electronics and Computers Department, Transylvania University of Bra¸sov, Romania 3 Intelius Inc., Bellevue, WA, USA Abstract— The paper1 focuses on distributed file systems in P2P networks. We introduce a novel file replication scheme which is adaptive, reacting to changes in the patterns of access to the file system by dynamically creating or deleting replicas. Replication is used to increase data availability in the presence of site or communication failures and to decrease retrieval costs by local access if possible. Our system is completely decentralized and nodes can be removed/added dynamically. We also propose an overlay architecture for file search. This architecture is structured, but also based on random walk. Our system has a mobile agent which performs dynamic load-balancing. This agent is event driven and circulates in the network to find and “destroy” the least important files and thus limit the proliferation of superfluous replicas. We have implemented our method at TCP/IP sockets level. Keywords: File replication, P2P systems, mobile agents, dynamic load balancing

1. Introduction The entire body of P2P research can be divided into four groups: search, storage, security and applications [1]. In our paper, we focus on storage and search of replicated files in P2P networks. We start by introducing the context and providing an overview of our contribution.

1.1 Replication Efficient data sharing in P2P systems is complicated by erratic node failure, unreliable network connectivity and limited bandwidth. Replicating data on multiple nodes can improve availability and response time. Replication improves availability by allowing access to the data even when some of the replicas are unavailable. It also improves performance by the following: i) reducing latency, since users can access nearby replicas, thus avoiding remote network access; and ii) increasing throughput, since multiple computers can serve the data simultaneously. Replication management in distributed file systems concerns the decision of when and where to allocate physical copies of files and when and how to update them to maintain an acceptable degree of 1 Authors

are listed in alphabetical order.

mutual consistency. In this paper, we focus on adaptive file placement, in which each node automatically moves data and establishes copies of data at different nodes in order to adjust the file placement to the current demand. In a distributed file system, there are two essential aspects for a replica management policy to decide: the replication degree and the allocation of replicas on different nodes. Depending on the moment at which decisions are taken, there are two types of replication policies: static and dynamic [2]. A static replication policy decides the replication degree and the allocation of replicas at the moment when the file enters the system, and this decision will not change during the lifetime of the file. This static file assignment scheme has been extensively studied [3]. In a dynamic replication policy, both the replica degree and the allocation of the replicas can change during the lifetime of the file according to the current situation, in order to provide a better system performance. In a distributed dynamic replication policy, a node makes its decision of replica scheme individually, based on its local information. Distributed replication strategies respond faster to the changes of the file access pattern and have a lower network communication overhead than centralized policies [4].

1.2 P2P search methods An overview of search methods in P2P networks can be found in [1]. These methods are determined by the network topology. Highly structured P2P systems like CHORD and CAN use precise placement algorithms to achieve log N performance bound, where N is the number of nodes in the network [5]. However, these networks have a limited ability to operate in presence of extremely unreliable nodes. In an unstructured network, the obvious search mechanism is plain random walk. Bio-inspired random search methods for unstructured networks have been recently proposed [5], [6]. The difference between structured and unstructured is vague. Most P2P designs today assume some structure. For example, two popular unstructured file-sharing applications, Gnutella and Kazaa, are based on designs in which file names are indexed into a hierarchy in the network: nodes copy their filename list to super nodes (ultra peers). Queries

are flooded across as many nodes on the root level as is feasible, and these nodes may forward queries on to their children in the hierarchy. One complaint with this architecture is its lack of robustness to failure: if a node high in the hierarchy fails, its children are unreachable until the network readjusts its hierarchy. Another common complaint is that in practice flooding must be limited to a small radius around the query site, sacrificing recall [7]. A common structured routing approach is based on Distributed Hash Tables (DHTs). DHTs assign values (logical IDs) to machines on a network, and allow packets to be routed by value to whichever machine is currently responsible for that value. Overnet is a deployed file sharing system that uses this scheme. Most DHTs were invented by cleverly embedding a graph of small degree, small diameter and non-trivial min-cut (to allow multiple alternate routes between peers and provide robustness) into some metric space that permits greedy routing decisions [7]. Some DHT architectures are based on special graphs, with well-studied mathematical properties: Plaxton Trees, Chords, Tori, Butterflies, de Bruijin Graphs, and Skip Graphs [8], [1]. Another design used structured search for rare items and unstructured search for massively replicated items [9]. A structured network has better response time (less hops) for rare items, whereas a less structured network is more reliable in case of node failures. There is no consensus on the best P2P design for searching [7], [9].

1.3 Our contribution Our paper describes a novel dynamic file replication policy. File replicas are created dynamically, on nodes which frequently access these objects, in order to minimize internode communications and response time. Conversely, these replicas are deleted if their priority degrades. New is the fact that the system insures a minimum number of replicas, thus making it resistant to node failures. In addition, nodes can be dynamically added. They are then populated with files as the need arises. The system is completely decentralized in a P2P network. We also propose an overlay architecture for DHT type search. This architecture is a combination of structured and unstructured routing methods. Our system has a dynamic load-balancing scheme which is based on a mobile agent. This agent is event driven and circulates in the network to find and “destroy” the least important files and thus limit the proliferation of superfluous replicas.

2. Related Work We aim to focus in the following on file replication strategies.

2.1 Work related to file replication in computer networks There are several possible replication models considered in the literature [10], [11], [4], [12], [13], [14], [15], [16]. Some of these are dynamic. The problem of finding an optimal replication scheme in a general network (i.e., a replication scheme that has a minimum cost for a given read-write pattern), has been shown to be NP-complete for the static case [17], [18], [4], [16]. For this reason it is unlikely to find an efficient and convergent-optimal dynamic allocation algorithm. One of the most simple distributed dynamic file replication scheme is to maintain, on each node, a counter for each accessed file [19]. When the counter reaches a certain value, the node creates a new replica or deletes the current replica. In [2], a node in the network scans the network periodically and, depending on the access pattern of files, it dynamically creates or deletes replicas. In [20], a distributed dynamic frequency detecting replica management (FDRM) mechanism is implemented. Every node makes its own decision independently to add/delete file replicas. The FDSM scans replica periodically, and the interval of periodicity is variable, according to the access frequency of the replica. A few attempts have been made to provide general purpose dynamic distributed swarm-type systems on which distributed dynamic data/file replication schemes can be implemented [21], [22]. Mobile agents that mimic the behavior of biological processes can travel across the network to satisfy the user requests and perform some dynamic loadbalancing. In previous work [23], [24], we have introduced a swarmtype middle ware platform which performs a dynamic, eventdriven, distributed load balancing. From each node, a swarm of agents move objects to the other nodes, performing the load balancing. There is no central node and no single agent is essential, since data is replicated. The system is eventdriven: every node of the network is capable of producing new events. Nodes can be added and eliminated dynamically.

2.2 Replication in P2P networks The file replication approaches in [19], [2], [20] refer to network architectures but not to large scale P2P systems. For instance, in [19] and also in our previous work [23], [24], in case one replica is not present, the request is broadcasts to all other nodes in the system. This may create congestion in large P2P networks. What is different in a P2P network than in a computer network? A P2P network can have many millions of nodes (Skype, Gnutella, Napster, LimeWire, Kazaa, Freenet). It is not practical to broadcast to all nodes in the network, but only to some neighbors. In addition, nodes in a P2P network can be removed/added at any time. File replication in P2P networks has been discussed by several authors. Ranganathan et al. [25] present various

replication strategies. Allcock et al. [26] developed a replica management service using the building blocks of Globus Toolkit. Cohen and Shenker [27] considered assigning replicas in an unstructured P2P system, focusing on minimizing the expected search size of the search queries. In [28], the authors proposed adaptive algorithms for replicating and replacing files as a function of evolving file popularity to maximize the probability of finding the file within the community such as a LAN. Their algorithms were based on the structured P2P system. A dynamic replication scheme is presented in [29]. Nodes are randomly chosen to start the queries. For the search method, 32-walker random walk is used. After a successful search, replicas are randomly replicated along the path between the requester and the provider. The result of this replication scheme is compared to the Freenet path replication scheme, where replicas are created at all nodes along the path between the requester node and the provider node. A random deletion scheme is used to reduce the number of replicas. Another dynamic replication scheme is introduced in [25]. In this case, the replica management determines both the number of replicas created and their location, in order to optimize some cost function. No search mechanism is proposed in proposed. Nodes join and leave the network with a specified probability. The authors do not specify how the method should be implemented. Gopalakrishnan et al. [30] described an adaptive replication protocol that maintains low access latencies and good load balance. Their implementation is based on the simulator used in the Chord project (www.pdos.lcs.mit.edu/chord/). Chord is a peer-to-peer lookup algorithm which allows a distributed set of participants to agree on a single node as a rendezvous point for a given key, without any central coordination. In particular, it provides a distributed evaluation of the successor (ID) function: given the identifier of a key ID, the successor function returns the address of the node whose identifier most closely follows ID in a circular identifier space. The adaptive replication of keyword algorithm [31] is defined on DHT overlay networks. The number of replicas is adaptive and the replicas have states. These states are updated such that each each replica knows the existent number of replicas in the system. Since all replicas share this global information, it is easy to add/remove replicas. However, the authors do not discuss a critical aspect: how the states are updated. This is assumed to be handled by the overlay network.

2.3 Relation to our present work Our work considers dynamic file replication. This makes our work different than static replication (e.g., uniform, proportional) schemes [27], were optimal replication is the result of a mathematical optimization problem.

In our work, the P2P network is supposed to be highly scalable and adaptive. Nodes can be added/removed dynamically, which is not the case in [29]. In our replication strategy, at most r replicas of each file exist. Thus, a maximum of r − 1 node can be safely removed from the network. This strategy is new, and can be found in our previous work [23], [24], in the context of distributed replicated databases. Compared to [25], [31], our file replication system is not simulated, but implemented on a true (but small) network, and we also describe a search mechanism. Our new search strategy is structured, since we use an overlay network. However, the dynamic addition/removal of nodes in the network produces randomizes connections in the overlay network. Therefore, our search scheme is a combination between k-walker random walk and a structured network. Our implementation is realized at the TCP/IP level and we do not rely on a middle-layer platform, like [30]. In contrast to [30], we introduce a search method, address the problem of nodes dynamically joining/leaving the system, and we also discuss the replica proliferation problem.

3. Our architecture: adding / removing nodes Our network has two primary objectives: it must be simple and it must be capable of a network-wide broadcast. Our initial architecture is the well-known double-loop family of networks [32], which have highly structured topology. However, because of the random nature of node addition/removal, the overlay network will have, in our case, a mixture of structured and unstructured topology. A typical double-loop network is characterized by the lengths of its chords. For example, let 1 and s be the given chord lengths, where a given node i is connected to four other nodes i ± 1 and i ± s. Due to the dynamic addition and deletion of nodes, our network does not attempt to maintain a fixed chord length in the second loop. Our network is constructed as a series of nodes which send messages to each other using TCP/IP sockets. In what follows, the loops are labeled A and B respectively. Two nodes are referred to as neighbors if they are neighbors either on loop A or loop B. The remainder of the section describes the process for dynamically adding and deleting nodes from the network. Consider first the addition of a node to the network. To join a network of peers, a new node randomly selects a node in loop A that is already connected to the network and requests and updates a list of that node’s neighbors. The neighbor-list sent from the connected node to the joining node contains information such as: the IP-address, the open socket for each of its four neighbors, and the name of the loop on which they reside. Once it gets the list of neighbors, the joining node will randomly select between the two neighbors on loop A. The

joining node then requests that the two selected nodes break connection with each other and forge new connections with the joining node instead. After joining loop A, the joining node repeats the process to join loop B. Fig. 1a demonstrates this process. When the network is starting up, a special process is used to insure the proper development of loops A and B. Fig. 1b demonstrates this process as nodes A, B and C join the network. Not surprisingly, the death of a node is handled in the opposite way. When a node dies, the nodes on all sides of it will connect with each other, bridging the gap. For example, suppose we have three nodes on loop A called X, Y, and Z, where X and Z are both neighbors of Y along loop A. If the node Y dies, X and Z will connect with each other, thereby keeping the continuity of loop A. Node Y will also have two neighbors in loop B which will reconnect in the same way. In order to insure this reconnection mechanism is possible, each node must keep track of not only its neighbors, but some of its neighbors’ neighbors. That is to say, X is directly connected with Y, but X must also have a record of Z. Because each node needs to be able to bridge communication with nodes on the other side of its neighbors (its neighbors neighbors), each node must have a list of eight nodes. The first four nodes are the immediate neighbors and the next four nodes are the neighbors neighbors (but only on the same loop). Once the network has been created, messages are broadcast in a cascading flood. Every node that receives a message from a neighbor will send that message to its other neighbors. If a node discovers that a certain message has already been received, it will not propagate the message further. Because the network is highly randomized, on average this mechanism broadcasts throughout the network with a small number of steps. A random message ID is created with each message. In order to prevent flooding the network with messages, each message has a “hop-limit.”

4. Our file replication scheme A good survey of replicated database systems can be found in [14]. The partially replicated file system scheme we introduce here differs from these and from those described in [10], [11], [4], [12], [13], [15], [16]. In our model, the number of replicas varies with conditions, but never goes below a certain level. Each file is physically replicated at least r ∈ {1, 2, ..., N } times on different nodes, where N is the number of nodes in the network. A value of r = 1 does not necessarily mean “no replication," whereas r = N means “full replication." The number of nodes that can be safely eliminated from the system without information loss is r − 1. File replicas are created dynamically on nodes which frequently access these files, in order to minimize inter-node communications and response time. Conversely, these replicas are deleted if their priority degrades. It is not assumed that the replicas are

Fig. 1 A DDING A NODE .

distributed evenly across the nodes and it is undefined which copies are placed on which node, so that different degrees of quality of a replication schema can be modeled. Each node has knowledge only of its local state; it requires no knowledge of the location of other replicas. The system is completely decentralized. Queries or updates from any node trigger events. Events change the internal states of the accessed data objects. The system is event-driven, but the learning process is not synchronized with the events.

5. Experiments and Results A complete set of experiments should investigate the performance of the load-balancing algorithm in the following areas: i) dynamic clustering of similar data; ii) monitoring system changes with addition and deletion of nodes; iii) replicating data as the needs of the system vary; and iv) reducing the time (the number of hops) required to access data as the learning process adapts to changing requirement. We present here only the preliminary experiments, designed to investigate the algorithm’s ability to reduce the average number of hops to find a file. For the experiments that follow, we created a double-looplike network using the techniques described above. We also randomly distributed replicas of three different files around the network for retrieval. Experiments were then run to test the effect of the number of replicas (replication factor) of each file on the average number of hops it took to retrieve the requested file. Tests were performed with replication factors of r = 1, 2, 3 respectively. All tests were run with seven computers (nodes) in the network. Each node in the environment

Fig. 2 E VOLUTION OF NUMBER OF HOPS FOR r = 1.

Fig. 3 E VOLUTION OF NUMBER OF HOPS FOR r = 2.

Fig. 4 E VOLUTION OF NUMBER OF HOPS FOR r = 3.

randomly requested a search for retrieving a file every 10 seconds. We recorded the number of hops it took to find the file each time a broadcast search was initiated.

5.1 Search When a node performs a search, it broadcasts a query to all four of it’s neighbors, who in turn broadcast it to their three other neighbors. Broadcasts have a unique ID which prevents nodes from rebroadcasting messages already seen. If a node receives a query and has the file in question, it sends a found message along with the file requested to the originator of the query.

5.2 Load Balancing Each successful non-local search produces a new copy of the requested file. In our system, we aim to use mobile agents to delete unnecessary file replicas. Mobile agents are programs that can migrate from host to host in a network, at times and to places of their own choosing [33]. Our agents are intended to be event driven, launched in the background after each successful search to delete the least important replicas. Currently, an agent visits each node in the ring and gathers information about what files exist and their priority. For instance, this priority can be the age of the file, its usage frequency, or the time of its last access. The agent decides whether or not to delete a given file based on the replication

factor and the file’s priority. This agent is not terminated after making a complete loop, but rather continues looping and checking on the status of files. Future plans include the implementation of a different version of this load balancing, that would send out agents in a broadcast fashion similar to the search process, and keyed to successful search events. These agents would have a limited lifespan, based on the number of hops they have made, which would limit network traffic. This would allow unlimited scalability of the network.

5.3 Results As noted above, three tests were performed with differing replication factors. Figures 2, 3, and 4 represent the results of running experiments with r = 1, 2, 3 respectively, and depict the average number of hops required to retrieve a file over time. Not surprisingly, as we increased the replication factor, the average number of hops required to find a file dropped. For r − 1, overall, the average number of hops needed was 1.66. For r = 2, this number decreased to 0.65. Finally, for r = 3, the overall average number of hops used was of 0.43.

6. Conclusions and Future Work The system insures a minimum number of replicas; the maximum number of replicas is the number of nodes in the network. Replicas continue to exist only if their priority remains relatively high. In this manner, unneeded replicas are eliminated from the system. In our model, file replicas are created dynamically on nodes which frequently access these objects. This replication scheme is more complex than simple caching, since copies with low priority can be deleted. In our implementation, we have used access frequency as the prioritization criterion. More complex criteria can also be considered, based on their relevance for information retrieval, as in [34]. Generally, replicated files must synchronize after each update [14]. An appropriate technique would be to let files be accessed without a priori synchronization, based on the optimistic assumption that problems will occur only rarely, if at all [35]. However, there are many P2P data sharing applications were files are not updated. Such applications (e.g., music sharing, the Human Brain Project, and the Human Genome Project) are possible targets for our system. Further experiments to demonstrate the dynamic load balancing capacity of the system are currently in progress. Specifically, as noted above, experiments will investigate the performance of the load-balancing algorithm in the following areas: i) dynamic clustering of similar data; ii) monitoring system changes with addition and deletion of nodes; iii) replicating data as the needs of the system vary; and iv) reducing the time (the number of hops) required to access data as the learning process adapts to changing requirement.

References [1] J. Risson and T. Moors, “Survey of research towards robust peerto-peer networks: search methods,” Computer Networks: The International Journal of Computer and Telecommunications Networking, vol. 50, no. 17, pp. 3485–3521, 2006. [2] G. Cabri, A. Corradi, and F. Zambonelli, “Experience of adaptive replication in distributed file systems,” in Proceedings of EUROMICRO-22, 1996, pp. 459–466. [3] L. W. Dowdy and D. V. Foster, “Comparative models of the file assignment problem,” ACM Computing Surveys, vol. 14, pp. 287–313, 1982. [4] O. Wolfson, S. Jajodia, and Y. Huang, “An adaptive data replication algorithm,” ACM Transactions on Database Systems, vol. 22, no. 2, pp. 255–314, 1997. [5] S. Kulkarni, N. Ganguly, G. Canright, and A. Deutsch, “A bio-inspired location search algorithm for peer to peer networks,” in Advances in Biologically Inspired Information Systems, F. Dressler and I. Carreras, Eds., vol. Studies in Computational Intelligence, Vol. 69. Springer, 2007, pp. 269–284. [6] E. Michlmayr, “Self-organization for search in peer-to-peer networks,” in Advances in Biologically Inspired Information Systems, F. Dressler and I. Carreras, Eds., vol. Studies in Computational Intelligence, Vol. 69. Springer, 2007, pp. 249–268. [7] J. M. Hellerstein, “Toward network data independence,” SIGMOD Record, vol. 32, pp. 34–40, 2003. [8] C. S. Raghavendra and J. S. Silvester, “A survey of multi-connected loop topologies for local computer networks,” Computer Networks and ISDN Systems, vol. 11, pp. 29–42, 1986. [9] B. T. Loo, R. Huebsch, I. Stoica, and J. M. Hellerstein, “The case for a hybrid p2p search infrastructure,” in IPTPS, ser. Lecture Notes in Computer Science, G. M. Voelker and S. Shenker, Eds., vol. 3279. Springer, 2005, pp. 141–150. [10] R. Mukkamala, S. C. Bruell, and R. K. Shultz, “Design of partially replicated distributed database systems: an integrated methodology,” in Proceedings of the 1988 ACM SIGMETRICS Conference on Measurement and Modeling of Computer Systems. ACM Press, 1988, pp. 187–196. [11] A. R. Chaturvedi, A. K. Choubey, and R. J., “Scheduling the allocation of data fragments in a distributed database environment: a machine learning approach,” IEEE Transactions on Engineering Management, vol. 41, no. 2, pp. 194–207, 1994. [12] T. Loukopoulos and I. Ahmad, “Static and adaptive data replication algorithms for fast information access in large distributed systems,” in Proceedings of the 20th International Conference on Distributed Computing Systems. IEEE Computer Society, 2000, pp. 385–392. [13] D. Kossmann, “The state of the art in distributed query processing,” ACM Computing Survey, vol. 32, no. 4, pp. 422–469, 2000. [14] M. Nicola and M. Jarke, “Performance modeling of distributed and replicated databases,” IEEE Transactions on Knowledge and Data Engineering, vol. 12, no. 4, pp. 645–672, 2000. [15] J. Holliday, D. Agrawal, and A. E. Abbadi, “Partial database replication using epidemic communication,” in Proceedings of the 22nd International Conference on Distributed Computing Systems. IEEE Computer Society, 2002, pp. 485–493. [16] T. Loukopoulo and I. Ahmad, “Static and adaptive distributed data replication using genetic algorithms,” Journal of Parallel and Distributed Computing, vol. 64, no. 11, pp. 1270–1285, 2004. [17] P. Apers, “Data allocation in distributed DBMS,” ACM Transactions on Database Systems, vol. 13, no. 3, pp. 263–304, 1988. [18] O. Wolfson and A. Milo, “The multicast policy and its relationship to replicated data placement,” ACM Trans. Database Syst., vol. 16, no. 1, pp. 181–205, 1991. [19] Y. Bartal, A. Fiat, and Y. Rabani, “Competitive algorithms for distributed data management,” vol. 51, 1995, pp. 341–358. [20] Z. Xu, L. Xianliang, H. Mengshu, and W. Jin, “A dynamic distributed replica management mechanism based on accessing frequency detecting,” SIGOPS Oper. Syst. Rev., vol. 38, pp. 26–34, 2004. [21] I. Satoh, “Bio-inspired deployment of distributed applications,” in Proceedings of the 7th Pacific Rim International Workshop on MultiAgents. Springer-Verlag, 2004, pp. 243–258.

[22] A. Montresor, H. Meling, and O. Babao˘glu, Messor: Load-Balancing through a Swarm of Autonomous Agents. Springer-Verlag, 2003, pp. 125–137. [23] S. Abdul-Wahid, R. Andonie, J. Lemley, J. Schwing, and J. Widger, “Event-driven load balancing of partially replicated objects through a swarm of mobile agents,” in Proceedings of the IASTED International Conference on Computational Intelligence (CI 2006), B. Kovalerchuk, Ed. ACTA Press, 2006, pp. 110–115. [24] ——, “Adaptive distributed database replication through colonies of Pogo ants,” in Proceedings of the IEEE International Parallel & Distributed Processing Symposium (IPDPS 2007), Long Beach, California, 2007. [25] K. Ranganathan, A. Iamnitchi, and I. Foster, “Improving data availability through dynamic model-driven replication in large peer-to-peer communities,” in CCGRID ’02: Proceedings of the 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid. Washington, DC: IEEE Computer Society, 2002, p. 376. [26] B. Allcock, J. Bester, J. Bresnahan, A. L. Chervenak, C. Kesselman, S. Meder, V. Nefedova, D. Quesnel, S. Tuecke, and I. Foster, “Secure, efficient data transport and replica management for high-performance data-intensive computing,” in MSS ’01: Proceedings of the Eighteenth IEEE Symposium on Mass Storage Systems and Technologies. Washington, DC, USA: IEEE Computer Society, 2001, pp. 13–13. [27] E. Cohen and S. Shenker, “Replication strategies in unstructured peerto-peer networks,” SIGCOMM Comput. Commun. Rev., vol. 32, pp. 177–190, 2002.

[28] J. Kangasharju, K. W. Ross, and D. A. Turner, “Adaptive content management in structured p2p communities,” in InfoScale ’06: Proceedings of the 1st international conference on Scalable information systems. New York, NY, USA: ACM, 2006, p. 24. [29] Q. Lv, P. Cao, E. Cohen, K. Li, and S. Shenker, “Search and replication in unstructured peer-to-peer networks,” in Proceedings of the 16th international conference on Supercomputing (ICS ’02), 2002, pp. 84– 95. [30] V. Gopalakrishnan, B. Silaghi, B. Bhattacharjee, and P. Keleher, “Adaptive replication in peer-to-peer systems,” in ICDCS ’04: Proceedings of the 24th International Conference on Distributed Computing Systems (ICDCS’04), Washington, DC, USA, 2004, pp. 360–369. [31] Y. Wu, W. Lang, and M. Zhou, “An adaptive replication algorithm in overlay networking,” in ICCNMC 2005, ser. Lecture Notes in Computer Science, X. Lu and W. Zhao, Eds., vol. 3619. Springer, 2005, pp. 123–132. [32] F. K. Hwang, “A complementary survey on double-loop networks,” Theoretical Computer Science, vol. 263, no. 1-2, pp. 211–229, 2001. [33] D. Kotz and R. S. Gray, “Mobile agents and the future of the internet,” SIGOPS Oper. Syst. Rev., vol. 33, no. 3, pp. 7–13, 1999. [34] Z. Lu and K. McKinley, “Partial replica selection based on relevance for information retrieval,” in Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval. ACM Press, 1999, pp. 97–104. [35] Y. Saito and M. Shapiro, “Optimistic replication,” ACM Computing Surveys, vol. 37, no. 1, pp. 42–81, 2005.

Suggest Documents