In article <1122306783.039837.215450@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
Emidio S. <emidio.spinogatti@xxxxxxxxx> wrote:
could someone please help me to understand which are the drawbacks of
cluster computing based architecture?
because often i read only about benefits...
Well, it all depends on what you want to do. It also depends on the
architecture of the cluster.
Clusters are used for a variety of purposes.
High availability clusters are used to provide service if a node
fails.
Load balancing clusters (often used in web services) are intended
to share work and provide availability at the cost of session data
for a failed node.
HPC clusters are intended to solve large problems that are readily
adaptable to highly parallel work.
High availability clusters cost more due to the redundant hardware,
but usually offset this in terms of avoiding lost revenue due to
downtime.
HPC clusters suffer the problem that most of them require explicit
message passing between nodes and thus are not readily adaptable
to some kinds of problems which do not feature large amounts of
independently concurrent work.
It's kind of like the notion that if one woman can produce a baby
in nine months, nine women should be able to produce a baby in one
month.
If one's goal is simply to produce the most babies, one could set up a
pipeline with nine women (actually more to permit some rest between
gestations). Once the pipeline was full, you would get one baby
per month. The trouble is that this assumes perfect fertility,
etc. Throw in jealousy, etc. and the system breaks down.
Some problems simply aren't amenable to this sort of solution.
They typically require other nodes to know about results of a
calculation elsewhere before they can proceed.
In real world designs, latency is also a problem. In a cluster,
local RAM is distributed among nodes. Thus, if a node requires
access to a value stored in the local RAM of another hardware
"brick," this costs significant time.
Thus, the choice of a cluster or a very powerful single system
depends on a tradeoff of cost versus the degree of readily
exploitable concurrency (parallelism) in the problem.
If you want to fill in a big hole, you can hire a large number
of relatively ignorant and cheap laborers to man the shovels.
If you have to perform some intricate, difficult task, you
typically end up with one person doing the work while any
additional personnel simply stand around and watch or wait
to fetch something.
Thus, the value (or lack thereof) of a cluster lies in what
you intend to do with it.