Distributed computing is a computer system that runs on multiple devices, but that runs as a singular process. It’s a group of computers working together, but to the end user it looks like a single computer or process.
According to IBM:
“A distributed computer system consists of multiple software components that are on multiple computers, but run as a single system. The computers that are in a distributed system can be physically close together and connected by a local network, or they can be geographically distant and connected by a wide area network. A distributed system can consist of any number of possible configurations, such as mainframes, personal computers, workstations, minicomputers, and so on. The goal of distributed computing is to make such a network work as a single computer.”
What are the Benefits to Distributed Systems?
- Horizontal Scaling: Distributed systems allow for scaling the system by adding more “computers” rather than upgrading the hardware on a single device. Adding more devices and spreading the computing across more devices is called horizontal scaling. Speeding up a single device by upgrading the memory, for example, is known as vertical scaling. At first, adding more computers is an inefficient process, but once a smooth process is in place horizontal scalability becomes more efficient.
- More Fault Tolerance: If a process is spread across a number of machines in multiple data centers, a failure of a single machine will have a minor effect to the system as a whole. The redundancy of distributed systems
- Low Latency: A distributed system can have nodes in many locations, as opposed to a single device in a single location. This means that users can connect to the system using the node located closest to their network for better performance and lower latency.
What are the Disadvantages to Distributed Systems
- Complexity: Distributed systems are more difficult to deploy initially because there are more “devices” involved and the system needs software that can handle the distributed system.
- Higher Initial Costs: Setting up a distributed system is more costly than setting up a single system. The additional computing power needed for the system to communicate with itself also adds more costs.
- Security: Because there are more pieces in a distributed system, it’s more difficult to keep the system secure. While securing these kinds of systems is certainly possible, doing so on a single device would be a much simpler process.
Parallel vs. Distributed Computing Systems
Parallel Computing is a type of computing where many calculations or processes are carried out simultaneously. This type of computing can speed up certain processes because it will break down large problems into many small pieces and then run through those tasks simultaneously. Parallelism in computing has been used for a long time in high-performance computing, but it’s gaining broader interest due to fewer barriers to scaling these systems. Multi-core and multi-processor computers have made this type of processing more common and accessible.
Distributed Computing Systems involve multiple devices or processors working together to complete a task. Parallel and distributed computing are similar in that they involve multiple ‘computers’ or processors working through a single task. However, distributed computing covers a much broader range of functions and applications.
What is Distributing Computing Used For?
Distributed computing helps make large-scale projects feasible by combining the computing power of multiple machines. These systems are widely used for functions that require massive amounts of storage and computing power.
Examples of Distributed Systems
Intranets: A business may use a private network, called an “intranet” to share files and resources internally within a company. Modern intranets include search engines, user profiles, blogs, mobile apps and events planning included in their infrastructure. These features help access and modify files and information stored on many users’ devices within the company. These systems are “distributed” because the files are coming from every user’s device and the system as a whole uses resources from each user.
Electronic Banking: Electronic banking requires distributed computing to work. If someone uses a debit card to make a purchase, the point of sale computer has to communicate with the bank’s computer system to tell the bank where to send the money. The bank then has to verify that the person’s account has sufficient funds to complete the purpose and send that information back to the point of sale. These systems need to be fast (low latency), accurate, and stable (high fault tolerance) which are all characteristics of distributed computing systems.
Sensor Networks: Sensor networks collect data (from the sensors) and send that data to a centralized computer that processes the data. Each sensor is essentially a “computer” or a node on the system. All of the sensors work together and contribute to the main computer which can then process and analyze that data. This distributed network of nodes can acquire much larger data sets than a single device could.
Air Traffic Control Systems: Air traffic control systems rely heavily on information about the location of hundreds or thousands of airplanes and these systems must be extremely fault proof. If these systems fail, the results could be devastating. Air traffic control involves a number of sensors working together with many different control centers.