我目前正在做POC
开发distributed, fault tolerant, ETL ecosystem
。我已选择Hazelcast
作为我的clustering (data+notification)
的用途。通过Hazelcast资源搜索需要我to this link,它完全符合我的想法,使用基于地图的解决方案。Hazelcast通过直接写入地图存储启动前的预计
我需要理解一点。在此之前,请允许我给出我们架构的典型概念:
说we have 2 nodes A,B running our server instance clustered through hazelcast
。其中之一是听众接受请求(但可以在故障转移时更改),请说A.
A获取请求并将其放到分布式映射中。该映射是由持久性存储支持的直写式写入,并且在节点上配置单个内存备份。
每个实例都有一个本地地图条目侦听器,该条目侦听器在条目添加事件时会处理该条目,然后将其从分布式映射中删除。
这是按预期工作。
问:
说10名的请求已经收到,每个节点上有5分发。每个节点上的2个条目已经被处理,现在两个实例都崩溃了。
因此,现在在支持数据存储中共有6个条目。
现在我们调出两个实例。按照文件 - “As of 1.9.3 MapLoader has the new MapLoader.loadAllKeys API. It is used for pre-populating the in-memory map when the map is first touched/used"
我们通过简单地加载所有存在于存储中的键值实现loadAllKeys()
这是否意味着有可能在那里,这两个实例中,现在将加载6。项并处理它们(从而导致重复处理)?或者是它在一个同步的方式处理,以便装载在集群做一次?
On server startup I need to process the pending entries
(如果有的话)。我看到的数据是加载,但entryAdded事件不会被触发。如何使entryAdded事件触发(或其他任何优雅的方式,通过这种方式,我将知道启动时有未决的条目)?
请求建议。
感谢, Sutanu
对于到目前为止的第二个问题,我有一个方法可以“获得”“本地”keySet并处理它们。这是Hazelcast初始化后的一次调用。我想知道这是否是我能做的最好的。 – 2013-03-14 10:12:01