Thursday, October 27, 2011

Distributed Systems

Looking into Distributed systems for this blog actually led me to the discovery of something else as well. I was unaware that Google had complete tutorials on computer science related areas as well as environments to experiment with via code.google.com. I learned this because I found a whole section on Distributed systems with tutorials from Google, from various universities, and tools to aid in your learning. Looking into Google's tutorial, their definition of a distributed system is accomplished by defining many other things, they call this a cascading definition. "
What is a distributed system? It's one of those things that's hard to define without first defining many other things. Here is a "cascading" definition of a distributed system:

A program
is the code you write.
A process
is what you get when you run it.
A message
is used to communicate between processes.
A packet
is a fragment of a message that might travel on a wire.
A protocol
is a formal description of message formats and the rules that two processes must follow in order to exchange those messages.
A network
is the infrastructure that links computers, workstations, terminals, servers, etc. It consists of routers which are connected by communication links.
A component
can be a process or any piece of hardware required to run a process, support communications between processes, store data, etc.
A distributed system
is an application that executes a collection of protocols to coordinate the actions of multiple processes on a network, such that all components cooperate together to perform a single or small set of related tasks."
 
Basically as I understand everything, a distributed system is like taking a server, with all of its services and components, and spreading it out over many systems that interact with each other. This makes it very powerful but difficult to implement because so many things must communicate to each other. The biggest concern in distributed systems are software errors.  Software failures are a significant issue in distributed systems. Even with rigorous testing, software bugs account for a substantial fraction of unplanned downtime (estimated at 25-35%)Any way, this site is really cool and there is so much information that I will definitely be giving it another look. 
http://code.google.com/edu/parallel/

No comments:

Post a Comment