What is distributed system? Sometimes, this is very critical to define a system, whether the provided system is distributed or not? well, so this completely depends on the surrounding attributes which you are looking for.
According to Andrew S. Tanenbaum
A Collection of Independent computers that appears it to users as one computer.
– Andrew S. Tanenbaum
1. Key Characteristics for Distributed Systems Architecture
To be truly reliable, a distributed system architecture must have the following characteristics:
- Fault-Tolerant: It can recover from component failures without performing incorrect actions.
- Highly Available: It can restore operations, permitting it to resume providing services even when some components have failed.
- Recoverable: Failed components can restart themselves and rejoin the system, after the cause of failure has been repaired.
- Consistent: The system can coordinate actions by multiple components often in the presence of concurrency and failure. This underlies the ability of a distributed system to act like a non-distributed system.
- Scalable: It can operate correctly even as some aspect of the system is scaled to a larger size. For example, we might increase the size of the network on which the system is running. This increases the frequency of network outages and could degrade a “non-scalable” system. Similarly, we might increase the number of users or servers, or overall load on the system. In a scalable system, this should not have a significant effect.
- Predictable Performance: The ability to provide desired responsiveness in a timely manner.
- Secure: The system authenticates access to data and services
These are high standards, which are challenging to achieve. Probably the most difficult challenge is a distributed system must be able to continue operating correctly even when components fail.
If you dig out into deeper you can find, three High level characteristics of this. as follows:
- The computers operates concurrently.
- The computers fails independently: in a big or small cluster of computer , any one can fail and that would not hamper whole task.
- The computer do not share a global clock: each one of the compute is asynchronous in nature and failing of one will not impact of another.
2. Example of Distributed Systems Architecture
- Amazon.com: for end user this one interface , probably lot of system which collect the information of your query underneath server.
- Cassandra database: This database is distributed system because of few reason , what are the reasons: distributed nature of data across the node, gossip protocol, heart beat, multiple nodes connected among each other to service even in fault-tolerance.
3. Few Distributed types of System
- Distributed Storage: e.g. of distributed system: MongoDB, Cassandra, HDFS, elastic, redis
- Computation framework: e.g. Hadoop, Spark, Storm
- Synchronization: e.g. NTP (Network Time Protocol), Vector Clock
- Consensus: e.g. as Apache Zookeeper, Paxos (distributed consensus algorithm)
- Messaging framework: e.g as Apache Kafka
4. Key design goals for distributed systems architecture
What is distributed systems architecture? well, answer of this question is not straight forward, you need to consider various factors of non functional requirement.
- High performance
Following are the references for distributed systems architecture.
Happy Learning 🙂 for what is distributed system?