What is a Distributed System?
A distributed System is a collection of autonomous computer systems that are physically separated but are connected by a centralized computer network that is equipped with distributed system software. The autonomous computers will communicate among each system by sharing resources and files and performing the tasks assigned to them.
Important Topics for a Distributed System
- Types of Distributed Systems
- Example of a Distributed System
- Characteristics of Distributed System
- Advantages of Distributed System
- Disadvantages of Distributed System
- Use cases of Distributed System
- Challenges of Distributed Systems
- Are Distributed Systems and Microservices the Same?
Types of Distributed Systems
There are many models and architectures of distributed systems in use today.
- Client-server systems: The most traditional and simple type of distributed system, involves a multitude of networked computers that interact with a central server for data storage, processing, or other common goal.
- Peer-to-peer networks: They distribute workloads among hundreds or thousands of computers all running the same software.
- Cell phone networks: It is an advanced distributed system, sharing workloads among handsets, switching systems, and internet-based devices.
The most common forms of distributed systems today operate over the internet, handing off workloads to dozens of cloud-based virtual server instances that are created as needed, and then terminated when the task is complete.
Example of a Distributed System
Any Social Media can have its Centralized Computer Network as its Headquarters and computer systems that can be accessed by any user and using their services will be the Autonomous Systems in the Distributed System Architecture.
- Distributed System Software: This Software enables computers to coordinate their activities and to share the resources such as Hardware, Software, Data, etc.
- Database: It is used to store the processed data that are processed by each Node/System of the Distributed systems that are connected to the Centralized network.
- As we can see that each Autonomous System has a common Application that can have its own data that is shared by the Centralized Database System.
- To Transfer the Data to Autonomous Systems, Centralized System should be having a Middleware Service and should be connected to a Network.
- Middleware Services enable some services which are not present in the local systems or centralized system default by acting as an interface between the Centralized System and the local systems. By using components of Middleware Services systems communicate and manage data.
- The Data which is been transferred through the database will be divided into segments or modules and shared with Autonomous systems for processing.
- The Data will be processed and then will be transferred to the Centralized system through the network and will be stored in the database.
Characteristics of Distributed System
- Resource Sharing: It is the ability to use any Hardware, Software, or Data anywhere in the System.
- Openness: It is concerned with Extensions and improvements in the system (i.e., How openly the software is developed and shared with others)
- Concurrency: It is naturally present in Distributed Systems, that deal with the same activity or functionality that can be performed by separate users who are in remote locations. Every local system has its independent Operating Systems and Resources.
- Scalability: It increases the scale of the system as a number of processors communicate with more users by accommodating to improve the responsiveness of the system.
- Fault tolerance: It cares about the reliability of the system if there is a failure in Hardware or Software, the system continues to operate properly without degrading the performance the system.
- Transparency: It hides the complexity of the Distributed Systems to the Users and Application programs as there should be privacy in every system.
- Heterogeneity: Networks, computer hardware, operating systems, programming languages, and developer implementations can all vary and differ among dispersed system components.
Advantages of Distributed System
- Applications in Distributed Systems are Inherently Distributed Applications.
- Information in Distributed Systems is shared among geographically distributed users.
- Resource Sharing (Autonomous systems can share resources from remote locations).
- It has a better price performance ratio and flexibility.
- It has shorter response time and higher throughput.
- It has higher reliability and availability against component failure.
- It has extensibility so that systems can be extended in more remote locations and also incremental growth.
Disadvantages of Distributed System
- Relevant Software for Distributed systems does not exist currently.
- Security possess a problem due to easy access to data as the resources are shared to multiple systems.
- Networking Saturation may cause a hurdle in data transfer i.e., if there is a lag in the network then the user will face a problem accessing data.
- In comparison to a single user system, the database associated with distributed systems is much more complex and challenging to manage.
- If every node in a distributed system tries to send data at once, the network may become overloaded.
Use cases of Distributed System
- Finance and Commerce: Amazon, eBay, Online Banking, E-Commerce websites.
- Information Society: Search Engines, Wikipedia, Social Networking, Cloud Computing.
- Cloud Technologies: AWS, Salesforce, Microsoft Azure, SAP.
- Entertainment: Online Gaming, Music, youtube.
- Healthcare: Online patient records, Health Informatics.
- Education: E-learning.
- Transport and logistics: GPS, Google Maps.
- Environment Management: Sensor technologies.
Challenges of Distributed Systems
While distributed systems offer many advantages, they also present some challenges that must be addressed. These challenges include:
- Networklatency: The communication network in a distributed system can introduce latency, which can affect the performance of the system.
- Distributed coordination: Distributed systems require coordination among the nodes, which can be challenging due to the distributed nature of the system.
- Security: Distributed systems are more vulnerable to security threats than centralized systems due to the distributed nature of the system.
- Data consistency: Maintaining data consistency across multiple nodes in a distributed system can be challenging.
Are Distributed Systems and Microservices the Same?
Distributed systems and microservices are related concepts but not the same. Let’s break down the differences:
- Distributed Systems :
- A distributed system is a collection of independent computers that appear to its users as a single coherent system.
- In a distributed system, components located on networked computers communicate and coordinate their actions by passing messages.
- Distributed systems can encompass various architectures, including client-server, peer-to-peer, and more.
- Microservices :
- Microservices is an architectural style that structures an application as a collection of small, autonomous services, modeled around a business domain.
- Each microservice is a self-contained unit that can be developed, deployed, and scaled independently.
- Microservices communicate with each other over a network, typically using lightweight protocols like HTTP or messaging queues.
While microservices can be implemented in a distributed system, they are not same. Microservices focus on architectural design principles, emphasizing modularity, scalability, and flexibility, whereas distributed systems encompass a broader range of concepts, including communication protocols, fault tolerance, and concurrency control, among others.
Conclusion
Distributed systems are becoming increasingly popular due to their high availability, scalability, and fault tolerance. However, they also present some challenges that must be addressed. By understanding the characteristics and challenges of distributed systems, developers can design and implement effective distributed systems that meet the needs of their users.