Igniters,
I've faced with a customer's cluster which has more than 150 nodes and most for them are the thick-client nodes. Due to each thick-client is a full-fledged cluster topology participant it affects the cluster discovery machinery during the system operation and adding an additional overhead for using/deploying a new nodes in Kubernetes environment. However, the main thing from my point of view it prevents updating the client side and server side components independently (Apache Ignite doesn't support rolling upgrade). Accordingly to the assumptions above using thin clients become a necessary. This looks even more attractive, since the thin client has a fairly rich API over the past few releases. The MAIN ISSUE here that blocks thin client usage is that for some of cache groups a custom affinity function (and an AffinityKeyMapper) was used which prevents enabling the Partition Awareness thin client feature. Thus each cache request will have two hops. Of course, we can force users to migrate to a new API, but this becomes more difficult when Apache Ignite is part of a much larger architectural solution and thus it is doent' looks so friendly. The MAIN QUESTION here - does anyone know our users who have encountered with the same issue? I want to solve such a problem once and make all such users happy by implementing the general approach. = Possible solutions = 1. Making an affinity function pluggable (mapping calculations) on the thin clients side. Currently the RendezvousAffinityFunction [1] is only supported for the partition awareness. A user's affinity function seems to be the stateless function due to there is no machinery to transfer states to the thin client. Pros - a general solution for all such cases; Cons - unnecessary complexity, extending public API; 2. Creating an Ignite extension which will extend the thin client API thus a user will have a full control over a destination node to which requests being sent. Pros - isolated solution, simple implementation; Cons - hard to support spring-boot-thin-client etc. and other extensions based on the thin client API; Folks, please share your thoughts. [1] https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCachePartitionsRequest.java#L206