|
Preface |
7 |
|
|
Contents |
13 |
|
|
1 Introduction |
20 |
|
|
1.1 Introduction to Distributed Systems |
21 |
|
|
1.2 Some Terminology |
22 |
|
|
1.3 Centralized and Decentralized Systems |
24 |
|
|
1.3.1 Resource Discovery |
25 |
|
|
1.3.2 Resource Availability |
26 |
|
|
1.3.3 Resource Communication |
28 |
|
|
1.4 Examples of Distributed Applications |
29 |
|
|
1.4.1 A Web Server: Centralized |
29 |
|
|
1.4.2 SETI@Home: Centralized |
31 |
|
|
1.4.3 Napster: Brokered |
32 |
|
|
1.4.4 Gnutella: Decentralized |
32 |
|
|
1.5 Examples of Middleware |
34 |
|
|
1.5.1 J2EE and JMS: Centralized |
34 |
|
|
1.5.2 Jini: Brokered |
35 |
|
|
1.5.3 Web Services: Brokered |
36 |
|
|
1.5.4 Jxta: Decentralized |
36 |
|
|
1.6 Conclusion |
37 |
|
|
Part I Distributed Environments |
39 |
|
|
2 Peer-2-Peer Systems |
42 |
|
|
2.1 What is Peer to Peer? |
42 |
|
|
2.1.1 Historical Peer to Peer |
43 |
|
|
2.1.2 Binding of Peers |
43 |
|
|
2.1.3 Modern De.nition of Peer to Peer |
44 |
|
|
2.1.4 Social Impacts of P2P |
46 |
|
|
2.1.5 True Peer to Peer? |
48 |
|
|
2.1.6 Why Peer-to-Peer? |
49 |
|
|
2.2 The P2P Environment |
50 |
|
|
2.2.1 Hubs, Switches, Bridges, Access Points and Routers |
50 |
|
|
2.2.2 NAT Systems |
51 |
|
|
2.2.3 Firewalls |
53 |
|
|
2.2.4 P2P Overlay Networks |
54 |
|
|
2.3 P2P Example Applications |
56 |
|
|
2.3.1 MP3 File Sharing with Napster |
56 |
|
|
2.3.2 Distributed Computing Using SETI@Home |
57 |
|
|
2.3.3 Instant Messaging with ICQ |
58 |
|
|
2.3.4 File Sharing with Gnutella |
59 |
|
|
2.3.5 Conclusion |
60 |
|
|
3 Web Services |
62 |
|
|
3.1 Introduction |
62 |
|
|
3.1.1 Looking Forward: What Do We Need? |
63 |
|
|
3.1.2 Representing Data and Semantics |
66 |
|
|
3.2 Web Services |
67 |
|
|
3.2.1 A Minimal Web Service |
68 |
|
|
3.2.2 Web Services Architecture |
69 |
|
|
3.2.3 Web Services Development |
71 |
|
|
3.3 Service-Oriented Architecture |
72 |
|
|
3.3.1 A Web Service SOA |
72 |
|
|
3.4 Common Web Service Misconceptions |
74 |
|
|
3.4.1 Web Services and Distributed Objects |
74 |
|
|
3.4.2 Web Services and Web Servers |
74 |
|
|
3.5 Conclusion |
75 |
|
|
4 Grid Computing |
76 |
|
|
4.1 The Grid Dream |
76 |
|
|
4.2 Social Perspective |
77 |
|
|
4.3 History of the Grid |
78 |
|
|
4.3.1 The First Generation |
79 |
|
|
4.3.2 The Second Generation |
80 |
|
|
4.3.3 The Third Generation |
81 |
|
|
4.4 The Grid Computing Architecture |
82 |
|
|
4.4.1 Virtual Organizations and the Sharing of Resources |
83 |
|
|
4.5 To Be or Not to Be a Grid: These Are the Criteria... |
86 |
|
|
4.5.1 Centralized Control |
86 |
|
|
4.5.2 Standard, Open, General-Purpose Protocols |
87 |
|
|
4.5.3 Quality Of Service |
88 |
|
|
4.6 Types of Grid |
88 |
|
|
4.7 The Globus Toolkit 2.x |
89 |
|
|
4.7.1 Globus Tools |
90 |
|
|
4.7.2 Security |
91 |
|
|
4.7.3 Information Services |
92 |
|
|
4.7.4 Data Management |
93 |
|
|
4.7.5 Resource Management |
95 |
|
|
4.8 Comments and Conclusion |
96 |
|
|
Part II Middleware, Applications and Supporting Technologies |
99 |
|
|
5 Jini |
102 |
|
|
5.1 Jini |
103 |
|
|
5.1.1 Setting the Scene |
103 |
|
|
5.2 Jini’s Transport Backbone: RMI and Serialization |
103 |
|
|
5.2.1 RMI |
104 |
|
|
5.2.2 Serialization |
105 |
|
|
5.3 Jini Architecture |
108 |
|
|
5.3.1 Jini in Operation |
110 |
|
|
5.4 Registering and Using Jini Services |
112 |
|
|
5.4.1 Discovery: Finding Lookup Services |
112 |
|
|
5.4.2 Join: Registering a Service (Jini Service) |
113 |
|
|
5.4.3 Lookup: Finding and Using Services (Jini Client) |
115 |
|
|
5.5 Jini: Tying Things Together |
116 |
|
|
5.6 Organization of Jini Services |
118 |
|
|
5.6.1 Events |
118 |
|
|
5.7 Conclusion |
119 |
|
|
6 Gnutella |
120 |
|
|
6.1 History of Gnutella |
120 |
|
|
6.2 What Is Gnutella? |
121 |
|
|
6.3 A Gnutella Scenario: Connecting and Operating Within a Gnutella Network |
124 |
|
|
6.3.1 Discovering Peers |
124 |
|
|
6.3.2 Gnutella in Operation |
124 |
|
|
6.3.3 Searching Within Gnutella |
125 |
|
|
6.4 Gnutella 0.4 Protocol Description |
126 |
|
|
6.4.1 Gnutella Descriptors |
127 |
|
|
6.4.2 Gnutella Descriptor Header |
128 |
|
|
6.4.3 Gnutella Payload: Ping |
129 |
|
|
6.4.4 Gnutella Payload: Pong |
129 |
|
|
6.4.5 Gnutella Payload: Query |
130 |
|
|
6.4.6 Gnutella Payload: QueryHit |
130 |
|
|
6.4.7 Gnutella Payload: Push |
131 |
|
|
6.5 File Downloads |
132 |
|
|
6.6 Gnutella Implementations |
134 |
|
|
6.7 More Information |
134 |
|
|
6.8 Conclusion |
134 |
|
|
7 Scalability |
136 |
|
|
7.1 Social Networks |
136 |
|
|
7.2 P2P Networks |
138 |
|
|
7.2.1 Performance in P2P Networks |
138 |
|
|
7.3 Peer Topologies |
140 |
|
|
7.3.1 Centralized |
141 |
|
|
7.3.2 Ring |
141 |
|
|
7.3.3 Hierarchical |
141 |
|
|
7.3.4 Decentralized |
143 |
|
|
7.4 Hybrid Topologies |
143 |
|
|
7.4.1 Centralized/Ring |
143 |
|
|
7.4.2 Centralized/Centralized |
144 |
|
|
7.4.3 Centralized/Decentralized |
144 |
|
|
7.5 The Convergence of Napster and Gnutella |
146 |
|
|
7.6 A Southern Side-Step |
147 |
|
|
7.7 Gnutella Analysis |
148 |
|
|
7.7.1 Gnutella Free Riding |
148 |
|
|
7.7.2 Equal Peers? |
149 |
|
|
7.7.3 Power-Law Networks |
149 |
|
|
7.8 Further Reading |
150 |
|
|
7.9 Conclusion |
150 |
|
|
8 Security |
152 |
|
|
8.1 Introduction |
152 |
|
|
8.2 Design Issues |
154 |
|
|
8.2.1 Focus of Data Control |
154 |
|
|
8.2.2 Layering of Security Mechanisms |
155 |
|
|
8.2.3 Simplicity |
157 |
|
|
8.3 Cryptography |
157 |
|
|
8.3.1 Basics of Cryptography |
157 |
|
|
8.3.2 Types of Encryption |
159 |
|
|
8.3.3 Symmetric Cryptosystem |
159 |
|
|
8.3.4 Asymmetric Cryptosystem |
160 |
|
|
8.3.5 Hash Functions |
161 |
|
|
8.4 Signing Messages with a Digital Signature |
162 |
|
|
8.5 Secure Channels |
163 |
|
|
8.5.1 Secure Channels Using Symmetric Keys |
164 |
|
|
8.5.2 Secure Channels Using Public/Private Keys |
164 |
|
|
8.6 Secure Mobile Code: Creating a Sandbox |
166 |
|
|
8.7 Conclusion |
167 |
|
|
9 Freenet |
170 |
|
|
9.1 Introduction |
170 |
|
|
9.2 Freenet Routing |
171 |
|
|
9.2.1 Populating the Freenet Network |
171 |
|
|
9.2.2 Self-Organizing Adaptive Behaviour in Freenet |
172 |
|
|
9.2.3 Requesting Files |
173 |
|
|
9.2.4 Similarities with Other Peer Organization Techniques |
174 |
|
|
9.3 Freenet Keys |
175 |
|
|
9.3.1 Keyword-Signed Keys |
176 |
|
|
9.3.2 Signed Subspace Keys |
177 |
|
|
9.3.3 Content Hash Keys |
178 |
|
|
9.3.4 Clustering Keys |
179 |
|
|
9.4 Joining the Network |
180 |
|
|
9.5 Conclusion |
181 |
|
|
10 Jxta |
182 |
|
|
10.1 Background: Why Was Project Jxta Started? |
182 |
|
|
10.1.1 Interoperability |
183 |
|
|
10.1.2 Platform independence |
183 |
|
|
10.1.3 Ubiquity |
184 |
|
|
10.2 Jxta Overview |
185 |
|
|
10.2.1 The Jxta Architecture |
185 |
|
|
10.2.2 Jxta Peers |
186 |
|
|
10.2.3 Identi.ers |
187 |
|
|
10.2.4 Advertisements |
188 |
|
|
10.2.5 Messages |
188 |
|
|
10.2.6 Modules |
189 |
|
|
10.3 Jxta Network Overlay |
189 |
|
|
10.3.1 Peer Groups |
189 |
|
|
10.3.2 Rendezvous Nodes |
190 |
|
|
10.3.3 Pipes |
191 |
|
|
10.3.4 Relay Nodes |
193 |
|
|
10.4 The Jxta Protocols |
193 |
|
|
10.4.1 The Peer Discovery Protocol |
193 |
|
|
10.4.2 The Peer Resolver Protocol |
194 |
|
|
10.4.3 The Peer Information Protocol |
195 |
|
|
10.4.4 The Pipe Binding Protocol |
195 |
|
|
10.4.5 The Endpoint Routing Protocol |
195 |
|
|
10.4.6 The Rendezvous Protocol |
195 |
|
|
10.5 A Jxta Scenario: Fitting Things Together |
195 |
|
|
10.6 Jxta Environment Considerations |
196 |
|
|
10.6.1 Security |
196 |
|
|
10.6.2 NAT and Firewalls |
197 |
|
|
10.7 Comment |
197 |
|
|
10.8 Conclusion |
197 |
|
|
Part III Middleware Deployment |
200 |
|
|
11 Distributed Object Deployment Using Jini |
204 |
|
|
11.1 RMI Security |
204 |
|
|
11.2 An RMI Application |
205 |
|
|
11.2.1 The Java Proxy |
205 |
|
|
11.2.2 The Server |
206 |
|
|
11.2.3 The Client |
208 |
|
|
11.2.4 Setting up the Environment |
209 |
|
|
11.3 A Jini Application |
210 |
|
|
11.3.1 The Remote Interface |
211 |
|
|
11.3.2 The Server |
211 |
|
|
11.3.3 The Client |
213 |
|
|
11.4 Running Jini Applications |
215 |
|
|
11.4.1 HTTP Server |
215 |
|
|
11.4.2 RMID Daemon |
215 |
|
|
11.4.3 The Jini Lookup Service |
216 |
|
|
11.4.4 Running the Service |
216 |
|
|
11.5 Conclusion |
217 |
|
|
12 P2P Deployment Using Jxta |
218 |
|
|
12.1 Jxta Programming: Three Examples Illustrated |
218 |
|
|
12.1.1 Starting the Jxta Platform |
219 |
|
|
12.1.2 Discovery |
220 |
|
|
12.1.3 Creating Pipes |
223 |
|
|
12.2 Running Jxta Applications |
227 |
|
|
12.3 P2P Environment: The Jxta Approach |
228 |
|
|
12.3.1 Peer Con.guration Using Jxta |
228 |
|
|
12.3.2 Peer Con.guration Management Within Jxta |
230 |
|
|
12.3.3 Running The Examples |
233 |
|
|
12.3.4 Jxta and P2P Advert Availability |
233 |
|
|
12.3.5 Expiration of Adverts |
234 |
|
|
12.4 Conclusion |
235 |
|
|
13 Web Services Deployment |
236 |
|
|
13.1 SOAP |
236 |
|
|
13.1.1 Just Like Sending a Letter. . . |
237 |
|
|
13.1.2 Web Services Architecture with SOAP |
238 |
|
|
13.1.3 The Anatomy of a SOAP Message |
240 |
|
|
13.2 WSDL |
241 |
|
|
13.2.1 Service Description |
242 |
|
|
13.2.2 Implementation Details |
243 |
|
|
13.2.3 Anatomy of a WSDL Document |
244 |
|
|
13.3 UDDI |
247 |
|
|
13.4 Using Web Services |
248 |
|
|
13.4.1 Axis Installation |
248 |
|
|
13.4.2 A Simple Web Service |
250 |
|
|
13.4.3 Deploying a Web Service Using Axis |
251 |
|
|
13.4.4 Web Service Invocation |
252 |
|
|
13.4.5 Cleaning Up and Un-Deploying |
254 |
|
|
13.5 Conclusion |
254 |
|
|
Part IV From Web Services to Future Grids |
256 |
|
|
14 OGSA |
260 |
|
|
14.1 OGSA |
261 |
|
|
14.1.1 Grid Services |
261 |
|
|
14.1.2 Virtual Services |
263 |
|
|
14.1.3 OGSA Architecture |
264 |
|
|
14.2 OGSI |
265 |
|
|
14.2.1 Globus Toolkit, Version 3 |
268 |
|
|
14.3 WSRF |
268 |
|
|
14.3.1 Problems with OGSI |
269 |
|
|
14.3.2 Grid Services or Resources? |
270 |
|
|
14.3.3 OGSI Functionality in WSRF |
270 |
|
|
14.3.4 Globus Toolkit, Version 4 |
271 |
|
|
14.4 Conclusion |
271 |
|
|
A Want to Find Out More? |
272 |
|
|
A.1 Grid Computing |
272 |
|
|
A.2 P2P Computing |
273 |
|
|
A.3 Distributed Object Computing |
274 |
|
|
A.4 Web Services |
275 |
|
|
B RSA Algorithm |
278 |
|
|
References |
280 |
|
|
Index |
288 |
|
|
More eBooks at www.ciando.com |
0 |
|