I am taking an introductory course on Distributed Systems, and while reading a introductory tutorial the author discusses that

5 Rails servers behind a single load balancer all connected to one database, is not an example of a Distributed System

for the reason that :

A system is distributed only if the nodes communicate with each other to coordinate their actions.

That got me thinking as to what are the real world examples which actually would fit into the definition of a Distributed System. I found a list here, and found that Electronic Banking is in fact an example, but I do not seem to figure out why. Going by my understanding the ATM machines do not communicate with each right? They would be communicating with some sort of a centralised server to communicate and coordinate their actions. So how would this qualify as an example?

Also could anyone give me a better definition of a Distributed System ?

  • Your example is distributed, if you consider the client: as per Wikipedia: The client–server model is a distributed application structure... – Erik Eidt Aug 30 '18 at 14:44
  • The system is distributed or not depending on the boundaries for the systelm to which the definition is applied. The question is interesting. Unfortunately, you conclude by asking an accessory question about resources, which is out of scope. As it seems only accessory and not your main concern, I've edited it slightly. – Christophe Aug 30 '18 at 18:03
  • 2
    The system described IS a distributed system, even by the stated definition. The method of communication is the shared database state. – RibaldEddie Aug 30 '18 at 18:09

When going more formal and using strict definitions, you should as a reflex systematically look what exactly behind each term.

In your case, the key is the term system: what is the system that you consider for the definition, and more precisely what are its boundaries.

Here some examples:

  • If your system is the set of application servers, then indeed the system is not distributed: each system node interacts with external nodes that do not belong to the system (database, load balancer), but the nodes don't coordinate between them (no app-sever to app-server communication).

  • If your system is the backend system, composed of the database server, the load balancer, and the application servers, it is then clearly a distributed system, because load balancer coordinates the processing of requests with the application servers, and application servers coordinate with the database. Database could even be used to coordinate two application servers (e.g. via locks, or technical data written in the database).

Another term is ambiguous: "communicate with each other". I understand some communication between several nodes. A more restrictive interpretation could be possible, although not realistic:

  • Could it mean that all nodes must communicate with all the others ? Many complex distributed systems use queuing intermediaries to avoid an exponential growth of bidirectional links, and would be arbitrarily eliminated from that definition.
  • Could it imply a bidirectional communication ? Well, it depends then on the level of communication, because any TCP/IP exchange is in reality bidirectional because of the ACK.

Computer science terms like this are redefined every other day. You are better off asking "What do people expect from a Distributed System above a 'Standard' system?"

What they expect is that no one person can destroy the system. "He who can destroy a thing, controls a thing."

In the case of a standard load balanced web farm, one person usually controls all of the parts. Even if we split up everything as much as technically possible, one person still owns the DNS record.

Ideally, a distributed system allows users to trust in its continued existence by potentially allowing them to run the system even if everyone else stops.

Now obviously, once we have this concept of an ideal distributed system we can start calling other things 'distributed' even if they don't completely fulfil the ideal.

If I spread my service over two physical locations, so if either goes down my service keeps running, then for me, it is 'distributed'. I don't care about me deciding not to run the service.

But to my users it isn't, they rely on a single party, me, to keep running the service. If I 'go down' then they are stuck.

  • 1
    What you're describing are systems with redundant failsafes, which are a subset of distributed systems. Ownership and control don't really factor into whether or not a system is distributed; arguing that the system that makes up Google isn't a distributed system because it's under the control of one entity doesn't pass the straight-face test. – Blrfl Aug 30 '18 at 18:30
  • @Blrfl thats what im trying to say. google drive for example is distributed for google bitcoin is distributed for me – Ewan Aug 30 '18 at 19:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.