170 likes | 252 Views
This presentation reviews existing Java-based distributed systems to analyze their special features, design patterns, and implementations. The focus is on examining the use of Java's capabilities in communication, robustness, adaptability, and scalability within various distributed systems. The study covers automatic and manual startup/instantiation methods, robustness and scalability considerations, communication protocols such as Java RMI, and the use of custom communication protocols. The scalability of different systems is assessed, along with comments on their effectiveness and potential future exploration. The presentation concludes with a critical evaluation of the systems reviewed and provides references for further reading.
E N D
A survey of implementations of Java-based distributed systems Glenn Matthews May 8, 2006
Introduction • Ongoing shift from single-box supercomputers to distributed computing raises issues of • Cross-platform portability • Communication • Robustness • Adaptability • Scalability
Java • Considered for implementation of distributed systems since its introduction in the late 1990s • Easily portable • Built-in communication methods, including Java RMI • Other possibly useful features
Purpose of this presentation • Look at existing Java distributed systems • Are Java’s special features helpful? • What design/implementation patterns can we see?
Systems reviewed • Unnamed heterogeneous computing system (Keane 2004) • henceforth “HDCS” • JavaParty (Haumacher 2005?) • JAVELIN (Capello et al., 1997) • Parsimony (Preiss and Wan, 1999) • Unnamed conservative DES system (Ferscha and Richter, 1997) • henceforth “CDDS” • IDES (Nicol et al, 1998)
Automatic startup/instantiation • Like what we’ve been considering? • JavaParty • No relevant Java features aid this • Use RSH/SSH for remote login and activation
Manual startup/instantiation • HDCS, JAVELIN • Good for non-dedicated networks • Needs to be easy for end user to do? • JAVELIN: client software as Java applet • Easily launched by connecting with a Web browser • Poses many technical difficulties due to restrictions placed on applets
Robustness/scalability • On dedicated cluster, maybe just assume that network failures and changes won’t happen? (JavaParty) • Else, client-server design is most common • Clients easily join and leave • Failure of client is easily recovered from • Failure of server is only major concern • JAVELIN, HDCS
Communication • Java Remote Method Invocation (RMI) • CDDS, Parsimony, HDCS, JavaParty • Custom HTTP-based or TCP-based protocols • JAVELIN, IDES
Java RMI • Java-only • Allows use of Java-specific features • RMI-IIOP makes it compatible with CORBA • All communication as remote method calls • Can’t stream data easily • HDCS switches to TCP to transfer large blocks of data more efficiently
Java RMI • Allows fully-functional objects (not just data) to be exchanged between systems • Receiver doesn’t need the .class file in advance! • Define interface Simulation on receiver • Any object that implements Simulation can be passed to the receiver and run on-the-fly!
Java RMI • Setup is non-trivial • JavaParty, HDCS build on top of RMI • Use powerful RMI features • Hide RMI complexity from application developer and/or end user
Custom communication protocols • JAVELIN uses HTTP • But then, applets have to! • IDES uses TCP sockets • No clear justification given • “Java makes socket creation and management blessedly simple”
Scalability • Have these systems been shown to scale up to reasonably large networks? • CDDS: 4 processors, 3.5x speedup • HDCS: Up to 60 processors, near-linear speedup • JAVELIN (applet-based?!) • Up to 64 processors, near-linear speedup • Only two-thirds as fast as C implementation • IDES: Up to 56 processors (14 PCS, 4 procs each), near-linear speedup
Comments • Some of these papers little more than “proof of concept” • Good ones: HDCS, JAVELIN, IDES • Therefore, risky to draw conclusions from these papers as to the “best” way to do Java distributed systems • Instead, consider them guidelines and avenues for future exploration
Conclusions • Most of these systems use • Java RMI for communication • Client-server design • Standard automatic or manual instantiation methods, not Java applets • Are these the “best” ways, or just the easiest to implement?
References • Keane, T.M. A General-Purpose Heterogeneous Distributed Computing System, M.Sc. Thesis, Department of Computer Science, National University of Ireland, Maynooth, 2004. http://www.cs.may.ie/distributed/publications.php • Haumacher, B. JavaParty Setup, http://www.ipd.uka.de/JavaParty/setup.html, retrieved April 29, 2006. • Capello, P., Christiansen, B.O., Ionescu, M.F., Neary, M.O., Schauser, K.E., and Wu, D. JAVELIN: Internet-Based Parallel Computing Using Java, ACM Workshop on Java for Science and Engineering Computation, Las Vegas, 1997. http://www.cs.ucsb.edu/projects/javelin/index.html • Preiss, B.R., and Wan, K.W.C. The Parsimony Project: A Distributed Simulation Testbed in Java, Proceedings of the 1999 International Conference on Web-Based Modeling and Simulation, 1999. http://www.brpreiss.com/papers/published/1999/websim/ • Ferscha, A., and Richter, M. Java based conservative distributed simulation, Proceedings of the 1997 Winter Simulation Conference, 1997. http://citeseer.ist.psu.edu/ferscha97java.html • Nicol, D., Johnson, M., Yoshimura, A., and Goldsby, M. IDES: A java-based distributed simulation engine, Proceedings of the MASCOTS, 1998. http://citeseer.ist.psu.edu/nicol98ides.html • Sun Microsystems, Inc. Java RMI over IIOP, http://java.sun.com/products/rmi-iiop/, retrieved April 30, 2006.