Distributed computing uses numerous computing resources in different operating locations for a single computing purpose.
Distributed computing systems make things happen in a big way. Think about it the next time you play a massively multiplayer online (MMO) game. To effectively manage an MMO, it takes entire systems coming together and working in close conjunction to deliver a seamless online experience that’s simultaneously being shared by thousands of players in a real-time environment.
Distributed computing helps providers marshal that kind of coordinated synchronization and computer processing power toward a common goal.
And that’s just one example of the many, wide-ranging applications for distributed computing services now in use, including creating vivid 3D graphics for video animations, training neural networks that mimic the human brain's functionality, and solving extremely complex equations related to chemistry and physics.
Typically, the distributed computing model takes the most intensive computing tasks and workloads and deals with the most serious computational challenges, which is why it requires the use of multiple components and shared memory.
Distributed computing brings together multiple computers, servers and networks to accomplish computing tasks of widely varying sizes and purposes. In small, distributed computing systems with components near each other, these components can be linked through a local area network (LAN).
In larger distributed systems whose components are separated by geography, components are linked through wide area networks (WAN). The components in a distributed system share information through whichever type of network is being used. The best-known example of a distributed system is the Internet. Perhaps the most controversial example of a distributed system in recent times is cryptocurrency.
From a computational perspective, in terms of the number of components typically involved, even the most basic forms of distributed computing usually contain three basic components:
However, there aren’t any hard and fast rules limiting what constitutes a circumstance of distributed computing or how many software components are needed to bring its functionality to life. There could be a handful of components working within that chain (or network), or the instance could incorporate considerably more.
This is one of the great advantages of using a distributed computing system; the system can be expanded by adding more machines. The other significant advantage is increased redundancy, so if one computer in the network fails for whatever reason, the work of the system continues unabated, despite that point of failure.
This concept of added redundancy goes hand in hand with an emphasis on fault tolerance. Fault tolerance is a corrective process that allows an OS to respond and correct a failure in software or hardware while the system continues to operate. Fault tolerance has come to be used as a general measure of ongoing business viability in the face of a disrupting failure.
So distributed computing systems aren’t bound by limits on the number of components. Nor is there any requirement that those components be physically located near each other and connected by local area networks. Thanks to the expanded capabilities of wide area networks, the computers of a distributed computing system can be separated by continents while still retaining their operability.
The goal of distributed computing systems is to make that distributed computing network—no matter how large and no matter where its components may be located—function as if it were a single computer. This coordination is accomplished through an elaborate system of message-passing between the various components.
Communication protocols govern that back-and-forth exchange of messages and create a form of relationship that exists between these components. This relationship is known as “coupling,” which is typically expressed in one of two forms:
Distributed computing also deals with both the positive and negative effects of concurrency, which is the simultaneous execution of multiple operating instruction sequences. Chief among its positive qualities is the fact that concurrency enables the parallel computing of multiple process threads. (Parallel computing should not be confused with parallel processing, which is a process whereby runtime tasks are broken down into multiple smaller tasks.)
The negatives associated with concurrency often include increased latency and even bottlenecks wherein traffic grinds to a near-halt due to overloading the distributed computing system with an excessive number of component requests.
Concurrency differs from the concept of multithreading, which allows one program to remain running while other tasks are being performed in the background. Concurrency represents a larger drain on resources since multiple threads are running at the same time and accessing shared resources simultaneously.
Some processing workloads are enormous, and more than most single systems can accommodate. Distributed computing shares such workloads among multiple pieces of equipment, so big jobs can be tackled capably.
Distributed computing operates based on the concept of shared assets, and it supports the sharing of resources like data, software and hardware between the various components within that distributed computing instance.
The online traffic of many organizations is subject to rapid and dramatic changes, possibly because of reported news or other factors. Distributed computing provides the flexibility companies need to withstand such surges.
Distributed computing ramps up performance levels by splitting large processing jobs into smaller computing tasks, which are shared by numerous computers. This results in a cumulative amount of processing speed and greater total storage.
While it’s true that distributed computing, with its multiple systems, possesses more up-front costs than centralized processing systems, over time, those costs average out because of cost efficiencies achieved through lower latency and faster response times, ultimately making distributed computing more cost-effective than centralized systems.
Distributed computing types are classified according to the distributed computing architecture each employ.
Client-server systems use a client-server architecture that allows them to be used with more than a single system. In it, a client will direct input to the server in the form of a request. This communication will typically involve either a command that a particular task be performed or a request for more computing resources. The server then works to fulfill that task or allocate the requested resources. Once accomplished, the server responds to the client with a message concerning the action taken.
While centralized systems use client-server architecture, a peer system relies upon peer architecture (often called peer-to-peer architecture). Peer systems utilize nodes, which effectively can function as either client or server—either identifying needs and issuing requests or working to fulfill those needs and report back on operations. As the name implies, there’s no hierarchy in peer systems, so programs operating in peer-to-peer systems can communicate freely with each other and transfer data via peer networks.
Middleware can be thought of as a type of “middleman” that operates between two distinct applications, which is to say that middleware is itself an application that resides between two apps and supplies service to both. Middleware has an interpretive aspect as well. It functions as a translator between various interoperability apps that are being run on different systems and allows those apps to freely exchange data.
Three-tier systems are so named because of the number of layers used to represent a program’s functionality. As opposed to typical client-server architecture in which data is placed within the client system, the three-tier system instead keeps data stored in its middle layer, which is called the Data Layer. The Application Layer surrounds the Data Layer on one of its sides, while the Presentation Layer surrounds the Data Layer on the other side. Three-tier systems are routinely used in various web applications.
Sometimes referred to as multitiered distributed systems, N-tier systems are unlimited in their capacity for network functions, which they route to other apps for processing. The architecture of N-tier systems is like that found in three-tier systems. N-tier systems are often used as the architectural basis for numerous web services and data systems.
Distributed computing enables the use of different programming paradigms (which can be thought of as programming styles):
Online banking shows the dexterity of distributed computing by occurring in numerous places at once, often with different bank locations charged with housing one of the servers behind key service offerings (like customer service, security and transaction processing). Everything happens instantly and seamlessly, just as bank customers expect.
Both artificial intelligence (AI) and machine learning (ML) are in the process of revolutionizing many technological fields, but nowhere are their effects more pronounced right now than in the computing industry itself. Both exploding technologies make extensive use of distributed computing. The algorithms behind AI and ML need large volumes of data to train their models, and distributed computing is supplying the processing muscle that’s required.
Distributed computing is now being used by the energy and environmental sectors. On the energy side, distributed computing is helping smart-grid technology regulate usage and optimize energy consumption. Smart grids are also using distributed computing to assemble environmental data from different input devices, like sensors and smart meters.
Workers in specific areas of finance are already using distributed computing systems. Take risk management, in which financial institutions need vast realms of data to execute huge calculations to better inform decision-making about probability and risk assessments. Distributed computing ensures computational loads are shared evenly across multiple systems.
Distributed computing has assisted numerous scientific disciplines and contributed to some of science’s most notable achievements. Examples include the Large Hadron Collider, the world’s most powerful particle accelerator. The experiments behind it depend on extreme amounts of data collection and analysis, requiring the use of distributed computing. Similarly, distributed computing served the same purpose for the Human Genome Project, as it set out to map human DNA sequences. Distributed computing also performs essential roles in weather forecasting and climate modeling.
Discover how a hybrid cloud infrastructure can power your AI strategy. Learn from IBM experts how to transform existing technology into an agile, AI-ready system, driving innovation and efficiency across your business operations.
Explore how hybrid cloud solutions can optimize your AI-driven business operations. Learn from case studies and featured solutions to see how companies are using IBM’s hybrid cloud to achieve greater efficiency, scalability and security.
Learn about the key differences between infrastructure as a service (IaaS), platform as a service (PaaS) and software as a service (SaaS). Explore how each cloud model provides varying levels of control, scalability and management to meet different business needs.
Discover the hidden costs of scaling generative AI and learn from experts how to make your AI investments more efficient and impactful.
IBM Cloud Infrastructure Center is an OpenStack-compatible software platform for managing the infrastructure of private clouds on IBM zSystems and IBM LinuxONE.
Discover servers, storage and software designed for your enterprise hybrid cloud and AI strategy.
Find the right cloud infrastructure solution for your business needs and scale resources on demand.