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?