Welcome to Distributed Systems¶
You have reached the home of Distributed Systems (COMP 339-439) at Loyola University Chicago
- Introduction and Issues
- What is a distributed system?
- Examples
- Illustration
- Advantages of Distributed Systems vs. Centralized
- Advantages of Distributed Systems vs. Standalones
- Disadvantages of Distributed Systems
- Key Characteristics
- Resource Sharing
- Resources Must be Managed
- Openness
- Open Distributed Systems
- Concurrency
- Scalability
- Fault Tolerance
- Transparency
- Design Issues
- Issues arising from Distributed Systems
- Naming
- Naming - Name Resolution
- Naming - Design Considerations
- Communication
- Types of Communication
- Client-Server Communication
- Client-Server Communication
- Group Multicast
- Software Structure
- Distributed System Software Structure
- Consistency Management
- Caching
- Consistency
- Workload Allocation
- Processor Pool Model
- Quality-of-Service
- Networking Primer
- Overview
- References and Additional Reading
- Methods
- Networks
- Infrastructure
- Many Types of Networks
- Relative Speeds
- Local Area Networks
- Wide Area Networks
- Metropolitan Area Networks (MANs)
- Internetworks
- Performance Issues
- What is software delay?
- Example: Campus Network
- Network Topologies
- Network Topologies
- A Network is not an Island
- Protocols
- Design Issues In Layers
- Protocols are divided into layers
- Physical Layer
- Physical Layer - Representing 0 and 1
- Many Types of Networks
- Local Area Networks
- Wide Area Networks
- Wireless Networks
- Metropolitan Area Networks
- Many Types of Networks
- Internetworks
- Data Link Layer
- The Network Layer
- The Transport Layer
- The Session & Presentation Layers
- Application Layer
- Interprocess Communication:
- Reliability
- Mapping Data to Messages
- Marshaling
- Simple Marshalling
- Case Study: UNIX Interprocess Communication (IPC)
- Example - Simple TCP Messaging Framework (from HPJPC)
- Example: Simple Key-Value Messaging
- Example: Components
- Sockets Communication Using Datagram
- Java SDK Example / Quote Server with Datagrams
- Quote Server Dispatch Thread
- Quote Client
- Stream Communication
- Remote Procedure Call
- Remote Procedure Call (Figure)
- Remote Procedure Call (RPC)
- Observations
- Design of RPC
- RPC Mechanisms
- RPC Steps
- Design Issues
- Parameter Passing
- Parameter Passing
- Binding
- Use of Specification
- Locating the Server
- How to Handle Failures
- Client Cannot Locate Server
- Lost Request Message
- Lost Reply Message
- Idempotent Property
- Lost Reply Message
- Server Crashes
- Server Crashes
- Client Crashes
- Client Crashes
- Flow Control
- See Also
- Concurrency and Threads
- Threads vs Processes
- What are Processes, Threads?
- Common Threading Use Cases
- Mutual Exclusion
- Tools for Achieving Mutual Exclusion
- Mutex Example/Java
- Semaphore Example
- Barrier
- Deadlock - a classic problem
- Fork
- Diner0
- Diners0
- Diners1 - eliminating deadlock with resource enumeration
- Execution - With Deadlock
- Deadlock-Free Version
- Common Data Structures in Concurrent Programming
- Design Considerations
- Kernel Threads vs User Mode Threads
- Concurrent File Copy Example
- Sequential File Copy
- Concurrent File Copy Organization
- Execution
- Distributed Systems and Storage
- Storage Devices
- Local Storage
- Distributed Filesystems
- File Service Model
- Directory Service
- Naming Transparency
- File Sharing Semantics
- UNIX Semantics
- More Semantics
- Distributed File System Implementation
- System Structure
- Directory Service
- Stateless versus Stateful
- Caching
- Caching - Server
- Caching - Client
- Client - Cache Consistency
- Client - Cache Consistency - Other Options
- Replication
- Replication - Update Protocols
- Replication - Voting Algorithm
- Replication - General Quorum Algorithm
- Case Study - SUN NFS
- Directories and LDAP
- What is a Directory?
- What is NOT a Directory?
- Types
- Characteristics of Directories
- Evolution of Directories
- So what is LDAP, exactly?
- Early LDAP Implementations
- SLAPD: Stand-alone LDAP Daemon
- SLAPD: Continued
- LDAP Client-Server Exchange Protocol
- Example LDAP Usage
- Schemas
- attributes and objectclasses
- Namespaces
- LDAP Tree Topology
- Network Architecture
- Distributed LDAP Server Model
- LDIF Example
- Acknowledgements
- References
- Project Build Management With Maven
- Continuous Integration
- What Does Continuous Integration Do?
- How Often is Continuous Integration Run?
- What are the Bits and Pieces of Continuous Integration?
- Continuous Integration Products / Vendors
- Continuous Integration and the Key Characteristics of Distributed Systems
- Case Study - My Simple CI System
- The Front Page of Team City
- Build Nodes
- Clocks and Synchronization
- What is Time? Some Physics
- Time and Computation
- Physical Clocks
- Physical Clocks - Multiple Systems
- Clock Synchronization
- Clocks Synchronization and Reliability
- Lamport’s Logical Clocks
- Implementing Lamport’s Logical Clocks
- Limitations of Lamport’s Logical Clocks
- Vector Clocks
- Implementing Vector Clocks
- So… What Did We Get Out of All of This?
- Distributed Transactions
- Transactions Defined
- ACID
- Isolation Levels - Serializable
- Isolation Levels - Repeatable Reads
- Isolation Levels - Read Committed
- Isolation Levels - Read Uncommitted
- Isolation Levels - Mixing Levels
- Distributed Commit Algorithms
- 2PC - Two Phase Commit
- 3PC - Three Phase Commit
- Distributed Transaction Support in Database Products
- Why do I need distributed transactions?
- Domain Name Service
- Distributed Queues
- Message Passing Interface
- SMTP
- Object Brokers and CORBA
- REST and Web Services
- NoSQL Databases
- Distributed Agents
- Apache Spark
- BitTorrent
- Hadoop Distributed File System
- Message Queues
- Object Brokering
- File Sychronization and rsync
- Volunteer Computing
- Cloud Computing
- Internet of Things and Pervasive Systems
- Election Algorithms
- Repository
- Releases
Topics