从Hazelcast节点联系Java客户端

时间:2016-08-10 07:48:01

标签: java hazelcast

我有一个hazelcast集群,它为命令行触发的java-client执行多次计算。我需要在节点仍然工作的同时在客户端系统上保留部分计算结果。我将把部分数据存储在Hazelcasts地图中。现在我正在寻找一种方法来通知客户端节点已经在地图中存储了数据并且他可以开始使用它。有没有办法从任何hazelcast节点触发客户端操作?

3 个答案:

答案 0 :(得分:0)

您的问题不是很明确,但看起来您可以使用com.hazelcast.core.EntryListener来触发一个回调,该回调会在数据映射中存储新条目时通知客户端。

答案 1 :(得分:0)

您的成员节点可以将一些中间结果(或仅通知消息)发布到Hazelcast IQueueITopicRingBuffer。 流程看起来像这样。

  1. 客户注册一个监听器,比如说rignbuffer。
  2. 客户端提交要在群集上执行的命令。
  3. 成员将中间结果保存到IMaps或任何其他数据结构
  4. 成员向主题发送有关部分结果可用性的消息。
  5. 客户端在IMap
  6. 中接收消息并访问数据
  7. 会员在完成任务时发送消息。
  8. 这样的事情。 您可以找到一些示例here

    如果您对此有任何疑问,请与我们联系。

    干杯,

    维克

答案 2 :(得分:0)

有几种方法可以解决这个问题。最简单的是使用专用的IMap或任何其他Hazelcasts同步集合。人们可以简单地在这样的地图中写入数据,并在添加之后检索/删除它。但这会导致巨大的开销,因为数据必须在整个集群中同步。如果数据非常庞大且集群很庞大,全世界或至少美国都有几百个节点,那么数据将在所有节点上同步,以便稍后删除,这也必须同步。不删除是没有选择的,因为数据可以获得几个gb大,这将使数据的同步更加昂贵。问题得到了解答,但解决方案并不适合所有情况。