public class PlatformAffinityFunction extends Object implements AffinityFunction, Externalizable, LifecycleAware
| Constructor and Description |
|---|
PlatformAffinityFunction()
Ctor for serialization.
|
PlatformAffinityFunction(Object func,
int partitions,
byte overrideFlags,
AffinityFunction baseFunc)
Ctor.
|
| Modifier and Type | Method and Description |
|---|---|
List<List<ClusterNode>> |
assignPartitions(AffinityFunctionContext affCtx)
Gets affinity nodes for a partition.
|
AffinityFunction |
getBaseFunc()
Gets the base func.
|
byte |
getOverrideFlags()
Gets the override flags.
|
Object |
getUserFunc()
Gets the user func object.
|
int |
partition(Object key)
Gets partition number for a given key starting from
0. |
int |
partitions()
Gets total number of partitions available.
|
void |
readExternal(ObjectInput in) |
void |
removeNode(UUID nodeId)
Removes node from affinity.
|
void |
reset()
Resets cache affinity to its initial state.
|
void |
setIgnite(Ignite ignite)
Injects the Ignite.
|
void |
start()
Starts grid component, called on grid start.
|
void |
stop()
Stops grid component, called on grid shutdown.
|
void |
writeExternal(ObjectOutput out) |
public PlatformAffinityFunction()
public PlatformAffinityFunction(Object func, int partitions, byte overrideFlags, AffinityFunction baseFunc)
func - User fun object.partitions - Number of partitions.public Object getUserFunc()
public AffinityFunction getBaseFunc()
public byte getOverrideFlags()
public void reset()
reset in interface AffinityFunctionpublic int partitions()
0 inclusively to
N exclusively without any gaps.partitions in interface AffinityFunctionpublic int partition(Object key)
0. Partitioned caches
should make sure that keys are about evenly distributed across all partitions
from 0 to partition count for best performance.
Note that for fully replicated caches it is possible to segment key sets among different grid node groups. In that case each node group should return a unique partition number. However, unlike partitioned cache, mappings of keys to nodes in replicated caches are constant and a node cannot migrate from one partition to another.
partition in interface AffinityFunctionkey - Key to get partition for.public List<List<ClusterNode>> assignPartitions(AffinityFunctionContext affCtx)
Note that partitioned affinity must obey the following contract: given that node
N is primary for some key K, if any other node(s) leave
grid and no node joins grid, node N will remain primary for key K.
assignPartitions in interface AffinityFunctionaffCtx - Affinity function context. Will provide all required information to calculate
new partition assignments.public void removeNode(UUID nodeId)
removeNode in interface AffinityFunctionnodeId - ID of node to remove.public void writeExternal(ObjectOutput out) throws IOException
writeExternal in interface ExternalizableIOExceptionpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal in interface ExternalizableIOExceptionClassNotFoundExceptionpublic void start()
throws IgniteException
start in interface LifecycleAwareIgniteException - If failed.public void stop()
throws IgniteException
stop in interface LifecycleAwareIgniteException - If failed.@IgniteInstanceResource public void setIgnite(Ignite ignite) throws IgniteCheckedException
ignite - Ignite.IgniteCheckedException
Follow @ApacheIgnite
Ignite Database and Caching Platform : ver. 2.11.0 Release Date : September 11 2021