Distributed Systems: Design Issues, Challenges & Applications
Design Functions in Distributed Systems
1. Communication
o Enables information exchange between processes.
o Must handle latency, bandwidth, failures, etc.
2. Processes
o Multiple independent processes may run on different systems.
o Must coordinate and communicate effectively.
3. Naming
o Every resource (process, device) needs a unique name.
o Naming scheme should be scalable and location-independent.
4. Synchronization
o Synchronizing time and actions across different systems is critical.
o Logical clocks and physical clocks are used.
5. Data Storage & Access
o Data may be distributed; consistent access and storage needed.
6. Consistency & Replication
o Replicated data should appear the same to all users.
o Consistency models define how this is maintained.
7. Fault Tolerance
o System should continue to function despite failures.
o Techniques include redundancy, recovery, and replication.
8. Security
o Confidentiality, authentication, and availability must be ensured.
9. API and Transparency
o Easy-to-use programming interfaces.
o Hides complexities from the user (transparency).
10. Scalability & Modularity
• System should grow without performance drop.
• Should be easy to add/modify components.
Algorithmic Challenges in Distributed Computing
1. Execution Models
o Interleaving and partial order models help design distributed algorithms.
2. Dynamic Graph Algorithms
o Network modeled as a graph with changing links.
o Algorithms must adapt to changes like varying link loads.
3. Time & Global State
o Provide logical time to sync processes.
o Important for coordination without needing physical time.
4. Synchronization Mechanisms
o Used for coordination like leader election, mutual exclusion, etc.
5. Group Communication & Ordering
o Ensure messages are delivered in a correct and consistent order.
6. Monitoring Events & Predicates
o Detect global conditions based on distributed local variables.
7. Design & Verification Tools
o Helps in debugging, verifying correctness, and improving reliability.
8. Debugging Distributed Programs
o Needs special tools due to concurrency and unpredictable execution.
9. Data Replication & Caching
o Ensure consistency across replicas and improve access speed.
Applications & Newer Challenges
1. Mobile Systems
o Devices connect from different locations.
o Challenges: dynamic connections, power limitations, mobility support.
2. Sensor Networks
o Small devices that monitor and report data.
o Challenges: energy efficiency, coverage, data aggregation.
3. Ubiquitous/Pervasive Computing
o Computing is available everywhere (e.g., smart homes).
o Challenges: context-awareness, seamless integration.
4. Peer-to-Peer (P2P) Computing
o All nodes are equal; no hierarchy.
o Self-organizing and scalable. Example: torrenting, blockchain.
5. Publish-Subscribe & Multimedia
o Info is published, users subscribe to data types.
o Efficient distribution and filtering is key.
6. Distributed Agents
o Programs that collect/process/share information.
o Need coordination and control over mobility.
7. Distributed Data Mining
o Data is too big to collect in one place.
o Local mining and global combining needed.
8. Grid Computing
o Virtual supercomputer using idle machines.
o Suitable for scientific computations.
9. Security
o Key aspects: confidentiality, authentication, availability.
o Must protect against unauthorized access and ensure trust.
End of Notes for Exam Revision