Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 42
Distributed Systems Engineering
1-What is Distributed Systems Engineering
• Distributed Systems Engineering is a field of software engineering that deals with systems whose components are located on different computers within the same network.
• In a distributed systems multiple computers coordinates their actions
and communicate with one another to achieve a common objectives 1-What is Distributed Systems Engineering • Here are some key characteristics of distributed systems:
1. Heterogeneity: These systems can run on various networks,
hardware types, programming languages and operating systems.
2. Openness: Distributed systems are open in terms of hardware and
software components with standard interfaces. 1-What is Distributed Systems Engineering 3. Resource Sharing: Resources (hardware data and software) are available for direct or remote access by multiple computers. 4. Scalability: Distributed systems should handle growth in users without requiring significant changes to their components. 5. Concurrency: They can perform multiple tasks simultaneously. 1-What is Distributed Systems Engineering • In practical terms Distributed Systems enable efficient resources utilization, fault tolerance and scalability across interconnected computers.
• It requires a deep understanding of computer science, networking, and
software engineering principles. 2-Distributed Systems Architecture • In distributed systems, there are different ways to organize and structure the components and their interactions.
• Here are some common distributed systems architectures:
2.1-Centralized Architecture • A central server or node controls and manages all the processes and data.
• Advantages: Simple to design and manage, provides centralized
control.
• Disadvantages: Single point of failure, limited scalability.
2.2-Decentralized Architecture • There is no central authority.
• Advantages: Highly scalable, fault-tolerant, and resilient to failures.
• Disadvantages: More complex to design and manage, requires
coordination among nodes. 2.3-Client-Server Architecture • Dedicated servers provide services to multiple clients.
• Advantages: Easy to manage, provides centralized control, and scales
well.
• Disadvantages: Single point of failure for servers, clients depend on
servers. 2.4-Peer to Peer Architecture • All nodes can communicate directly with each other.
• Advantages: Highly scalable, fault-tolerant, and decentralized.
• Disadvantages: More complex to design and manage, requires
efficient resource discovery. 2.4-Hybrid Architecture • Combinations of different architectures, such as a centralized system with decentralized components.
• Advantages: Can provide the benefits of multiple architectures.
• Disadvantages: More complex to design and manage.
3- Communication in Distributed Systems
• Communication and networking are essentials of distributed systems,
enabling the exchange of information and coordination among different components.
• Here are some types:
3.1- Network Protocols • Standard rules and formats for data transmission over a network.
• Examples: TCP/IP (Transmission Control Protocol/Internet Protocol),
UDP (User Datagram Protocol). 3.2- Message Passing • Communication paradigm where processes exchange messages to coordinate their activities.
• Advantages: Simple to implement, suitable for loosely coupled
systems.
• Disadvantages: Can be inefficient for frequent communication.
3.3- Remote Procedure Calls(RPC) • RPC is a network programming model or inter-process communication technique used for point-to point communications between software applications.
• It allows one computer to instruct another computer over a network to
execute a procedure (a block of code that performs a specific task). 3.4- Socket Programming • Low-level interface for network communication, allowing processes to create and manage network connections.
• Provides fine-grained control over communication details.
3.5- Middleware • Software that provides services and infrastructure to support distributed systems communication.
RMI (Remote Method Invocation). 4- Concurrency and Synchronization in Distributed Systems • Concurrency and synchronization are where multiple processes or threads execute concurrently and must coordinate their activities to maintain data integrity and system correctness.
• Here are some techniques of concurrency and synchronization:
4.1- Processes and Threads • A process is an instance of a program running on a computer.
• A thread is the smallest unit of execution within a single process,
multiple threads can exist within a single process. 4.2- Mutual Exclusion and Locks • Mutual exclusion ensures that only one process or thread accesses a shared resource at a time.
• Locks are used to implement mutual exclusion by restricting access to
shared resources. 5- Fault Tolerance and Reliability in Distributed Systems • Fault tolerance and reliability are aspects of distributed systems, ensuring that the system continues to function correctly even in the presence of failures. 5.1- Replication and Redundancy • Replicating data and components across multiple nodes enhances fault tolerance.
• Redundancy provides backup systems or components in case of
failures. 5.2- Load Balancing and Failover • Load balancing distributes workloads to optimize resource utilization and prevent bottlenecks.
• Failover mechanisms automatically switch to backup systems or
components in case of failures. 5.3- Check-Pointing and Recovery • Check-pointing periodically saves the state of a system or process to enable recovery from failures.
• Recovery mechanisms restore the system or process to a previous
consistent state. 6- Transactions in Distributed Systems • Transactions are fundamental concepts in distributed systems to ensure data integrity and reliable updates.
• Transaction is a sequence of database operations that are executed as a
single unit. 7-Scalability and Performance in Distributed Systems
• Scalability and performance in distributed systems ensuring that the
system can handle increasing loads and maintain efficient operation while if there was another new process added. 7.1- Scalability • The ability of a system to handle increasing demands without significant performance degradation.
• Horizontal scaling (adding more nodes) and vertical scaling
(upgrading existing nodes) are common approaches. 7.2- Performance and Optimization • Techniques to improve the speed, responsiveness, and efficiency of distributed systems.
• Optimizing network communication, load balancing, and resource
allocation are key considerations. 8- Security in Distributed Systems • Security is of utmost importance in distributed systems, where multiple components are interconnected and communicate over networks.
• Ensuring the protection of data, resources, and communication
channels from unauthorized access, attacks, and vulnerabilities is crucial. 8.1- Threats to Distributed Systems • Denial-of-Service (DoS) Attacks: Attempts to make a system or resource unavailable to its intended users.
• Eavesdropping: Intercepting and monitoring communication
between components.
• Man-in-the-Middle Attacks: Interception and modification of
communication between components. 8.2- Authentication and Authorization • Authentication: Verifying the identity of users or components attempting to access resources.
• Authorization: Controlling access to resources based on user or
component permissions. 8.3- Encryption and Secure Communication • Encryption: Transforming data into a form that cannot be easily understood by unauthorized parties.
• Secure Communication Protocols: Ensuring the confidentiality and
integrity of data during transmission. 8.4- Intrusion Detection and Prevention • Intrusion Detection Systems (IDS): Monitoring system activities for suspicious patterns or attacks.
• Intrusion Prevention Systems (IPS): Actively preventing or
blocking attacks based on detected threats. 8.5- Firewall and Network Security • Firewalls: Network security devices that control incoming and outgoing network traffic.
• Network Segmentation: Dividing a network into multiple segments
to limit the spread of attacks. 9- Case Study and Applications of Distributed Systems
• Distributed systems have a wide range of real-world applications and
are used in various industries and domains.
• Here are some notable case studies and examples:
9.1- Google
• Google's distributed systems infrastructure supports a vast array of
services, including search, Gmail, YouTube, and many others.
• It involves large-scale data processing, load balancing, and fault
tolerance mechanisms to handle billions of user requests daily. 9.2- Amazon Web Service (AWS)
• AWS provides a comprehensive suite of cloud computing services,
including storage, compute, networking, and more.
• Its distributed systems enable scalability, reliability, and global
availability for millions of customers. 9.3- Meta Services (Facebook)
• Facebook's distributed systems power its social networking platform,
handling billions of user interactions and data updates every day.
• It emphasizes efficient data replication, caching, and content delivery
mechanisms. 9.4- Netflix
• Netflix's distributed systems support streaming video content to
millions of users worldwide.
• It involves large-scale video transcoding, content delivery networks
(CDNs), and recommendation systems. 9.5- Uber
• Uber's distributed systems manage real-time ride-hailing requests,
driver tracking, and location-based services.
• It involves complex routing algorithms, load balancing, and real-time
data processing. 9.6- Blockchain and Cryptocurrencies
• Blockchain technology, such as Bitcoin and Ethereum, utilizes
distributed systems principles for secure and decentralized transactions.
• It involves consensus algorithms, peer-to-peer networks, and
cryptographic techniques. 9.7- Internet of Things (IoT)
• IoT devices and systems often rely on distributed architectures for
data collection, processing, and control.
• It involves edge computing, sensor networks, and scalable data