0% found this document useful (0 votes)
2 views

Lecture 28 - Introduction to Distributed Computing

Distributed computing involves multiple software components across various computers working as a unified system, offering benefits like scalability, redundancy, and improved performance. It allows for resource sharing and can operate across different geographical locations, utilizing technologies such as Java RMI and JMS for communication. Key design considerations include communication protocols, error handling, load balancing, and security measures.

Uploaded by

alfredjoso847
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Lecture 28 - Introduction to Distributed Computing

Distributed computing involves multiple software components across various computers working as a unified system, offering benefits like scalability, redundancy, and improved performance. It allows for resource sharing and can operate across different geographical locations, utilizing technologies such as Java RMI and JMS for communication. Key design considerations include communication protocols, error handling, load balancing, and security measures.

Uploaded by

alfredjoso847
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

What is Distributed Computing?

● A distributed computer system comprises multiple software components


distributed across multiple computers, functioning as a unified system.
● These computers can either be physically close and connected through a
local network or geographically distant with a wide area network connection.
● Distributed systems can adopt different configurations, including mainframes,
personal computers, workstations, and minicomputers.
● The main objective of distributed computing is to enable the network to
operate as a single cohesive computer.
● Distributed systems offer numerous advantages compared to centralized
systems, including:
○ Scalability: The system can easily expand by adding more machines as
required.
○ Redundancy: Multiple machines can provide the same services,
ensuring uninterrupted operation even if one machine becomes
unavailable. Additionally, employing smaller machines for redundancy
doesn't have to incur excessive costs.
● Distributed computing systems can be implemented using hardware from
different vendors and can leverage standards-based software components.

1
● They are independent of the underlying software, capable of running on
various operating systems and utilizing different communication protocols.
● For instance, the hardware may employ UNIX or Linux operating systems,
while communication between machines can utilize SNA or TCP/IP over
Ethernet or Token Ring.

Benefits of Distributed Computing


● Distributed computing offers several advantages over traditional centralized
computing models:
a. Performance: By distributing the workload, tasks can be executed in
parallel, leading to improved performance and reduced execution
time.
b. Scalability: Distributed systems can easily scale by adding more
machines to the network, allowing for handling increased workloads
and user demands.
c. Reliability and Fault Tolerance: Distributed systems can be designed to
be resilient to failures by replicating data and services across multiple
nodes. If one node fails, the system can continue operating without
interruption.
d. Resource Sharing: Distributed systems enable efficient utilization of
resources by allowing multiple users or applications to access and
share them.
e. Geographical Distribution: Distributed systems can span across
multiple geographical locations, facilitating collaboration and data
sharing among remote teams.

Java for Distributed Computing


● Java provides robust features and libraries for building distributed
applications.
● The key technologies and concepts include:

2
1. Remote Method Invocation (RMI): Java RMI enables objects residing on
different Java Virtual Machines (JVMs) to communicate and invoke methods
remotely. RMI simplifies distributed computing by abstracting network
communication details.

2. Java Remote Method Protocol (JRMP): JRMP is the underlying protocol used
by Java RMI to facilitate communication between client and server
components.

3. Java Messaging Service (JMS): JMS is a messaging standard that allows


asynchronous communication between distributed components using
message-oriented middleware.

4. Java Network Programming: Java provides powerful network programming


APIs, such as sockets, to establish connections, transfer data, and implement
network protocols.

5. Java Enterprise Edition (Java EE): Java EE offers a comprehensive platform


for developing distributed enterprise applications, providing features like
web services, messaging, and distributed transactions.

Design Considerations:
● When developing distributed applications in Java, consider the following
design aspects:
○ Communication Protocols: Choose appropriate communication
protocols, such as TCP/IP or HTTP, based on the application
requirements.
○ Data Serialization: Ensure proper serialization and deserialization of
data when transmitting objects across the network.

3
○ Error Handling and Fault Tolerance: Implement error handling
mechanisms and strategies for handling network failures, timeouts,
and exceptions to ensure the reliability of the distributed system.
○ Load Balancing: Distribute the workload evenly across multiple nodes
to achieve optimal resource utilization and prevent bottlenecks.
○ Security: Implement security measures, such as authentication and
encryption, to protect sensitive data transmitted over the network.

Examples of Distributed Computing:


1. Client-Server Applications: Implement client-server architectures where
clients request services or resources from a central server. A common design
for client/server has 3 tiers: a client that interacts with the server, an
application server that contains the business logic, and a resource manager
that stores the data

2. Distributed File Systems: Build distributed file systems that store and retrieve
files across multiple machines transparently.

4
3. Message Queuing Systems: Develop messaging systems that enable
asynchronous communication between distributed components.

4. Distributed Data Processing: Utilize distributed computing frameworks like


Apache Hadoop or Apache Spark to process large datasets across clusters of
machines.

You might also like