What Are Distributed Systems? Architecture Types, Key Components, and Examples

Distributed systems consist of several components spread across different computers but operate as a single network.

January 12, 2022

Distributed computing is defined as a system consisting of software components spread over different computers but running as a single entity. A distributed system can be an arrangement of different configurations, such as mainframes, computers, workstations, and minicomputers. This article gives in-depth insights into the working of distributed systems, the types of system architectures, and essential components with real-world examples.

What Is Distributed Computing?

Distributed computing is a system of software components spread over different computers but running as a single entity. A distributed system can be an arrangement of different configurations, such as mainframes, computers, workstations, and minicomputers.

Distributed System

Distributed System

Sharing resources such as hardware, software, and data is one of the principles of cloud computing. With different levels of openness to the software and concurrency, it’s easier to process data simultaneously through multiple processors. The more fault-tolerant an application is, the more quickly it can recover from a system failure.

Organizations have turned to distributed computing systems to handle data generation explosion and increased application performance needs. These distributed systems help businesses scale as data volume grows. This is especially true because the process of adding hardware to a distributed system is simpler than upgrading and replacing an entire centralized system made up of powerful servers.

Distributed systems consist of many nodes that work together toward a single goal. These systems function in two general ways, and both of them have the potential to make a huge difference in an organization.

  • The first type is a cohesive system where the customer has each machine, and the results are routed from one source.
  • The second type allows each node to have an end-user with their own needs, and the distributed system facilitates sharing resources or communication.

Benefits of a multi-computer model

  • Improved scalability: Distributed computing clusters are a great way to scale your business. They use a ‘scale-out architecture,’ which makes adding new hardware easier as load increases.
  • Enhanced performance: This model uses ‘parallelism’ for the divide-and-conquer approach. In other words, all computers in the cluster simultaneously handle a subset of the overall task. Therefore, as the load increases, businesses can add more computers and optimize overall performance.
  • Cost-effectiveness: The cost-efficiency of a distributed system depends on its latency, response time, bandwidth, and throughput. Distributed systems work toward a common goal of delivering high performance by minimizing latency and enhancing response time and throughput. They achieve this goal by using low-cost commodity hardware to ensure zero data loss, making initial deployments and cluster expansions easy.

See More: What Is Horizontal Cloud Scaling? Definition, Process, and Best Practices

Architecture of Distributed Systems

Cloud-based software, the backbone of distributed systems, is a complicated network of servers that anyone with an internet connection can access. In a distributed system, components and connectors arrange themselves in a way that eases communication. Components are modules with well-defined interfaces that can be replaced or reused. Similarly, connectors are communication links between modules that mediate coordination or cooperation among components.

A distributed system is broadly divided into two essential concepts — software architecture (further divided into layered architecture, object-based architecture, data-centered architecture, and event-based architecture) and system architecture (further divided into client-server architecture and peer-to-peer architecture).

Let’s understand each of these architecture systems in detail:

1. Software architecture

Software architecture is the logical organization of software components and their interaction with other structures. It is at a lower level than system architecture and focuses entirely on components; e.g., the web front end of an ecommerce system is a component. The four main architectural styles of distributed systems in software components entail:

i) Layered architecture

Layered architecture provides a modular approach to software. By separating each component, it is more efficient. For example, the open systems interconnection (OSI) model uses a layered architecture for better results. It does this by contacting layers in sequence, which allows it to reach its goal. In some instances, the implementation of layered architecture is in cross-layer coordination. Under cross-layer, the interactions can skip any adjacent layer until it fulfills the request and provides better performance results.

Layered Architecture

Layered Architecture

Layered architecture is a type of software that separates components into units. A request goes from the top down, and the response goes from the bottom up. The advantage of layered architecture is that it keeps things orderly and modifies each layer independently without affecting the rest of the system.

ii) Object-based architecture

Object-based architecture centers around an arrangement of loosely coupled objects with no specific architecture like layers. Unlike layered architecture, object-based architecture doesn’t have to follow any steps in a sequence. Each component is an object, and all the objects can interact through an interface (or connector). Under object-based architecture, such interactions between components can happen through a direct method call.

Object-based Architecture

Object-based Architecture

