In this tutorial, we’ll take a look at distributed systems and distributed computing. First, we’ll define both terms, and outline their properties and characteristics. We’ll also review their uses and applications, as well as highlight the distinction between distributed systems and distributed computing.
2. Distributed Systems
Let’s start by defining a distributed system, and then proceed to discuss some of its basic principles and properties.
2.1. What Is a Distributed System
A distributed system is a system that encompasses several components that exist in different devices, usually located at different geographical locations. These physically separated components are usually connected over a network, and communicate through message passing. These components can be computer systems, resources, and processes, and are also referred to as nodes:
Although the different components in a distributed system are located in different places, the entire system functions as a single unit to process tasks and share resources. Furthermore, there are two major types of distributed systems: peer-to-peer systems, and client/server systems.
Peer-to-peer systems, as the name suggests, have all their components processing tasks and sharing resources equally. Due to the peer-to-peer connection between nodes, there is usually no need for centralized control in the network.
As opposed to peer-to-peer distributed systems, the nodes in client/server systems take on the roles of clients and servers. The client devices, or components, request resources, while the servers provide resources to the clients. There are also other alternative distributed systems, such as n-tier and three-tier distributed systems.
2.2. Properties of a Distributed System
We characterize distributed systems by distinct features, such as:
- Fault tolerance: the failure of a node in a distributed system doesn’t affect the overall performance of the entire system.
- Scalability: a distributed system is flexible in terms of the number of nodes that participate in the network. The system is capable of handling a growth or reduction in size.
- Resource sharing: the connection of nodes in a distributed system allows for the sharing of resources. For example, instead of each computer system being connected to one printer, a single printer can be shared by all the participating nodes in the system.
- Transparency: the ability of a distributed system to present itself as a single unit, concealing the fact that its resources are physically separate and located in multiple components
2.3. Benefits and Problems With Distributed System
We prefer distributed systems for the following reasons:
- Distributed systems are highly reliable, mainly because there are multiple computer systems. Therefore, in the event of one component failing, the distributed system will still function as normal.
- Distributed systems combine the processing capabilities of multiple nodes to render maximum performance.
- Additional components can be added to the system due to the flexible nature of distributed systems.
- The connection of multiple devices allows for the sharing of resources.
- It’s practically cheaper to implement a distributed system where multiple devices connect to share resources, as opposed to having single centralized systems.
Some challenges that exist with distributed systems are:
- Due to the participation of multiple nodes, variations in response times is a possibility. However, this must be dealt with to ensure synchronization in the system processes.
- Ensuring security in a distributed environment can be complex; a breach in security on a single node can affect and disable the entire distributed system.
- The network setup costs associated with distributed systems are usually high.
2.4. Applications of Distributed Systems
We employ distributed systems in distributed databases, distributed computing, distributed file systems, and distributed messaging systems. The Internet is the most widely known example of a distributed system. The Internet facilitates the connection of many different computer systems in different geographical locations to share information and resources.
3. Distributed Computing
Now we’ll dive into the specifics of distributed computing.
Distributed computing refers to the use of distributed systems to complete computing tasks. It applies the principles of distributed systems to execute programs on different computer systems connected in a distributed system. As such, different parts of the programs that are executed in distributed computing are partitioned and assigned to the different computing systems that exist in the network.
The use of different computer systems increases the available computing power and enables larger, more complex tasks to be executed. Distributed computing and distributed systems share the same basic properties of scalability, fault tolerance, resource sharing, and transparency.
Distributed computing and distributed systems share the same benefits; namely, they’re reliable, cheaper than centralized systems, and have larger processing capabilities. However, there’s a slight difference in the challenges faced in distributed computing. For example, it’s challenging to partition computational tasks into different parts that can be executed on different computers systems in parallel.
Additionally, we need to coordinate tasks in distributed computing.
3.1. Applications of Distributed Computing
Due to the notable benefits of distributed computing, we use it in mobile systems, social media networks, weather monitoring systems, and e-commerce systems. For example, Apache Hadoop is a well-known framework that facilitates distributed processing and distributed storage.
Although subtle, there are notable differences between distributed computing and distributed systems. For example, distributed computing is a category of distributed systems. The other differences are outlined as follows:
In this article, we defined distributed systems and distributed computing. We outlined their properties and applications, as well as the benefits and challenges that exist with each one. We also explained how the two terms relate to one another, as there are subtle differences between distributed systems and distributed computing.