Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Description

The Apache Ignite needs cache rebalacing with transfering to support cache rebalancing as transferring partition files using zero - copy algorithm based algorithm based on an extension of communication SPI and Java NIO API. 

Process overview

There are two participants in the process of balancing data: 

...

The process of ordering cache groups for rebalancing rebalance remains the same. The  
The whole process is described in terms of rebalance single cache group:

  1. The GridDhtPreloaderAssignments created for cache group (type of Map<ClusterNode, GridDhtPartitionDemandMessage>)

CommunicationSpi

...

To achieve the benefit from zero -file copy file tramsmission approach the we must delegate the file transferring to FileChannel#transferTo(long, long, java.nio.channels.WritableByteChannel) because the fast path of transferTo method is only executed if the destination buffer inherits from an internal JDK class.

  • The CommunicationSpi needs to support

...

  • pipe

...

  • connections between two nodes

...

  • ;
    • The WritableByteChannel needs to be accesses on the supplier side;
    • The ReadableByteChannel needs to be read on the demander side;
  • The CommunicationListener  must be extended to respond on new incoming pipe connections;

Partition

...

transmission

The cache partition file transfer over the network must be done using file chunks with validation of received piece of data on the demander side.

  • The new

...

  • layer over the cache partition file

...

  • must support direct using of FileChannel#transferTo method over the CommunicationSpi pipe connection;
  • The process must support transferring the cache patition file by chunks one by one;
  • The connection bandwidth of must have an ability to be limited at runtime;

Checkpoint on demand

Temp-WAL recovery

Risks and Assumptions

A few notes can be mentioned:

  • If operating

...

  • system does not support zero

...

  • copy

...

  • , sending a file with FileChannel#transferTo might fail or yield worse performance.
    For example, sending a large file doesn't work well

...

  • enough on Windows;
  • The ssl must be disabled to take an advantage of zero copy file transmission;

Discussion Links

// Links to discussions on the devlist, if applicable.

...