At its core, communication between objects happens through method invocations, often called remote procedure calls (RPC). Popular RPC systems include Java RMI and Web Services and REST API Calls. The primary design consideration of these architectures is that they are less structured. Here, component equals object, and connector equals RPC or RMI.

iii) Data-centered architecture

Data-centered architecture works on a central data repository, either active or passive. Like most producer-consumer scenarios, the producer (business) produces items to the common data store, and the consumer (individual) can request data from it. Sometimes, this central repository can be just a simple database.

Data-centered Architecture

Data-centered Architecture

All communication between objects happens through a data storage system in a data-centered system. It supports its stores’ components with a persistent storage space such as an SQL database, and the system stores all the nodes in this data storage.

iv) Event-based architecture

In event-based architecture, the entire communication is through events. When an event occurs, the system gets the notification. This means that anyone who receives this event will also be notified and has access to information. Sometimes, these events are data, and at other times they are URLs to resources. As such, the receiver can process what information they receive and act accordingly.

Event-Based Architecture

Event-Based Architecture

One significant advantage of event-based architecture is that the components are loosely coupled. Eventually, it means that it’s easy to add, remove, and modify them. To better understand this, think of publisher-subscriber systems, enterprise services buses, or akka.io. One advantage of event-based architecture is allowing heterogeneous components to communicate with the bus, regardless of their communication protocols.

See More: What Is Middleware? Definition, Architecture, and Best Practices

2. System architecture

System-level architecture focuses on the entire system and the placement of components of a distributed system across multiple machines. The client-server architecture and peer-to-peer architecture are the two major system-level architectures that hold significance today. An example would be an ecommerce system that contains a service layer, a database, and a web front.

i) Client-server architecture

As the name suggests, client-server architecture consists of a client and a server. The server is where all the work processes are, while the client is where the user interacts with the service and other resources (remote server). The client can then request from the server, and the server will respond accordingly. Typically, only one server handles the remote side; however, using multiple servers ensures total safety.

Client-server Architecture

Client-server Architecture

Client-server architecture has one standard design feature: centralized security. Data such as usernames and passwords are stored in a secure database for any server user to have access to this information. This makes it more stable and secure than peer-to-peer. This stability comes from client-server architecture, where the security database can allow resource usage in a more meaningful way. The system is much more stable and secure, even though it isn’t as fast as a server. The disadvantages of a distributed system are its single point of failure and not being as scalable as a server.

ii) Peer-to-peer (P2P) architecture

A peer-to-peer network, also called a (P2P) network, works on the concept of no central control in a distributed system. A node can either act as a client or server at any given time once it joins the network. A node that requests something is called a client, and one that provides something is called a server. In general, each node is called a peer.

Peer-to-Peer Architecture

Peer-to-Peer Architecture

If a new node wishes to provide services, it can do so in two ways. One way is to register with a centralized lookup server, which will then direct the node to the service provider. The other way is for the node to broadcast its service request to every other node in the network, and whichever node responds will provide the requested service.

P2P networks of today have three separate sections:

  • Structured P2P: The nodes in structured P2P follow a predefined distributed data structure.
  • Unstructured P2P: The nodes in unstructured P2P randomly select their neighbors.
  • Hybrid P2P: In a hybrid P2P, some nodes have unique functions appointed to them in an orderly manner.

See More: What Is Utility Computing? Definition, Process, Examples, and Best Practices 

Key Components of a Distributed System

The three basic components of a distributed system include primary system controller, system data store, and database. In a non-clustered environment, optional components consist of user interfaces and secondary controllers.

Main Components of a Distributed System

Main Components of a Distributed System

1. Primary system controller

The primary system controller is the only controller in a distributed system and keeps track of everything. It’s also responsible for controlling the dispatch and management of server requests throughout the system. The executive and mailbox services are installed automatically on the primary system controller. In a non-clustered environment, optional components consist of a user interface and secondary controllers.

2. Secondary controller

The secondary controller is a process controller or a communications controller. It’s responsible for regulating the flow of server processing requests and managing the system’s translation load. It also governs communication between the system and VANs or trading partners.

3. User-interface client

