Distributed System Notes
Distributed System Notes
All data and computational resources are kept and controlled in a single central place, such as a server, in a centralized
system. Applications and users connect to this hub in order to access and handle data. Although this configuration is easy
to maintain and secure, if too many users access it simultaneously or if the central server malfunctions, it could become a
bottleneck.
A distributed system, on the other hand, disperses data and resources over several servers or locations, frequently across
various physical places. Better scalability and reliability are made possible by this configuration since the system can
function even in the event of a component failure. However, because of their numerous points of interaction, distributed
systems can be more difficult to secure and administer.
Client-Server Architecture:
o In this setup, servers provide resources or services, and clients request them. Clients and servers
communicate over a network.
o Examples: Web applications, where browsers (clients) request pages from web servers.
o Each node, or “peer,” in the network acts as both a client and a server, sharing resources directly with
each other.
o Examples: File-sharing networks like BitTorrent, where files are shared between users without a central
server.
Three-Tier Architecture:
o This model has three layers: presentation (user interface), application (business logic), and data
(database). Each layer is separated to allow easier scaling and maintenance.
o Examples: Many web applications use this to separate user interfaces, logic processing, and data
storage.
Microservices Architecture:
o The application is split into small, independent services, each handling specific functions. These services
communicate over a network, often using REST APIs or messaging.
o Examples: Modern web applications like Netflix or Amazon, where different services handle user
accounts, orders, and recommendations independently.
o Similar to microservices, SOA organizes functions as services. However, SOA typically uses an enterprise
service bus (ESB) to manage communication between services.
o Examples: Large enterprise applications in finance or government, where different services handle
various aspects of business processes.
Event-Driven Architecture:
o Components interact by sending and responding to events rather than direct requests. An event
triggers specific actions or processes in various parts of the system.
o Examples: Real-time applications like IoT systems, where sensors trigger actions based on detected
events.
The most common forms of distributed systems today operate over the internet, handing off workloads to dozens of cloud-
based virtual server instances that are created as needed, and then terminated when the task is complete.
Any Social Media can have its Centralized Computer Network as its Headquarters and computer systems that can be
accessed by any user and using their services will be the Autonomous Systems in the Distributed System Architecture.
Distributed System Software: This Software enables computers to coordinate their activities and to share the
resources such as Hardware, Software, Data, etc.
Database: It is used to store the processed data that are processed by each Node/System of the Distributed
systems that are connected to the Centralized network.
As we can see that each Autonomous System has a common Application that can have its own data that is shared
by the Centralized Database System.
To Transfer the Data to Autonomous Systems, Centralized System should be having a Middleware Service and
should be connected to a Network.
Middleware Services enable some services which are not present in the local systems or centralized system
default by acting as an interface between the Centralized System and the local systems. By using components of
Middleware Services systems communicate and manage data.
The Data which is been transferred through the database will be divided into segments or modules and shared
with Autonomous systems for processing.
The Data will be processed and then will be transferred to the Centralized system through the network and will
be stored in the database.
Resource Sharing: It is the ability to use any Hardware, Software, or Data anywhere in the System.
Openness: It is concerned with Extensions and improvements in the system (i.e., How openly the software is
developed and shared with others)
Concurrency: It is naturally present in Distributed Systems, that deal with the same activity or functionality that
can be performed by separate users who are in remote locations. Every local system has its independent
Operating Systems and Resources.
Scalability: It increases the scale of the system as a number of processors communicate with more users by
accommodating to improve the responsiveness of the system.
Fault tolerance: It cares about the reliability of the system if there is a failure in Hardware or Software, the
system continues to operate properly without degrading the performance the system.
Transparency: It hides the complexity of the Distributed Systems to the Users and Application programs as there
should be privacy in every system.
Scalability: Distributed systems can easily grow by adding more computers (nodes), allowing them to handle
increased demand without significant reconfiguration.
Reliability and Fault Tolerance: If one part of the system fails, others can take over, making distributed systems
more resilient and ensuring services remain available.
Performance: Workloads can be split across multiple nodes, allowing tasks to be completed faster and improving
overall system performance.
Resource Sharing: Distributed systems allow resources like data, storage, and computing power to be shared
across nodes, increasing efficiency and reducing costs.
Geographical Distribution: Since nodes can be in different locations, distributed systems can serve users globally,
providing faster access to resources based on location.
Security possess a problem due to easy access to data as the resources are shared to multiple systems.
Networking Saturation may cause a hurdle in data transfer i.e., if there is a lag in the network then the user will
face a problem accessing data.
In comparison to a single user system, the database associated with distributed systems is much more complex
and challenging to manage.
If every node in a distributed system tries to send data at once, the network may become overloaded.
Distributed systems and microservices are related concepts but not the same. Let’s break down the differences:
1. Distributed Systems:
A distributed system is a collection of independent computers that appear to its users as a single
coherent system.
Distributed systems can encompass various architectures, including client-server, peer-to-peer, and
more.
2. Microservices:
Each microservice is a self-contained unit that can be developed, deployed, and scaled independently.
Microservices communicate with each other over a network, typically using lightweight protocols like
HTTP or messaging queues.
While microservices can be implemented in a distributed system, they are not same. Microservices focus on architectural
design principles, emphasizing modularity, scalability, and flexibility, whereas distributed systems encompass a broader
range of concepts, including communication protocols, fault tolerance, and concurrency control, among others.
Conclusion
Distributed systems are becoming increasingly popular due to their high availability, scalability, and fault tolerance.
However, they also present some challenges that must be addressed. By understanding the characteristics and challenges
of distributed systems, developers can design and implement effective distributed systems that meet the needs of their
users.
A Distributed Operating System (DOS) is a type of operating system designed to manage a network of interconnected
computers as a single cohesive system. Here’s a concise explanation:
Unified Management: It allows multiple independent computers to work together seamlessly, presenting a
single, unified interface to users and applications.
Transparency: It hides the complexities of the underlying network, offering transparency in access, location, and
migration of resources.
Resource Sharing: It enables efficient sharing and coordination of resources across all nodes in the network.
Scalability: It supports the addition of new nodes without significantly disrupting the existing system, allowing for
growth in both size and capability.
Fault Tolerance: It includes mechanisms to handle failures gracefully, ensuring system reliability and availability
even if some nodes fail.
Overall, a Distributed Operating System provides a way to harness the combined power of multiple computers, optimizing
resource use, enhancing performance, and ensuring system robustness.
The fundamental features of a Distributed Operating System (DOS) are designed to manage multiple interconnected
computers as a unified system. Below is a detailed look at these core features:
1. Transparency
Transparency in a distributed operating system means that the system hides the complexities of the underlying network
and distributed architecture from users and applications. This includes:
Access Transparency: Ensures that users and applications can access resources (e.g., files, devices) without
needing to know their physical location or the details of the network. Accessing a remote file appears the same
as accessing a local file.
Location Transparency: Users and applications are unaware of the physical location of resources. For example, a
file or service might be located on any node in the network, but it appears as if it is on the local machine.
Migration Transparency: Resources can be moved from one node to another without affecting the user’s
perception of the resource. This allows for dynamic load balancing and resource management.
Replication Transparency: Users and applications are unaware of the replication of resources across multiple
nodes for fault tolerance and load balancing. They interact with a single logical resource.
Concurrency Transparency: Ensures that multiple users or applications accessing the same resource
simultaneously do not interfere with each other, providing a consistent view of the resource.
2. Scalability
Scalability refers to the system’s ability to handle growing amounts of work or to be expanded to accommodate more
nodes. This includes:
Horizontal Scalability: Adding more nodes to the system to increase capacity and performance. A scalable
distributed operating system can efficiently integrate new nodes with minimal disruption.
Vertical Scalability: Enhancing the capacity of existing nodes (e.g., upgrading hardware) to handle increased load.
Although less common in distributed contexts, it is still a relevant aspect.
Fault tolerance ensures that the system continues to operate correctly even in the presence of hardware or software
failures. Key aspects include:
Redundancy: Duplication of critical components or services to ensure that if one fails, another can take over. This
might involve replicating data or having backup nodes.
Failover Mechanisms: Automatic switching to backup systems or nodes when a failure occurs, ensuring
continuity of service and minimizing downtime.
Fault Detection and Recovery: Mechanisms for detecting failures and initiating recovery processes, such as
reassigning tasks or recovering lost data, to maintain system reliability.
4. Resource Management
Efficient resource management involves coordinating and allocating resources across multiple nodes in the distributed
system:
Distributed Resource Allocation: Managing the allocation of resources such as CPU time, memory, and storage
across different nodes. This includes load balancing to distribute workloads evenly.
Scheduling and Load Balancing: Techniques for managing the execution of tasks and balancing the load to
prevent any single node from becoming a bottleneck. This ensures optimal performance and resource utilization.
Resource Virtualization: Abstracting the underlying hardware resources to provide a virtualized view of
resources, making them available to applications in a consistent manner.
5. Communication and Coordination
Effective communication and coordination are essential for the operation of a distributed system:
Inter-Process Communication (IPC): Mechanisms for processes running on different nodes to communicate with
each other. This can involve message passing, remote procedure calls (RPCs), or other communication methods.
Authentication: This process verifies the identity of users or systems attempting to access the distributed system.
Techniques include username/password combinations, multi-factor authentication (MFA), and digital certificates.
Authentication ensures that only authorized entities can access the system.
Authorization: After authentication, authorization determines what resources or actions the authenticated entity
is permitted to access or perform. This involves defining and enforcing permissions and access rights, often
through access control lists (ACLs) or role-based access control (RBAC).
Data Encryption: Encryption protects data by converting it into a format that can only be read by someone with
the appropriate decryption key. This ensures confidentiality both in transit (e.g., using TLS/SSL) and at rest (e.g.,
using AES encryption).
Data Integrity: Techniques like hashing (e.g., SHA-256) and checksums ensure that data remains unchanged and
uncorrupted during transmission or storage. Integrity checks help detect unauthorized modifications or
corruption.
Access Control: Access control mechanisms manage how resources are accessed and by whom. They can be
based on policies that determine access based on user roles, attributes, or other criteria.
o Discretionary Access Control (DAC): Resource owners decide who can access their resources and what
operations they can perform.
o Mandatory Access Control (MAC): Access decisions are made based on predefined policies, often
enforced by the operating system or security software.
o Role-Based Access Control (RBAC): Access is granted based on the roles assigned to users, with
permissions associated with each role.
Below are the consistency and data management features in distributed operating system:
1. Consistency Models
Strong Consistency: Guarantees that once a write operation completes, all subsequent reads will reflect that
write. This model ensures that all nodes see the same data at all times but may incur higher latency and reduced
availability.
Eventual Consistency: Allows for temporary inconsistencies between nodes, with the guarantee that, over time,
all nodes will converge to the same state. This model prioritizes availability and partition tolerance but may lead
to stale reads.
Causal Consistency: Ensures that operations that are causally related are seen by all nodes in the same order.
Operations that are not causally related can be seen in different orders, balancing between strong and eventual
consistency.
Data Replication: Involves creating and maintaining multiple copies of data across different nodes to enhance
availability and fault tolerance. Replication strategies can be synchronous (updates are propagated immediately)
or asynchronous (updates are propagated later).
Data Synchronization: Ensures that all replicas of data are kept up-to-date and consistent. Techniques for
synchronization include two-phase commit (2PC) and quorum-based approaches.
3. Distributed Databases
Distributed Databases: Databases that store data across multiple nodes or locations. They provide a unified view
of the data despite its physical distribution. Key features include support for distributed transactions, replication,
and consistent querying.
1. Redundancy Strategies
Redundancy: Involves duplicating critical components or systems to ensure reliability and availability. Strategies
include:
o Data Redundancy: Multiple copies of data are stored across different nodes.
o Hardware Redundancy: Using backup hardware components (e.g., servers, disks) to take over in case
of failure.
2. Recovery Techniques
Recovery Techniques: Methods for restoring the system to a stable state after a failure. Techniques include:
o Checkpointing: Periodically saving the state of a system so that it can be restored to a recent,
consistent point in case of failure.
o Rollback and Replay: Reverting to a previous state and reapplying operations to recover from failures.
Error Handling: Mechanisms to manage and mitigate the effects of errors or failures. This includes retrying
operations, compensating for errors, and using error recovery procedures.
Error Detection: Techniques for identifying errors or anomalies, such as using error logs, monitoring systems, and
health checks to detect and address issues promptly.
Conclusion
Distributed Operating Systems (DOS) integrate multiple computers into a unified system, offering transparency, scalability,
fault tolerance, and effective resource management. They ensure security through robust authentication, authorization,
encryption, and access control. Advanced consistency models and data management techniques like replication and
synchronization maintain data integrity across nodes. Fault tolerance strategies, including redundancy and recovery
mechanisms, enhance system reliability. Mastery of these features is crucial for developing distributed systems that are
efficient, secure, and resilient, meeting the demands of contemporary computing environments.
In this article, we will see the history of distributed computing systems from the mainframe era to the current day to the
best of my knowledge. It is important to understand the history of anything in order to track how far we progressed. The
distributed computing system is all about evolution from centralization to decentralization, it depicts how the centralized
systems evolved from time to time towards decentralization. We had a centralized system like mainframe in early 1955 but
now we are probably using a decentralized system like edge computing and containers.
1. Mainframe: In the early years of computing between 1960-1967, mainframe-based computing machines were
considered as the best solution for processing large-scale data as they provided time-sharing to a local clients who
interacts with teletype terminals. This type of system conceptualized the client-server architecture. The client connects and
request the server and the server processes these request, enabling a single time-sharing system to send multiple
resources over a single medium amongst clients. The major drawback it faced was that it was quite expensive and that lead
to the innovation of early disk-based storage and transistor memory.
2. Cluster Networks: In the early 1970s, the development of packet-switching and cluster computing happens which was
considered an alternative for mainframe systems although it was expensive. In cluster computing, the underlying
hardware consists of a collection of similar workstations or PCs, closely connected by means of a high-speed local-area
network where each node runs the same operating system. Its purpose was to achieve parallelism. During 1967-1974, we
also saw the creation of ARPANET and an early network that enabled global message exchange allowing for services
hostable on remote machines across geographic bounds independent from a fixed programming model. TCP/IP protocol
that facilitated datagram and stream-orientated communication over a packet-switched autonomous network of networks
also came into existence. Communication was mainly through datagram transport.
3. Internet & PC’s: During this era, the evolution of the internet takes place. New technology such as TCP/IP had begun to
transform the Internet into several connected networks, linking local networks to the wider Internet. Thus, the number of
hosts connected to the network began to grow rapidly, therefore the centralized naming systems such as HOSTS.TXT
couldn’t provide scalability. Hence Domain Name Systems (DNSs) came into existence in 1985 and were able to transform
hosts’ domain names into IP addresses. Early GUI-based computers utilizing WIMP(windows, icons, menus, pointers) were
developed which provided feasibility of computing within the home, providing applications such as video games and web
browsing to consumers.
4. World Wide Web: During the 1980 – the 1990s, the creation of HyperText Transfer Protocol (HTTP) and HyperText
Markup Language (HTML) resulted in the first web browsers, websites,s, and web-server. It was developed by Tim Berners
Lee at CERN. Standardization of TCP/IP provided infrastructure for interconnected networks of networks known as
the World Wide Web (WWW). This leads to the tremendous growth of the number of hosts connected to the Internet. As
the number of PC-based application programs running on independent machines started growing, the communications
between such application programs became extremely complex and added a growing challenge in the aspect of
application-to-application interaction. With the advent of Network computing which enables remote procedure calls (RPCs)
over TCP/IP, it turned out to be a widely accepted way for application software communication. In this era, Servers provide
resources described by Uniform Resource Locators. Software applications running on a variety of hardware platforms, OS,
and different networks faced challenges when required to communicate with each other and share data. These demanding
challenges lead to the concept of distributed computing applications.
5. P2P, Grids & Web Services: Peer-to-peer (P2P) computing or networking is a distributed application architecture that
partitions tasks or workloads between peers without the requirement of a central coordinator. Peers share equal
privileges. In a P2P network, each client acts as a client and server.P2P file sharing was introduced in 1999 when American
college student Shawn Fanning created the music-sharing service Napster.P2P networking enables decentralized internet.
With the introduction of Grid computing, multiple tasks can be completed by computers jointly connected over a network.
It basically makes use of a data grid i.e., a set of computers can directly interact with each other to perform similar tasks by
using middleware. During 1994 – 2000, we also saw the creation of effective x86 virtualization. With the introduction of
web service, platform-independent communication was established which uses XML-based information exchange systems
that use the Internet for direct application-to-application interaction. Through web services Java can talk with Perl;
Windows applications can talk with Unix applications. Peer-to-peer networks are often created by collections of 12 or
fewer machines. All of these computers use unique security to keep their data, but they also share data with every other
node. In peer-to-peer networks, the nodes both consume and produce resources. Therefore, as the number of nodes
grows, so does the peer-to-peer network’s capability for resource sharing. This is distinct from client-server networks
where an increase in nodes causes the server to become overloaded. It is challenging to give nodes in peer-to-peer
networks proper security because they function as both clients and servers. A denial of service attack may result from this.
The majority of contemporary operating systems, including Windows and Mac OS, come with software to implement peer
6. Cloud, Mobile & IoT: Cloud computing came up with the convergence of cluster technology, virtualization, and
middleware. Through cloud computing, you can manage your resources and applications online over the internet without
explicitly building on your hard drive or server. The major advantage is provided that it can be accessed by anyone from
anywhere in the world. Many cloud providers offer subscription-based services. After paying for a subscription, customers
can access all the computing resources they need. Customers no longer need to update outdated servers, buy hard drives
when they run out of storage, install software updates or buy a software licenses. The vendor does all that for them.
Mobile computing allows us to transmit data, such as voice, and video over a wireless network. We no longer need to
connect our mobile phones with switches. Some of the most common forms of mobile computing is a smart cards,
smartphones, and tablets. IoT also began to emerge from mobile computing and with the utilization of sensors, processing
ability, software, and other technologies that connect and exchange data with other devices and systems over the Internet.
The evolution of Application Programming Interface (API) based communication over the REST model was needed to
implement scalability, flexibility, portability, caching, and security. Instead of implementing these capabilities at each and
every API separately, there came the requirement to have a common component to apply these features on top of the API.
This requirement leads the API management platform evolution and today it has become one of the core features of any
distributed system. Instead of considering one computer as one computer, the idea to have multiple systems within one
computer came into existence. This leads to the idea of virtual machines where the same computer can act as multiple
computers and run them all in parallel. Even though this was a good enough idea, it was not the best option when it comes
to resource utilization of the host computer. The various virtualization available today are VM Ware Workstation,
Microsoft Hyper-V, and Oracle Virtualization.
7. Fog and Edge Computing: When the data produced by mobile computing and IoT services started to grow tremendously,
collecting and processing millions of data in real-time was still an issue. This leads to the concept of edge computing in
which client data is processed at the periphery of the network, it’s all about the matter of location. That data is moved
across a WAN such as the internet, processed, and analyzed closer to the point such as corporate LAN, where it’s created
instead of the centralized data center which may cause latency issues. Fog computing greatly reduces the need for
bandwidth by not sending every bit of information over cloud channels, and instead aggregating it at certain access points.
This type of distributed strategy lowers costs and improves efficiencies. Companies like IBM are the driving force behind
fog computing. The composition of Fog and Edge computing further extends the Cloud computing model away from
centralized stakeholders to decentralized multi-stakeholder systems which are capable of providing ultra-low service
response times, and increased aggregate bandwidths.
The idea of using a container becomes prominent when you can put your application and all the relevant dependencies
into a container image that can be run on any environment which has a host operating system that can run containers. This
concept became more popular and improved a lot with the introduction of container-based application deployment.
Containers can act as same as virtual machines without having the overhead of a separate operating system. Docker and
Kubernetes are the two most popular container building platforms. They provide the facility to run in large clusters and
communication between services running on containers.
Today distributed system is programmed by application programmers while the underlying infrastructure management is
done by a cloud provider. This is the current state of distributed systems of computing and it keeps on evolving.
Middleware in Distributed Systems is a layer of software that acts as an intermediary between different software
applications or components within a distributed system, facilitating communication, data management, and service
integration. It enables diverse and distributed systems to work together seamlessly, hiding the complexities of the
underlying infrastructure and providing a consistent interface for applications.
Importance of Middleware in Distributed System
Facilitates Communication
o Seamless Interaction: Middleware enables different components, often running on separate machines,
to communicate effectively, overcoming the challenges posed by network heterogeneity and protocol
differences.
o Standardized Interfaces: It provides standardized communication protocols and APIs, simplifying the
development of distributed applications by abstracting complex communication details.
Supports Integration
o Service Integration: Middleware integrates diverse services and applications, ensuring that various
system components can work together, even if they were developed using different technologies or
platforms.
o Data and Application Integration: It enables the integration of various data sources and applications,
facilitating the creation of composite services and systems.
Enhances Scalability
o Load Balancing: It distributes workloads across multiple servers or components, optimizing resource
utilization and improving system responsiveness and reliability.
o Data Synchronization: It helps in synchronizing data across different components and databases,
maintaining consistency and coherence in distributed environments.
In distributed systems, middleware is crucial for enabling communication, integration, and management of various
software components and services. Here’s an overview of the primary types of middleware:
1. Communication Middleware
Message-Oriented Middleware (MOM): Manages the communication between distributed applications using
messages. It supports asynchronous message passing, queuing, and publish-subscribe models. Examples:
RabbitMQ, Apache Kafka.
Remote Procedure Call (RPC) Middleware: Facilitates remote procedure calls where a program can execute
procedures on a remote server as if they were local. Examples: gRPC, Apache Thrift.
2. Database Middleware
Object Request Brokers (ORBs): Facilitates communication between distributed objects in an object-oriented
system. ORBs handle requests and responses between objects across different locations. Examples: CORBA
(Common Object Request Broker Architecture).
Database Connectivity Middleware: Provides a layer that manages connections between applications and
database systems, supporting features like connection pooling and transaction management. Examples: JDBC
(Java Database Connectivity), ODBC (Open Database Connectivity).
3. Transaction Middleware
Transaction Processing Monitors (TPMs): Manage transactions across multiple systems, ensuring that all parts of
a distributed transaction are completed successfully. They handle transaction coordination, recovery, and
rollback. Examples: IBM CICS, BEA Tuxedo.
Two-Phase Commit Protocol: Ensures atomicity in distributed transactions by coordinating commit decisions
across multiple systems. It involves a preparation phase and a commit phase to ensure consistency.
4. Application Middleware
Enterprise Service Bus (ESB): Provides a communication backbone for integrating various applications and
services within an enterprise. It supports message routing, transformation, and service orchestration. Examples:
MuleSoft, Apache ServiceMix.
Web Middleware: Supports the development and deployment of web applications and services, handling tasks
like request routing, session management, and web service integration. Examples: Apache Tomcat, Microsoft IIS.
Middleware offers several benefits in distributed systems by providing essential services and abstractions that enhance the
functionality, performance, and manageability of complex environments. Here are the key benefits of middleware in
distributed systems:
Enhanced Communication
o Seamless Interaction: Middleware facilitates smooth and efficient communication between distributed
components, regardless of their location or underlying technologies.
o Standardized Interfaces: Provides standardized protocols and APIs that simplify communication and
interaction among diverse systems and applications.
Improved Integration
o Service Integration: Middleware enables the integration of various services and applications, allowing
them to work together harmoniously even if they were developed using different technologies or
platforms.
o Data Integration: Facilitates the integration of data from multiple sources, providing a unified view and
simplifying data access and management.
o Dynamic Resource Management: Supports dynamic scaling of resources by managing and allocating
resources efficiently, helping the system handle varying loads and demands.
o Load Balancing: Distributes workloads across multiple servers or components, optimizing resource
utilization and improving system performance and reliability.
Transaction Management
o Consistency and Reliability: Ensures the consistency and reliability of transactions across distributed
components through mechanisms like two-phase commit protocols, which coordinate and manage
transactions to ensure they are completed successfully or rolled back if necessary.
o Atomicity: Guarantees that transactions are processed as a single unit of work, providing atomicity and
integrity even in complex distributed environments.
Middleware plays a crucial role in distributed systems, but it also introduces several challenges that need to be addressed
to ensure effective performance and reliability. Here are some of the key challenges associated with middleware in
distributed systems:
Performance Overhead
o Latency and Throughput: Middleware can introduce additional latency and affect throughput due to its
processing and communication overhead. This is especially critical in high-performance and real-time
systems.
o Resource Utilization: The additional abstraction layers introduced by middleware can lead to
suboptimal resource utilization if not properly managed.
o System Complexity: Middleware adds another layer of complexity to the system, which can make
debugging, maintenance, and system understanding more challenging.
o Integration Challenges: Integrating middleware with existing systems or with other middleware
components can be complex, particularly when dealing with heterogeneous environments and
different technologies.
Scalability Concerns
o Scaling Middleware: Ensuring that middleware itself can scale effectively to handle increasing loads
and expanding distributed environments can be challenging.
o Dynamic Scaling: Managing dynamic scaling of middleware components and ensuring consistent
performance and availability as the system scales can be difficult.
Security Issues
o Vulnerabilities: Middleware can become a target for security attacks if not properly secured.
Vulnerabilities in middleware can expose the entire distributed system to risks.
o Access Control: Implementing robust access control and ensuring secure communication across
distributed components while using middleware can be complex.
Conclusion
In Conclusion, Middleware is a pivotal component in distributed systems, serving as the essential bridge that facilitates
communication, integration, and management of diverse and distributed software components. By abstracting complex
interactions between applications and underlying infrastructure, middleware enables seamless operation and enhances
the scalability, flexibility, and functionality of distributed environments.
In parallel computing multiple processors performs multiple tasks assigned to them simultaneously. Memory in parallel
systems can either be shared or distributed. Parallel computing provides concurrency and saves time and money.
Examples
Blockchains, Smartphones, Laptop computers, Internet of Things, Artificial intelligence and machine learning, Space
shuttle, Supercomputers are the technologies that uses Parallel computing technology.
Increased Speed: In this technique, several calculations are executed concurrently hence reducing the time of
computation required to complete large scale problems.
Efficient Use of Resources: Takes full advantage of all the processing units it is equipped with hence making the
best use of the machine’s computational power.
Scalability: Also the more processors built into the system, the more complex problems can be solved within a
short time.
Improved Performance for Complex Tasks: Best suited for activities which involve a large numerical calculation
like, number simulation, scientific analysis and modeling and data processing.
Complexity in Programming: Parallel writing programming that is used in organizing tasks in a parallel manner is
even more difficult than that of serial programming.
Synchronization Issues: Interaction of various processors when operating concurrently can become synchronized
and result in problem areas on the overall communication.
Hardware Costs: The implementation of parallel computing does probably involve the use of certain components
such as multi-core processors which could possibly be costly than the normal systems.
In distributed computing we have multiple autonomous computers which seems to the user as single system. In distributed
systems there is no shared memory and computers communicate with each other through message passing. In distributed
computing a single task is divided among different computers.
Examples
Artificial Intelligence and Machine Learning, Scientific Research and High-Performance Computing, Financial Sectors,
Energy and Environment sectors, Internet of Things, Blockchain and Cryptocurrencies are the areas where distributed
computing is used.
Fault Tolerance: The failure of one node means that this node is no longer part of the computations, but that is
not fatal for the entire computation since there are other computers participating in the process thereby making
the system more reliable.
Cost-Effective: Builds upon existing hardware and has flexibility in utilizing commodity machines instead of the
need to have expensive and specific processors for its use.
Scalability: The distributed systems have the ability to scale and expand horizontally through the addition of
more machines in the networks and therefore they can take on greater workloads and processes.
Geographic Distribution: Distributed computing makes it possible to execute tasks at different points thereby
eliminating latencies.
Communication Overhead: Inter node communication requirements can actually hinder the package transfer
between nodes that are geographically distant and hence the overall performance is greatly compromised.
Security Concerns: In general, distributed systems are less secure as compared to centralized system because
distributed systems heavily depend on a network.
Processors communicate with each other Computer communicate with each other through message
5.
through bus passing.
Conclusion
Parallel Computing and Distributed Computing are effective computational models developed with an aim to solve large
calamities. Parallel computing is suitable for accelerating computations of a single machine or clustered machines, with
emphasis on the rate of processing. On the hand, distributed on the other has many separate and independent computers
that are connected over the network focusing on scalability and fault tolerance. Each of the models presented has it own
strength and weakness, therefore, the choice between them depends on the conditions of the particular application or
system.
The Benefits of Distributed Systems have been widely recognized. They are due to their ability to Scale, Reliability,
Performance, Flexibility, Transparency, Resource-sharing, Geo-distribution, etc. In order to use the advantages of
Distributed Systems, appropriate support and environment are needed that supports execution and development of
Distributed Applications.
A distributed application is a program that runs on more than one machine and communicates through a network. It
consists of separate parts that execute on different nodes of the network and cooperate in order to achieve a common
goal. It uses Client-Server Model.
Distributed Computing Environment(DCE) is an integrated set of services and tools which are used for building and running
Distributed Applications. It is a collection of integrated software components/frameworks that can be installed as a
coherent environment on top of the existing Operating System and serve as a platform for building and running Distributed
Applications.
Using DCE applications, users can use applications and data at remote servers. Application programmers or clients need
not be aware of where their programs will run or where the data that they want to have access, will be located.
DCE was developed by the Open Software Foundation(OSF) using software technologies contributed by some of its
member companies which are now popularly known as The Open Group.
Remote Procedure Call(RPC): It is a call made when a Computer program wants to execute a subroutine in a
different computer(another computer on a shared network).
Distributed File System(DFS): It provides a transparent way of accessing a file in the system in the same way as if
it were at the same location.|
Directory Service: It is used to keep track location of Virtual Resources in the Distributed System. These
Resources include Files, Printers, Servers, Scanner, and other machines. This service prompts the user to ask for
resources(through the process) and provide them with convenience. Processes are unaware of the actual
location of resources.
Security Service: It allows the process to check for User Authenticity. Only an authorized person can have access
to protected and secured resources. It allows only an authorized computer on a network of Distributed Systems
to have access to secured resources.
Distributed Time Service: Inter-Process Communication between different system components requires
synchronization so that communication takes place in a designated order only. This service is responsible for
maintaining a global clock and hence synchronizing the local clocks with the notion of time.
Thread Service: The Thread Service provides the implementation of lightweight processes (threads). Helps in the
synchronization of multiple threads within a shared address space.
DCE Architecture
DCE supports the structuring of distributed computing systems into so-called cells which consist of 3 types of machines,
User, administrator, and Server. This is done to keep the size of the administration domain manageable. A cell is basically a
set of nodes that are managed together by one authority.
Cell boundaries of a cell represent security firewalls; access to resources in a foreign cell requires special authentication
and authorization procedures that are different from secure intra-cell interactions.
The highest privileges within a cell are assigned to a role called DCE cell administrator which has control over all system
services within the network, remotely. It has privileges over all resources within a Distributed Computing Environment
cell.
Major components of cell:
Distributed Time Server – provides the clock for synchronization of the entire cell.
Advantages of DCE:
Security
Reduced Risks