| <!DOCTYPE html>
|
| <!--[if IE]><![endif]-->
|
| <html>
|
|
|
| <head> |
| <link rel="canonical" href="https://ignite.apache.org/releases/2.4.0/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<IEnumerable<IClusterNode>> 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><<span class="xref">System.Collections.Generic.IEnumerable</span><<a class="xref" href="Apache.Ignite.Core.Cluster.IClusterNode.html">IClusterNode</a>>></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 - 2018 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>
|