The user interface client is an additional element in the system that provides users with important system information. This is not a part of the clustered environment, and it does not operate on the same machines as the controller. It provides functions that are necessary to monitor and control the system.

4. System datastore

Each system has only one data store for all shared data. The data store is usually on the disk vault, whether clustered or not. For non-clustered systems, this can be on one machine or distributed across several devices, but all of these computers must have access to this datastore.

5. Database

In a distributed system, a relational database stores all data. Once the data store locates the data, it shares it among multiple users. Relational databases can be found in all data systems and allow multiple users to use the same information simultaneously.

See More: What Is Elastic Computing? Definition, Examples, and Best Practices

Examples of a Distributed System

When processing power is scarce, or when a system encounters unpredictable changes, distributed systems are ideal, and they help balance the workload. Hence distributed systems have boundless use cases varying from electronic banking systems to multiplayer online games. Let’s check out more explicit instances of distributed systems:

1. Networks

The 1970s saw the invention of Ethernet and LAN (local area networks), which enabled computers to connect in the same area. Peer-to-peer networks developed, and e-mail and the internet continue to be the biggest examples of distributed systems. 

2. Telecommunication networks

Telephone and cellular networks are other examples of peer-to-peer networks. Telephone networks started as an early example of distributed communication, and cellular networks are also a form of distributed communication systems. With the implementation of Voice over Internet (VoIP) communication systems, they grow more complex as distributed communication networks.

3. Real-time systems

Real-time systems are not limited to specific industries. These systems can be used and seen throughout the world in the airline, ride-sharing, logistics, financial trading, massively multiplayer online games (MMOGs), and ecommerce industries. The focus in such systems is on the correspondence and processing of information with the need to convey data promptly to a huge number of users who have an expressed interest in such data.

4. Parallel processors

Parallel computing splits specific tasks among multiple processors. This, in turn, creates pieces to put together and form an extensive computational task. Previously, parallel computing only focused on running software on multiple threads or processors accessing the same data and memory. As operating systems became more prevalent, they too fell into the category of parallel processing.

5. Distributed database systems

A distributed database is spread out across numerous servers or regions. Data can be replicated across several platforms. A distributed database system can be either homogeneous or heterogeneous in nature. A homogeneous distributed database uses the same database management system and data model across all systems. 

Adding new nodes and locations makes it easier to control and scale performance. On the other hand, multiple data models and database management systems are possible with heterogeneous distributed databases. Gateways are used to translate data across nodes and are typically created due to the merger of two or more applications or systems. 

6. Distributed artificial intelligence

Distributed artificial intelligence is one of the many approaches of artificial intelligence that is used for learning and entails complex learning algorithms, large-scale systems, and decision making. It requires a large set of computational data points located in various locations.

A few real-world examples of distributed systems include:

  1. Video-rendering systems
  2. Scientific computing
  3. Airline and hotel reservation
  4. Cryptocurrency processors like Bitcoin
  5. P2P file-sharing like BitTorrent
  6. Multiplayer video games
  7. E-learning applications
  8. Distributed supply chains like Amazon

Takeaway

Distributed systems are the most significant benefactor behind modern computing systems due to their capability of providing scalable and improved performance. Distributed systems are an essential component of wireless networks, cloud computing, and the internet. Since they can draw on the resources of other devices and processes, distributed systems offer some features that would be hard or even impossible to develop on a singular system and have become immensely reliable by combining the power of multiple machines.

Are you planning to deploy distributed systems in your organization? Let us know on LinkedInOpens a new window , TwitterOpens a new window , or FacebookOpens a new window . We’d love to hear from you.

MORE ON NETWORKING

Remya Mohanan  
Remya has been an IT professional since 2010, with experience in web development, DevOps and security. She has worked as a Reactjs developer having experience in other technologies like Ruby on Rails and Nodejs. She has worked with a New York based startup as one of the core team members and worked with the team in establishing the entire architecture and successfully implemented DevOps. She has successfully showcased her passion for, and proven ability to translate complex business problems into effective software solutions. Currently, she is a Creative Director. Her strong IT background allows her to not just deliver stunning design creatives, but also provide technical solutions like mobile and web applications.
Take me to Community
Do you still have questions? Head over to the Spiceworks Community to find answers.