Distributed Systems
In the last few years, we have seen an unprecedented growth in the field of distributed networks and systems. Distributed computing is prevalent in many of the activities occurring in the current computation and telecommunication industries. In fact we can say there is a shift from “old-school” structures like parallel computers to more recent applications like P2P systems and multi core architecture.
All of these are examples of distributed systems.
A distributed system is a Network of Processes.
The nodes are processes and the edges are channels of communication.
A common feature in all distributed systems is that multiple nodes in the system are active at any given point in time. They have different degrees of freedom,may share common resources and need to coordinate with each other in order to solve problems that concerns many or all nodes.
Despite this, a P2P model varies from multi core architectures which gives rise to a lot of differences due to which, many models are used in distributed computing systems — synchronous vs asynchronous, homogeneous vs heterogeneous systems. Likewise infrastructure could be tailor-made or could be loosely defined, communication could be through messages or shared memory space. Even different nodes could work together for a common community cause or function autonomously to achieve their own agenda. Individual nodes can work as planned or experience failures, the advantage here being that the system may still end up functioning correctly as other nodes take over the work of the ‘failed’ nodes. Even types of failures vary from crashes, arbitrariness, Byzantine behaviour or even worse not follow the rules of the system.
All of this has given rise to different models of distributed systems that have been studied but there are some issues that are inherent in distributed systems.
Uncertainty : In a distributed system, it is tough for a node to know what the other nodes are doing at an exact moment, notwithstanding which they are required to solve their tasks.
Fault Tolerance : In the presence of failures, the system as a whole may survive conditional to other nodes taking over.
Coordination : To perform a task efficiently, a system needs to work in coordination. Coordinating a distributed system can be tricky as it grows.
Localisation : It is not always necessary to access and agree to global information to solve every task. Sometimes it is sufficient if nodes communicate with their neighbours. It is a fundamental issue and can be addressed.
Parallel chains : Can tasks be solved faster by breaking it into parallel chains or by allocating computing power accordingly.
Breaking symmetry : In addition to working in parallel, can we selectively allocate work to nodes so that tasks and communication related to those can be synchronised more efficiently.
Synchronisation : Implementing synchronous algorithms and processes in an asynchronous system.
At Cohyzun, these are some challenges that excite us and is something that we are beginning to address and build on.
Join us on our journey to build a cohesive network of information, one bit at a time!
Cheers!
PS: This article was published on medium with the combines efforts of my team. Here is the link : https://medium.com/cohyzun/distributed-systems-4845e21b068f
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://medium.com/cohyzun/distributed-systems-4845e21b068f
Hey!
Thank you @cheetah! That links to my medium publication.