blob: 93cd570e66eca3b4a7363fff0fe4212e4ccc789a [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.8.1/dotnetdoc/api/Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Interface IAffinityFunction
| Apache Ignite.NET </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Interface IAffinityFunction
| Apache Ignite.NET ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../images/favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
<meta property="docfx:rel" content="../">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body data-spy="scroll" data-target="#affix">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items"></div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction">
<h1 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction" class="text-break">Interface IAffinityFunction
</h1>
<div class="markdown level0 summary"><p>Represents a function that maps cache keys to cluster nodes.
<p>
Predefined implementations:
<a class="xref" href="Apache.Ignite.Core.Cache.Affinity.Rendezvous.RendezvousAffinityFunction.html">RendezvousAffinityFunction</a>.</p>
</div>
<div class="markdown level0 conceptual"></div>
<h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Cache.Affinity.html">Apache.Ignite.Core.Cache.Affinity</a></h6>
<h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
<h5 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_syntax">Syntax</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IAffinityFunction</code></pre>
</div>
<h3 id="properties">Properties
</h3>
<a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.Partitions*"></a>
<h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.Partitions">Partitions</h4>
<div class="markdown level1 summary"><p>Gets the total number of partitions.
<p>
All caches should always provide correct partition count which should be the same on all
participating nodes. Note that partitions should always be numbered from 0 inclusively
to N exclusively without any gaps.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">int Partitions { get; }</code></pre>
</div>
<h5 class="propertyValue">Property Value</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Int32</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods
</h3>
<a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_AssignPartitions_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.AssignPartitions*"></a>
<h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_AssignPartitions_Apache_Ignite_Core_Cache_Affinity_AffinityFunctionContext_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.AssignPartitions(Apache.Ignite.Core.Cache.Affinity.AffinityFunctionContext)">AssignPartitions(AffinityFunctionContext)</h4>
<div class="markdown level1 summary"><p>Gets affinity nodes for a partition. In case of replicated cache, all returned
nodes are updated in the same manner. In case of partitioned cache, the returned
list should contain only the primary and back up nodes with primary node being
always first.
<pare></pare>
Note that partitioned affinity must obey the following contract: given that node</p>
<pre><code>N</code></pre> is primary for some key <pre><code>K</code></pre>, if any other node(s) leave
<p>grid and no node joins grid, node <pre><code>N</code></pre> will remain primary for key <pre><code>K</code></pre>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">IEnumerable&lt;IEnumerable&lt;IClusterNode&gt;&gt; AssignPartitions(AffinityFunctionContext context)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Cache.Affinity.AffinityFunctionContext.html">AffinityFunctionContext</a></td>
<td><span class="parametername">context</span></td>
<td><p>The affinity function context.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<a class="xref" href="Apache.Ignite.Core.Cluster.IClusterNode.html">IClusterNode</a>&gt;&gt;</td>
<td><p>A collection of partitions, where each partition is a collection of nodes,
where first node is a primary node, and other nodes are backup nodes.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_GetPartition_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.GetPartition*"></a>
<h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_GetPartition_System_Object_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.GetPartition(System.Object)">GetPartition(Object)</h4>
<div class="markdown level1 summary"><p>Gets partition number for a given key starting from 0. Partitioned caches
should make sure that keys are about evenly distributed across all partitions
from 0 to <a class="xref" href="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.html#Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions">Partitions</a> for best performance.
<p>
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.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">int GetPartition(object key)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Object</span></td>
<td><span class="parametername">key</span></td>
<td><p>Key to get partition for.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Int32</span></td>
<td><p>Partition number for a given key.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_RemoveNode_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.RemoveNode*"></a>
<h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_RemoveNode_System_Guid_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.RemoveNode(System.Guid)">RemoveNode(Guid)</h4>
<div class="markdown level1 summary"><p>Removes node from affinity. This method is called when it is safe to remove
disconnected node from affinity mapping.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">void RemoveNode(Guid nodeId)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Guid</span></td>
<td><span class="parametername">nodeId</span></td>
<td><p>The node identifier.</p>
</td>
</tr>
</tbody>
</table>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
© 2015 - 2019 The Apache Software Foundation
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>