Tech moves fast! Stay ahead of the curve with Techopedia!
Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.
A distributed system is any network structure that consists of autonomous computers that are connected using a distribution middleware. Distributed systems facilitate sharing different resources and capabilities, to provide users with a single and integrated coherent network.
The opposite of a distributed system is a centralized system. If all of the components of a computing system reside in one machine, as was the case with early mainframes such as Von Neumann machines, it is not a distributed system.
The key features of a distributed system are:
The key goals of a distributed system include:
Transparency: Achieving the image of a single system image without concealing the details of the location, access, migration, concurrency, failure, relocation, persistence and resources to the users
Openness: Making the network easier to configure and modify
Reliability: Compared to a single system, a distributed system should be highly capable of being secure, consistent and have a high capability of masking errors.
Performance: Compared to other models, distributed models are expected to give a much-wanted boost to performance.
Scalability: Distributed systems should be scalable with respect to geography, administration or size.
Challenges for distributed systems include:
Security is a big challenge in a distributed environment, especially when using public networks.
Fault tolerance could be tough when the distributed model is built based on unreliable components.
Coordination and resource sharing can be difficult if proper protocols or policies are not in place.
Process knowledge should be put in place for the administrators and users of the distributed model.
In a sense, any system that has autonomous computers working together is a distributed system. The Internet, company intranets and telecom networks are all examples of distributed systems.
Then there's also the definition of a component as a machine. The machine has to have two things – first, it has to have local memory, and secondly, it has to connect to the network. With these two things in abundant supply in modern networks, it’s easy to set up distributed systems to do sophisticated work. One of the big questions, though, is how to facilitate the network build, for example, whether to use more traditional topologies, or move toward container or VM virtualization, or utilize cloud systems to abstract topologies to the vendor.
Various types of distributed systems are used to create those networks that serve people in the ways mentioned above.
One fundamental type of distributed system is a client/server system that splits up functionality into actions by individual components called “clients” and responses by a provider on the server-side.
In addition, new types of distributed systems may consist of peer-to-peer networks. These are useful when there's already a networked mesh of components, for example, in autonomous peer-to-peer systems or peer-to-peer systems that use individual smartphone or mobile phone devices. The idea of a decentralized peer-to-peer Internet has also been floated and similar networks are evolving with the advent of the Internet of Things and the connectivity that entails.
The world of virtualization has also changed how we view distributed systems. No matter what the model is, today's distributed systems are more likely to be built out of virtual components than constructed on bare-metal. With the logical partitioning of systems, and consequent versatility, it becomes easier to stand up distributed systems and services on the fly.