Hazelcast分布式列表并发

时间:2014-02-08 14:33:57

标签: hazelcast

我有一个hazelcast实例,它将对象添加到列表中,其他节点删除对象并将对象添加到该列表中。我在代码中没有任何同步。

私人静态列表> ordered = h.getList(“my-distributed-list”);

和节点从有序列表中添加/删除Job。

我应该担心多台机器上的节点之间的同步吗?说100个或更多节点..

1 个答案:

答案 0 :(得分:2)

您需要注意以下几点:

列表本身是线程安全的,你不能通过并发访问来破坏它。

但是..如果你的逻辑不是线程安全的,那么这个列表对你没有帮助,例如。

int indexOf = list.indexOf("foo");
if(index!=-1) {
    list.remove(indexOf)
}

然后这包含种族问题,因为读取索引和删除具有给定索引的项目不是原子操作。

除了在您自己的逻辑中存在竞争问题之外,过多的竞争线程可能会导致性能/可伸缩性问题,因为列表不是特别修改友好的数据结构。

如果您知道自己在做什么,那么列表可以成为您的朋友。