RPC is the middle which allows client to call remote functions located on the server side. RPC is designed bearing in mind to combat the main disadvantage in inter-process communication (UDP and TCP) as it is hard in developing protocol. Moreover, we want to make distributed systems more transparent.
In order to call remote functions or methods, client depends on Stub function stimulating client as a real functions or methods locally.
Continue Reading »
Distributed Systems Component
Usually distributed systems consists of 3 main components namely Server, Network and Software. Server contains operating systems for providing network services or middleware on which distributed systems software relies. Network is the connectivity among those servers serving as the super high way for information sharing. Software refers anything soft platform that makes distributed system works and serves for clients as a coherent system. Software involves from ground up to user interface that users normally interact.
At each component, there is a generally common false assumption made by several system designers. These assumptions cannot be negligible; otherwise distributed systems cannot run smoothly.
Continue Reading »
What is distributed systems and why do we need it have been discussed in this blog. So now I will discuss the pros and cons of distributed systems in general. Understanding this pros and cons shapes the designing the distributed systems.
- Mainframe is too expensive compares to buying several commodity servers. Commodity servers refer to a server with Intel Xeon architecture or AMD Opteron or Mac architecture.
- By combining thousands of servers processing power and storage capacity, distributed systems is extremely powerful compares to mainframe or super computer.
- Resources such as processing and storage capacity can be increased incrementally. In other words, if distributed systems is better designed, adding nodes and storage and just plug-and-play.
- By having redundant components, the impact of hardware and software faults on users can be reduced. The fault components just simply be added to scale it up.
- Inherent distribution
- Some applications like the web, email, instant messaging, social network, etc. are naturally distributed.
- Current network capacity might be limited by 10 Gbps. And network is needed to connect thousands of independent computers and is subjected to performance bottleneck.
- Security is the most concerning issue in every computing. Distributed systems also needs to be designed not to be easily compromised.
- Software complexity
- Developing software for distributed systems is the hardest part. It requires a lot of expertises with different software platforms to build very large interactive software stack.
According to Moore’s Law, the processing power of CPU gains double for every 18 months. This should be pretty enough for today computing. However, it is not and there is a demanding on deploying distributed systems. What is the distributed systems anyway? There are several definitions around it. I would like to quote from 2 main editors.
Coulouris et al
A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messages
Tanenbaum, Van Steen
A distributed system is a collection of independent computers that appears to its users as a single coherent system