3 ms·
> I suppose one can have a subset of a cluster participating in Raft, but then the "raft group membership" itself is a consensus problem isn't it? Yes, this is
by teraflop 5y ago
> I suppose one can have a subset of a cluster participating in Raft, but then the "raft group membership" itself is a consensus problem isn't it?
Yes, this is discussed briefly in the article and more thoroughly in the original Raft paper.
It's possible to do a "membership change" operation, whereby the replicas agree to change the set of nodes in the cluster. It's slightly trickier than achieving consensus on an ordinary state machine operation, because you have to ensure that quorums from both the old and new node lists agree to the change.
With this feature, you can make a "self-healing" cluster. Say you have a pool of 100 physical machines, with 5 of them running Raft nodes. If one node fails, and the failure appears to be transient, you can just wait for it to come back up. Otherwise, you can start a new node, wait for it to come up, and perform a membership change to swap it for the failed one.
This provides availability as long as you don't have a burst of more than N/2 failures faster than the cluster can recover.
- butterisgood 5y agoThanks! This is a great, thought-provoking answer. I've only worked with variants of paxos which were greatly simplified, and wondered how Raft actually simplified things here. I feel like Raft, despite being easier to explain quickly, really doesn't seem much simpler than a basic explanation of Paxos. But perhaps that's because of what I've already worked with. I've got an itch to explore Viewstamped Replication as well...