Question

From what I've read, Riak treats all nodes in a cluster equal. However we'd like to have a heterogeneous cluster, where cpu/mem/hd is not always equal - in fact they can be very different. Each node would of course meet minimal requirements that's required for a node.

Questions:

1) What is the consequence of creating a cluster composed of machines with wildly varying specifications (cpu, diskspace, disk speed, amount and speed of memory, network speed) and

2) Can the cluster detect and compensate for such differences automatically? (assuming no here)

3) Are there ways to take care of this problem in other ways? Think of: prioritizing nodes in load balancer, based on the hardware. Something else?

Was it helpful?

Solution

I'll answer your questions, however, operating Riak in this manner is strongly discouraged as Riak assumes identical capabilities among nodes.

  1. You could possibly have wildly varying performance characteristics for operations against your node. In general, the "weakest node" in the system could affect operations throughout the cluster. For instance, during the PUT phase of an operation, a replica of the data could be routed to the weakest node and the duration of that operation could affect the entire PUT operation based on the PUT operation's quorum value.

  2. No, the cluster assumes identical hardware.

  3. There really is no way to compensate for this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top