190 likes | 258 Views
Dive into the world of distributed systems through hands-on projects emphasizing network file systems and communication layers. Cover topics such as Sun RPC, marshaling, RPC components, NFS transparency, and event programming. Explore implementation challenges, design documents, and layered communication for distributed systems. Attend paper discussions to analyze case studies and make design decisions, all as part of a dynamic and engaging learning experience.
E N D
Distributed Systems Lecture # 3
Administrivia • Projects • Design and Implement a distributed file system • Paper Discussions • Discuss papers as case studies
Paper Discussions • Attended by ~40 students • 15% grade (10 + 5) • Paper discussion modeled after program committee meetings • Each Paper presented by 4 students • Motivator (context of work) • Presenter • Advocate • Devil’s advocate • Class discussion and vote
Assignments • Assignments: • One big project • Teams of 5 • Network File System • Both paper design and implementation • Communication (2 weeks: Design and implement) • Naming (2 weeks: design and implement) • Storage: Multiple users (2 weeks: design and implement) • Reliability (make it work in 3 weeks)
Design Documents • 400 words: One pager • Two main sections • What is your design? • What were the alternatives • Only bullet points • A picture is worth a thousand words
Implementation • .. then you implement your design • No copying of code • This is a serious offense! • Use Java: Lots of existing code and libraries • Code submission at the end of the week • TAs will need to see a demo
Layered Communication Application Distributed System (RPC) Socket TCP/IP UDP/IP OS
Sun RPC • What does a Sun RPC request contain? • Wire format • Xid • Call or reply • RPC version • program # • program version • procedure # • auth bits • Marshaled arguments
Marshalling: Sun RPC • Marshaling arguments • "Linearize" data • "Externalize" data: Formats defined by XDR standard Easy for e.g. int -- same representation, though portable byte-order... Collections? include a length. Pointers? Pass by value or reference? • Return Values • How to return? • IDL: In, Out, INOut • RMI: Objects • Recursive packing
RPC: Summary • Synchronous, Blocking • Mimics a procedural call • Involves: • Data transfer: Marshaling • Thread Migration
RPC Components Client Server Stub Skeleton Client Framework Server Framework Network
NFS Transparency • Tension between performance and consistency • Syntax preserved • Not Semantics • File read/write semantics • Only check on open() • Consistency? • Events! • Expose Distribution: Java RMI
Events • Subscribe/notify • Asynchronous • Non-blocking Subscribe Notify
Events • Better performance than polling for larger tasks • Do it, let me know when you are done • Preferred mode of communication for interactive applications: none-blocking • But Harder to program • Synchronization • Spaghetti code
Programming Events Main thread Subscribe Notify Events Handler
Distributed Shared Memory Int x; x = 10; Int x; .. print x; • Consistency? • Deadlock? • DSM abstraction? • Make it explicit X = 10
Tuple-spaces Tuple-space • Explicit DSM • Tuple as the atomic data object • Clearly defined semantics for insert/read/peak
Your distributed file system • What would you use? • Client-server • communication • - Naming of files • Storage of files • Consistency • - Availability Your file system Java Operating System
Your file-system File Server • Communication? • Name Server? • Directories? • Storage • Local file-system? • Consistency of data/names • Fault-tolerance Remote Client