A few people (@abligh, @manishrjain
, @ngaut and more) are interested in having cockroach style multi-raft implementation in their application to reduce heartbeat cost.
@bdarnell @tamird Do you think it is reasonable to doc how people should use RawNode to achieve that with a simple example?
Yeah. I assume you've seen our original blog post on the subject: https://www.cockroachlabs.com/blog/scaling-raft/
I'm going to be working on a follow-up post soon that will talk about what we've learned since then, but in short we've abandoned the idea of building any kind of reusable abstraction for multiraft because there doesn't seem to be any way to avoid a very high degree of coupling between the application and raft. (In the course of refactoring to remove abstraction we've gone back to sending all the heartbeats all the time, although we're planning to reintroduce coalesced heartbeats soon). We can give some guidelines on how to use RawNode but I don't know if we can reduce it to a simple example.
We also needs to answer the questions (from @ongardie) like:
What is the purpose of rawnode.go?
How is it different from node.go?
Why is it so different from node.go?
Which is used where?
any chance to add docs?
Fyi a high perf multi raft group go lib https://github.com/lni/dragonboat
@riaan53 yes i know, i'm already subscribed to it, but found this issue i'm interesting too
This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 21 days if no further activity occurs. Thank you for your contributions.
Most helpful comment
@riaan53 yes i know, i'm already subscribed to it, but found this issue i'm interesting too