[WIP] Split Write operation for raft-concurrent-apply #260
+246
−134
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
If we build a raft group based on RocksDB, we hope the data of raft can be applied in order of raft-log-index. But it will be slowly if there are a lot of entries waiting to be applied, one thread can not consume them as soon as possible.
And for TiKV batch-system, we hope to process data from different regions in a first-come, first-served manner. This also need to guarantee the order of entries consumed in different thread.
Solution
We hope we can write these keys in parallel by multiple thread. We only need to guarantee that one entry must start writing operation after theses entries whose log-index are less than it. We will use a atomic applied index to decide whether one entry is writing to db.