Thanks Dimitriy! We try use this node predicate : ignite.affinity("CacheNM").isPrimary(clusterNode, "Key1")
To located the Primary service of the a specific key; when call ignite#services(); not verified, but should can work. Regards Aaron aa...@tophold.com From: Dmitriy Setrakyan Date: 2017-09-12 13:41 To: user CC: aaron Subject: Re: Re: When cache node switch between primary and backup any notification be received? On Mon, Sep 11, 2017 at 6:54 PM, aa...@tophold.com <aa...@tophold.com> wrote: Thanks Alexey! what we real want, we deploy service on each Cache Node. those service will use data from its' local cache. Client will call those remote service, Client should only call the service on primary node, this make those nodes work like master-slave mode automatically. In Ignite, a node is a primary node for a certain partition. A key belongs to a partition and a partition belongs to a node. A node may be primary for key1 (partition N) and the same node may be a back up for key 2 (partition M). I think you simply should invoke your service on each node and only check or iterate through primary keys stored on that node. You can get a list of primary keys by using org.apache.ignite.cache.affinity.Affinity API, for example Affinty.primaryPartitions(ClusterNode) method. int[] primaryPartitions = Ignite.affinity("cacheName").primaryPartitions(Ignite.cluster().localNode()); for (int primaryPartition : primaryPartitions) { // Cursor over local entries for the given partition. QueryCursor<Entry<K,V>> cur = cache.query(new ScanQuery(primaryPartition)); for (Entry<K, V> entry : cur) { // Do something on local entries. } } Does this make sense?