Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Existing rebalancing protocol is suitable for in-memory data storage, but for data persisted in files it is sub-optimal and requires a lot of unnecessary steps. Efforts to optimize it led to necessity to completely rework the protocol - instead of sending batches (SupplyMessages) with cache entries it is possible to send data files directly.
The algorithm should look like this:
1. Demander node sends requests with required partition IDs (like now)
2. Supplier node receives request and performs a checkpoint.
3. After checkpoint is done, supplier sends files with demanded partitions using low-level NIO API.
4. During steps 2-3, demander node should work in special mode - it should temporary store all incoming updates in such way that they can be quickly applied later.
5. After files are transferred, demander applies updates stored at step 4.
The tricky part here is to switch work modes of demander node avoiding all possible race conditions. Also, the aforementioned algorithm should be extended to transfer or rebuild query indexes.
Attachments
1.
|
[POC] Introduce mechanism to fetch partition file via a p2p protocol | Open | Maxim Muzafarov | |||||||||
2.
|
Add support files transmission between nodes over connection via CommunicationSpi | Resolved | Maxim Muzafarov |
|
||||||||
3.
|
Index rebuild procedure over cache partition file | Open | Nikolay Izhikov |
|
||||||||
4.
|
Implement file rebalancing management | Open | Pavel Pereslegin |
|
||||||||
5.
|
Provide benchmark scripts for the rebalance procedure test | Open | Maxim Muzafarov | |||||||||
6.
|
Faster index eviction | In Progress | Nikolay Izhikov |
|
||||||||
7.
|
Design an cluster traversal algorithm to preload cache groups as faster as possible | Open | Unassigned | |||||||||
8.
|
Make historical rebalance wokring per-partition level | Open | Unassigned | |||||||||
9.
|
Request snapshot from remote node | Patch Available | Maxim Muzafarov |
|