Tuesday 2 February 2010

Distributed Computing - Challenges

Okay sooo distributed systems are spread out over vast distances. Due to this attribute there are many issues and challenges surrounding such distributed systems some of which are discussed below! Enjoy!

Challenge No.1 - Heterogeneity


Heterogeneity - “Describes a system consisting of multiple distinct components”



Of course heterogeneity applies to pretty much anything which is made up of many different items or objects including Food! (Okay so that might be a bad analogy but you get the idea)
Anyway, in many systems in order to overcome heterogeneity a software layer known as Middleware is often used to hide the differences amongst the components underlying layers.

Challenge No.2 – Openness


Openness –“Property of each subsystem to be open for interaction with other systems”

So once something has been published it cannot be taken back or reversed. Furthermore in open distributed systems there is often no central authority, as different systems may have their own intermediary.

Challenge No.3 – Security


The issues surrounding security are those of

  • Confidentiality

  • Integration

  • Availability


To combat these issues encryption techniques such as those of cryptography can help but they are still not absolute. Denial of Service attacks can still occur, where a server or service is bombarded with false requests usually by botnets (zombie computers).

Challenge No.4 - Scalability


What is scalability?! Okay so basically a system is described as scalable if:

“As the system, number of resources, or users increase the performance of the system is not lost and remains effective in accomplishing its goals”

That’s a fairly self explanatory description, but there are a number of important issues that arise as a result of increasing scalability, such as increase in cost and physical resources. It is also important to avoid performance bottlenecks by using caching and replication.

Challenge No.5 - Fault handling


Failures are inevitable in any system; some components may stop functioning while others continue running normally. So naturally we need a way to:

  • Detect Failures – Various mechanisms can be employed such as checksums.

  • Mask Failures – retransmit upon failure to receive acknowledgement

  • Recover from failures – if a server crashes roll back to previous state

  • Build Redundancy – Redundancy is the best way to deal with failures. It is achieved by replicating data so that if one sub system crashes another may still be able to provide the required information.


Challenge No.6 – Concurrency


Concurrency issues arise when several clients attempt to request a shared resource at the same time. This is problematic as the outcome of any such data may depend on the execution order, and so synchronisation is required.Click here to find out more about synchronisation

Challenge No.7 – Transparency


A distributed system must be able to offer transparency to its users. As a user of a distributed system you do not care if we are using 20 or 100’s of machines, so we hide this information, presenting the structure as a normal centralized system.

  • Access Transparency – where resources are accessed in a uniform manner regardless of location

  • Location Transparency – the physical location of a resource is hidden from the user

  • Failure Transparency – Always try and Hide failures from users (see challenge No.5)

No comments:

Post a Comment