java - 将可调用对象发送到将保存 future 数据的 hazelcast 节点

标签 java hazelcast

我有一个由两个 hazelcast 实例组成的集群。当我使用执行程序服务并将任务发送给 key 所有者时, key 是新的(意味着现在没有映射包含此 key ,但在“调用”之后),然后我的可调用对象将分发到每个节点。

    instance.getExecutorService("default")
            .submitToKeyOwner(callable, newTargetColumn);

出于调试目的,我实现了一个只记录事件的 EntryListener。在那里您可以看到两个实例都在做完全相同的事情。

hz._hzInstance_2_dev.cached.thread-3 TRACE datastore.WorkmapDebugListener - entry added: EntryEvent {worker-map::to be defined} key=high, oldValue=null, value=[1.04, 1.01, 0.98, 0.9, 0.86, 0.83, 0.83, 0.85, 0.92, 0.91, 0.47, 0.49, 0.48, 0.49, 0.48, 0.42, 0.52, 0.56, 0.55, 0.52, 0.53, 0.51, 0.47, 0.49, 0.4, 0.41, 0.39, 0.37, 0.38, 0.37, 0.41, 0.36, 0.38, 0.33, 0.3, 0.31, 0.32], event=ADDED, by Member [192.168.1.157]:5802 this
hz._hzInstance_1_dev.cached.thread-3 TRACE datastore.WorkmapDebugListener - entry added: EntryEvent {worker-map::to be defined} key=high, oldValue=null, value=[1.04, 1.01, 0.98, 0.9, 0.86, 0.83, 0.83, 0.85, 0.92, 0.91, 0.47, 0.49, 0.48, 0.49, 0.48, 0.42, 0.52, 0.56, 0.55, 0.52, 0.53, 0.51, 0.47, 0.49, 0.4, 0.41, 0.39, 0.37, 0.38, 0.37, 0.41, 0.36, 0.38, 0.33, 0.3, 0.31, 0.32], event=ADDED, by Member [192.168.1.157]:5802

难道不能提前获得节点吗?我的意思是因为无论如何都会根据映射键计算分区?

我可以向可能保存数据的节点发送一个可调用对象吗?

最佳答案

'submitToKeyOwner' 意味着我们计算该 key 的哈希值并根据该哈希值找到正确的成员。成员是否真的拥有该 key 并不重要。检查 key 是否存在也没有意义,因为我们应该检查哪个 map ?也许一张 map 有 key 而另一张 map 没有。因此,不依赖于 key 的存在以及用于将该任务发送给成员的路由机制。

这里错误的解释是日志记录(我也被放在错误的脚上)。如果你在 member-a 上的某个映射中插入一个键,并且 member-a 和 member-b 在该映射上有一个条目监听器注册,他们都会收到一个事件,表明一个条目被添加到 member-a 上;甚至成员-b。

如果您有任何问题,请随时提出。您的代码应该可以正常工作。

关于java - 将可调用对象发送到将保存 future 数据的 hazelcast 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28028524/

相关文章:

java - 什么是 IntelliJ 代码检查中的入口点,我需要将它们设置为 "fix"吗?

java - java信号量的问题

java - 无法实例化类;无空构造函数错误 - Android 切换 Activity

java - Swagger Gateway 微服务聚合

java - Hazelcast 驱逐和分布式查询

java - 使用 Hazelcast/Redis 满足数据库支持的缓存需求

java - Spring 的原型(prototype)和单例作用域 bean 关于有状态

size - 通过 jmx 监控获取以 MB 或 KB 为单位的 Hazelcast map 大小

Hazelcast:什么对象可以用于分布式锁 key ?

java - JGroups、Terracotta 和 Hazelcast