如何在GG Node上针对位于其上的IMDB段执行分布式任务?

时间:2014-04-11 16:09:24

标签: gridgain

我已经分区(IMDB)我想在每个节点上启动一个计算任务,它在每个节点IMDB上对其执行的节点上的所有记录进行一些计算。因此,每项任务都是工作的一部分。 由于我无法限制对节点上数据的访问,因此似乎不太可能进行共置。 请确认或建议解决方案。

2 个答案:

答案 0 :(得分:0)

听起来好像是在询问如何将计算与缓存数据的节点并置。您可以查看GridGain附带的CacheAffinityExample。具体来说,以下代码段:

for (int i = 0; i < KEY_CNT; i++) {
    final int key = i;

    // This callable will execute on the remote node where
    // data with the given key is located.
    grid.compute().affinityCall(CACHE_NAME, key, new GridCallable() {
        @Override public void call() throws Exception {
            String val = cache.get(key);

            // Work on cached value.
            ...

            return val;
        }
    }).get();
}

答案 1 :(得分:0)

此代码将向每个节点发送一个闭包,并对节点上的所有数据进行计算:

grid.forCache("mycache").compute().broadcast(new GridRunnable() {
    @Override public void run() {
        for (GridCacheEntry<K, V> e : cache.entrySet()) {
            // Do something
            ... 
        }
    }
}).get();