[
https://issues.apache.org/jira/browse/IGNITE-4378?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15735755#comment-15735755
]
Dmitriy Setrakyan commented on IGNITE-4378:
-------------------------------------------
Alexey,
Several comments:
# Given that all affinity functions should support this functionality, should
we consider a common abstract class that all affinity function implementations
should extend? If you agree, please propose it here.
# Why is the name {{AffinityPrimaryFilter}}? Does it only filter out the
primary nodes or the backups as well? If backups are also included, then the
name should be {{AffinityFilter}} or {{AffinityNodeFilter}}.
# Why does it extend {{IgniteBiClosure}}? There is really no benefit for it. I
would remove this inheritance.
> Affinity function should support assigning partition to subset of cluster
> nodes
> -------------------------------------------------------------------------------
>
> Key: IGNITE-4378
> URL: https://issues.apache.org/jira/browse/IGNITE-4378
> Project: Ignite
> Issue Type: New Feature
> Components: cache
> Reporter: Dmitriy Setrakyan
> Assignee: Alexei Scherbakov
> Fix For: 2.0
>
>
> Currently both default affinity function(AF) implementations randomly choose
> primary node among all topology nodes.
> This may not be enough to handle complex data placement scenarios without
> implementing own AF.
> On example, some partitions can be assigned to more powerful hardware, or
> limited to subset of cluster nodes due to ease of management or fault
> tolerance scenarios.
> We should implement node filter, which will allow to choose subset of cluster
> nodes to place primary and backup partitions.
> With already existing ability to filter backup nodes (using
> {{AffinityBackupFilter}}) it will allow to implement different approaches to
> data placement with Ignite without resorting to custom AF.
> It's also desirable to include a practical example of both topology filters
> based on node attribute values.
> Proposed primary filter interface is below.
> {noformat}
> /**
> * Allows partition placement to subset of cluster node.
> *
> * Backup nodes also will be assigned from the subset.
> */
> public interface AffinityPrimaryFilter extends IgniteBiClosure<Integer,
> List<ClusterNode>, List<ClusterNode>> {
> /**
> * Return nodes allowed to contain given partition.
> * @param partition Partition.
> * @param currentTopologyNodes All nodes from current topology.
> * @return Subset of nodes.
> */
> @Override public List<ClusterNode> apply(Integer partition,
> List<ClusterNode> currentTopologyNodes);
> }
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)