Professional Documents
Culture Documents
Distributed System Assinmnet
Distributed System Assinmnet
1. Distributed System
and coordinate their actions over a network to appear as a single, unified system to the
end user. These nodes work together to achieve a common goal, share resources, and
provide services.
● Resource Sharing: Allow multiple users to access and utilize resources across
the network.
● Transparency: Hide the complexities of the distributed nature from the user,
● Distributed Objects: Objects are distributed across nodes and can interact with
Scaling Techniques:
● Horizontal Scaling (Scale Out): Adding more nodes of the same type to
distribute workload.
capacity.
Cluster Types:
optimize performance.
Middleware is software that sits between applications and the distributed system,
Types of Middleware:
objects.
between).
handles both).
● N-Tier: Flexible architecture with multiple layers for modularity and scalability.
● Context Switching: The process of saving the state of one thread and restoring
● Stateful Server: Maintains state information about each client connection (e.g.,
treated independently. Simpler to scale and more fault-tolerant, but may require
Code migration is the process of dynamically moving executable code from one node to
● Software updates: Update code on specific nodes without restarting the entire
system.
a given situation.
Distributed systems are complex environments where multiple computers are connected over a
network to achieve a common goal. These systems face unique challenges, particularly in terms
of naming, communication, synchronization, and mutual exclusion. Here's a comprehensive
exploration of these concepts:
### 4. Remote Procedure Call (RPC) and Remote Method Invocation (RMI)
RPC and RMI are paradigms used in distributed systems to enable a computer to execute code
on another remote computer. RPC abstracts procedure calls between computers, while RMI
extends this concept to object-oriented programming, allowing remote invocation of methods on
objects located on different machines.
In conclusion, these concepts are foundational to the operation and management of distributed
systems, ensuring they function efficiently and effectively in a coordinated manner.
Understanding these principles is essential for anyone working with or designing distributed
systems.
In distributed systems, data consistency is crucial. It ensures that all copies of shared
data across different nodes are kept up-to-date and reflect the same state. Data
replication, on the other hand, is a technique for storing copies of data on multiple
nodes to improve:
● Availability: If one node fails, another replica can still serve data requests.
responsiveness.
shared data.
● Object replication: Used in distributed object systems where objects can be
replicated and invoked remotely. This enhances scalability and fault tolerance for
distributed objects.
The CAP theorem states that in a distributed system, it's impossible to guarantee all
outdated data.
● Partition Tolerance (P): The system continues to operate even when the
● Strong consistency: Guarantees all replicas are always consistent (e.g., strict
period of time (e.g., good for write-heavy workloads, can lead to temporary
inconsistencies).
● Monotonic reads: Ensures each subsequent read of the same data item returns
a value not older than the previous read (weaker than strong consistency).
● Read your writes: A read operation returns the latest data written by the same
components fail. Data replication and consistency models are key aspects of fault
nodes.
intervention.
Fault models define the types of failures that a distributed system needs to be resilient
against:
failure).
● Crash failures: A node abruptly halts and does not recover spontaneously.
on a particular state or value. This is critical for maintaining consistency in the presence
committing it.
● Raft: Another consensus algorithm known for its simplicity and efficiency.
A cache is a temporary storage location that holds frequently accessed data closer to
the application or user. This can significantly improve performance by reducing the need
● Caching strategies: Determining what data to cache and for how long.
the cache.
distributed system.
Caching can significantly improve performance, but it adds complexity and requires