Carnegie Mellon Framework · Common primitives Join: how to I begin participating Publish: how do I advertise my file? Search: how to i find a file? Fetch: how to l retrieve a file?
1 1 Framework • Common Primitives: – Join: how to I begin participating? – Publish: how do I advertise my file? – Search: how to I find a file? – Fetch: how to I retrieve a file?
Carnegie Mellon Centralized · Centralized database Join: on startup, client contacts central server Publish: reports list of files to central server Search query the server = return node(s) that store the requested file
1 2 Centralized • Centralized Database: – Join: on startup, client contacts central server – Publish: reports list of files to central server – Search: query the server => return node(s) that store the requested file
Carnegie Mellon Napster EXample: Publish insert(X 1232123) 珍 Publish I have X,Y,andz!(多 123.2.21.23
1 3 Napster Example: Publish I have X, Y, and Z! Publish insert(X, 123.2.21.23) ... 123.2.21.23
Carnegie Mellon Napster: Search 12320.18 search(A) Fetch 123.2.0.18 Query//Reply Where is file A? ere
1 4 Napster: Search Where is file A? Query Reply search(A) --> 123.2.0.18 Fetch 123.2.0.18
Carnegie Mellon Napster: Discussion Pros Simple Search scope is o(1) for even complex searches(one index, etc. Controllable(pro or con Cons Server maintains o(N) State S erver does all processIng Single point of failure Technical failures legal (napster shut down
1 5 Napster: Discussion • Pros: – Simple – Search scope is O(1) for even complex searches (one index, etc.) – Controllable (pro or con?) • Cons: – Server maintains O(N) State – Server does all processing – Single point of failure • Technical failures + legal (napster shut down 2001)