Distributed System Architecture
A distributed system is a system with multiple components located on different machines communicating and coordinating actions to appear as a single consistent system to the end user.
In computer systems, we basically do two things: data storage and computing. Our goal is to solve a problem. The nature and/or size of this problem forces us to use multiple computers/threads.
There are two general ways that distributed systems function:
Each machine works toward a common goal and the end-user views results as one cohesive unit.
Each machine has its own end user, and the distributed system facilitates by sharing resources or communication services.
Three Reasons to Decide to Use Distributed Systems
- Horizontally Scalable — Since computing takes place independently on each node, it is easy and generally low-cost to add additional nodes and functionality, as necessary.
- Reliability — Most distributed systems are fault-tolerant as they can be combined with hundreds of nodes that work together. The system generally does not experience any disruptions if a single machine fails.
- Performance —Distributed systems are extremely efficient because workloads can be split and sent to multiple machines.
It can be extremely hard to set up a required architectural design, software, and error recovery for an effective distributed system. But we, as MINDTRO, know these challenges and overcome them with our competence and experience.
Types of Distributed Systems
Distributed systems typically fall within one of four different basic architectural models:
Client-Server — Clients contact the server for data, then format it and display it to the end user. The end user can also make a change from the client-side and commit it back to the server to make it permanent.
Three-Tier — Information about the client is stored in a middle tier rather than on the client to simplify the application deployment. This architecture model is most common for web applications.
Multi-Tier — It is generally used when an application or server needs to forward requests to additional enterprise services on the network.
Peer-to-peer — There are no additional machines that are used to provide services or manage resources. Responsibilities are uniformly distributed among machines in the system, that can serve as either client or server.
Distributed systems can consist of any machine that can connect to a network, have local memory, and communicate by transmitting messages. Distributed systems can support many more requests and compute work than a standard single system by spreading requests and workloads.