Hi, Igniters,

Currently, I'm working on the thin C++ client implementation.
As you may already know, there is an issue with latency in our
thin clients, which also can result in performance issues (you
can see the "About Ignite Thin client performance" thread on
user list).

So, how about we implement some kind of "Best Effort Affinity"
for our thin clients? In my opinion, this could be possible and
may improve mean latency when using thin clients dramatically.

The scenario is following:
1. Thin client connects to one of the node from the provided
address list, just as now.
2. When user create instance of CacheClient, thin client
requests partition mapping for the cache.
3. Client establishes connections to nodes, which are both in the
list, provided by user and in a server node response.
4. When user makes put/get/some other cache operation,
thin client makes the best effort to send the request to the node,
which stores the data.
5. To update partition mapping, thin client can provide public API,
or do it with some timeout. Also, we can add "miss" flag to cache
operation response, which whill indicate, that operation was not
local for the server node and which thin client can use to
understand, that partition mapping has changed to request server
node for an update.

What do you think?

Best Regards,
Igor

Reply via email to