Nearly all the software we use today is distributed or involves distributed computing. Distributed systems are all around us—Google search engine, amazon platforms, Netflix, blockchain, online gaming, etc. The simplest example of a distributed system is a client-server model.
A distributed system is a collection of independent software or hardware components called nodes, linked together by means of a network. they work together coherently by coordinating and communicating through message passing or events to fulfill one particular end goal.
A node is a software or hardware component, that has its own processor and memory and is able to communicate with the rest of the system.
Nodes form open groups — a network of nodes that is open to the external world, thus making joining the network easy. Thus the external elements can communicate with the system. The Internet is one big giant distributed system that falls under this category.
Nodes can also form closed groups which are restrictive in terms of their membership, authentication, and resource accessibility. Intranets fall into that category.
For Example —
Google search system. Each request is worked upon by hundreds of computers that crawl the web and return the relevant results. To the user, Google appears to be one system, but it actually is multiple computers working together to accomplish one single task (return the results to the search query).
The complexities of the system remain hidden from the end user and the whole distributed system appears as a single computer to its users.
This concept is called Distribution transparency. It denotes that everything that happens under the hood should remain invisible to the end user. Distribution of resources, Failover, Migration, and Replication should remain invisible to the end user.This is achieved by a middleware, which is a logical layer on top of nodes collectively.
Characteristics of a distributed system:
1. No shared clocks. The order of events is achieved by synchronization and coordination.
2. No shared memory. The state is distributed throughout the system.
3. Concurrency — Processes execute tasks concurrently.
4. Heterogeneity and lose coupling. Components can be built from different technologies and can run on different platforms.
Distributed systems are dynamic systems that allow nodes to join or leave at will. They are usually overlay networks. The overlay networks are the networks that are built over the internet. Examples are Peer-to-Peer ( Blockchain/ Bittorrent) and Voice over IP.
Distributed Computing
Distributed computing is a type of computing over distributed systems. Building and establishing computing models for distributed systems and designing algorithms to solve problems related to such systems. Cloud computing is an example of distributed computing.
Some other examples of distributed computing solutions are
- Platform as a Service
- Infrastructure as a service
- Serverless
Some of the critical elements of a typical distributed system for building user faced applications are :
- Mocroservices
- Load Balancers like ingress-nginx
- Databases
- Caches — Temporary Memory
- File system storage
- Network
- Messaging queues
We will be discussing in detail about these components in the upcoming blogs from GrammIt.
Happy learning!