[
https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Tupitsyn updated IGNITE-9876:
-----------------------------------
Description:
See linked IEP-23.
First iteration is going to be an "experimental feature" with the following
limitations:
* No reconnect support for failed nodes
* No AffinityKeyMapped support
was:
Currently we connect to a random node, so when the primary node for the given
key is different from that random node, there is an additional network hop.
For single-key operations (scope of this ticket) we should strive to determine
primary node and connect there directly.
To determine primary node for a given key:
1. Retrieve partition map from server node (partition -> primaryNodeId)
2. Connect to all known server nodes (all endpoints from
IgniteClientConfiguration) and get their Node Ids, build a map from endpoint
(IP or host) to Node Id
3. Implement RendezvousAffinityFunction in C#
Efficient automatic partition map retrieval:
1. When a partition map is needed, send a separate asynchronous operation (new
server op type is required)
2. Do not block current user operation. If partition map is not present, just
skip affinity step and use current connection
3. When response arrives with the partition map, save it with a timestamp
4. On every partition map access check the timestamp. Request new map if
current map is older than N minutes.
> .NET: Thin Client: Implement Best Effort Affinity
> -------------------------------------------------
>
> Key: IGNITE-9876
> URL: https://issues.apache.org/jira/browse/IGNITE-9876
> Project: Ignite
> Issue Type: New Feature
> Components: platforms, thin client
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Priority: Major
> Labels: .NET, iep-23
>
> See linked IEP-23.
> First iteration is going to be an "experimental feature" with the following
> limitations:
> * No reconnect support for failed nodes
> * No AffinityKeyMapped support
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)