Live data from Hacker News

Scaling Raft

cockroachlabs.com

11–13 of 13 posts

Re: Scaling Raft

#11
post #6

Earlier quoted context omitted.

Please clarify what you mean by "these consensus algorithms". Raft is merely an instance of a specific subset of C.A.s (published) to date. Raft's design goals were primarily to be "understandable". A noble pedagogical goal in the abstract but misguided for use in production given the prevailing mindset [1]. > What we really need is someone smart ... [1] Under 20 years of age only or will you accept advice from 50+ s…

I was thinking of Paxos and Raft, which are the two prevailing algorithms. (I'm 53. Would be happy to hear your old-man theories :)

Single master bottleneck. Try Mencius, ePaxos, etc.

Re: Scaling Raft

#12
post #2

Yup, this is the key problem with these consensus algorithms. They don't handle shards very well. Most systems these days either punt and don't do updates via the consensus algorithm (Apache Kafka), or they use two-phase commit (FoundationDB, many others). This is important work, but I don't think they're really going to succeed is making a truly large-scale system. The problem is the heartbeat; you can't have every…

I'm not sure how you could call it a consensus algorithm without putting updates through the state machine, since that's essentially all Raft does . "The problem is the heartbeat; you can't have every node talking to every other node every few seconds" So nodes are just to assume that other nodes are alive/reachable/functioning? How would you propose detecting node health without some form of heartbeat? "... but you…

> So nodes are just to assume that other nodes are alive/reachable/functioning? How would you propose detecting node health without some form of heartbeat?

generally there is probably enough traffic between nodes to just run failure detection off of txn failures / normal comms (rpc,etc) without running a separate failure detection mechanism, but this assumes every node is already talking to every node, which is not safe, but let's explore solutions to that. detecting failures from normal communication will likely be even faster than a heartbeat, provided traffic frequency is higher than the heartbeat (use case contingent). to get around the issue where all nodes aren't already in communication, could broadcast any local failures each node might observe and you save the traffic of the heartbeat in the normal case, a gossip mechanism could work to reduce the N^2'ness of that communication -- it seems likely that multiple nodes will detect a given failure at around the same time, we don't want each of them broadcasting that, potentially leading to more failures from increased net traffic. since the nodes who were in communication with the failed one have detected it, we really just need to update the nodes who weren't so that they can find out about it in a closed interval (same guarantee as a heartbeat, potentially looser bounds).

maybe this is being too optimistic, but at least it's fun to think about :)

Re: Scaling Raft

#13
post #2

Yup, this is the key problem with these consensus algorithms. They don't handle shards very well. Most systems these days either punt and don't do updates via the consensus algorithm (Apache Kafka), or they use two-phase commit (FoundationDB, many others). This is important work, but I don't think they're really going to succeed is making a truly large-scale system. The problem is the heartbeat; you can't have every…

Heartbeating is only used for failure detection. Because raft is a consensus mechanism, failure detection is allowed to return false positives. In practice false positives cause a blip in throughout as a new leader gets elected, but since they are rare it isn't a big problem.

Because of the weak guarantees needed by the failure detector, you can use efficient mechanisms like gossip to reduce the bandwidth required. You pay some detection latency for that in return. It sounds like cockroachdb doesn't do that right now, but they could. It isn't some fundamental problem with consensus systems (it is a completely separate problem).

Post reply on HN