Hello Mans,

Ignite data partitioning and distribution is defined by the
AffinityFunction [1]. Basically, this is a three-step process:

Given a key K, Ignite first determines an affinity key AK using configured
AffinityKeyMapper. Then, for the given affinity key AK a corresponding
partition is determined using AffinityFunction#partition(Object) method.
Finally, a primary and backup node is determined by the current
partition-to-node assignment. The ideal partition-to-node assignment is
defined by AffinityFunction#assignPartitions(AffinityFunctionContext)
method, but when topology changes, actual partition-to-node mapping may
differ from ideal one until after rebalancing is finished. Partition count
is always limited, defined by the affinity function and cannot be changed
at runtime. You need to restart the whole cluster to change the number of
partitions.

Rebalancing starts automatically when a node joins or leaves the cluster.
You can configure a rebalance delay using
CacheConfiguration#setRebalanceDelay(long) method. If rebalance delay is
greater than 0, then Ignite will wait the given number of milliseconds
before actual rebalancing starts. If rebalanceDelay is -1, rebalancing will
not be started automatically. You can trigger rebalancing manually using
IgniteCache#rebalance() method.

Can you elaborate on what you mean by customization of data rebalancing?
There is a set of configuration properties related to rebalancing, take a
look at CacheConfiguration javadoc [2], all those method names start with
setRebalance*().

Hope this helps,
--AG

[1]
https://apacheignite.readme.io/docs/affinity-collocation#affinity-function
[2]
https://ignite.apache.org/releases/1.6.0/javadoc/org/apache/ignite/configuration/CacheConfiguration.html

Reply via email to