-
Notifications
You must be signed in to change notification settings - Fork 3.9k
RFC: dismantle multiraft #3431
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: dismantle multiraft #3431
Conversation
|
Good idea, It should be possible and it may improve the concurrency significantly as we found the sigle goroutine model in For the thread model, I had the following doubts:
|
|
I agree it's a great idea. Some points.
As a side concern, how tough will it be to try out different consensus algorithms? This is moving the raft logic deeper into our system, this might make this type of experimentation even harder in the future. |
|
I'm also generally in favor. For moving complexity into |
Try out different algorithms? I think that the |
|
So this is LGTM, but I would like to see a little bit more depth to the design before we dive right in. |
|
LGTM. I think the implementation details/discussion do{,es}n't need to be on the RFC. |
|
What kind of detail do you want? As for the process of getting from here to there, I don't think we're going to be able to avoid going in one big step. We can alleviate that a little bit by dropping some features during the move and re-adding them later (coalesced heartbeats, lazy group creation). |
|
I was just thinking some details on the threading model is all. Specifically where each goroutine lives and its major function. I just think it could be fleshed out a little bit more is all. |
|
This RFC is just about removing a layer of abstraction without making too many changes to the model. There will still be one goroutine per store doing all the raft work (or two; I'm not sure yet whether it makes sense to fold everything into |
0bfcce6 to
b367aa2
Compare
|
SGTM |
I've been thinking about how we can become confident that we've solved all the races involving multiraft, and have come to the conclusion that it may be best to just get rid of the abstraction and talk to
etcd/raftdirectly from thestoragepackage.@BramGruneir @es-chow I'd like to get your feedback on this.