Hazelcast:IMap和ISemaphore中跨分区的数据分布差异

问题描述 投票:0回答:1

我怀疑来自链接https://hazelcast.org/mastering-hazelcast/#controlled-partitioning

它说:

Hazelcast有两种类型的分布式对象。

一种类型是真正分区的数据结构,如IMap,其中每个分区将存储Map的一部分。

另一种类型是非分区数据结构,如IAtomicLong或ISemaphore,其中只有一个分区负责存储主实例。

比方说,我已经在IMap中放了500条记录,据我所知,每条记录可能会进入不同的分区。现在我已经在ISemaphore中放了500条记录,然后从链接上面引用段落的意思是,所有500条记录都将进入单一分区?请帮助我理解IAtomicLong或ISemaphore,其中只有一个分区负责存储主实例。

另外想了解一下,信号量和IMap在关于分布在hazelcast中的数据分布方面有何不同?

hazelcast hazelcast-imap data-partitioning
1个回答
0
投票

使用IMap,分区数据结构是有意义的,因为它通常会包含大量项目(在您的示例中为500),并且经常需要对地图中任何位置的项目进行并发访问。

但是像ISemaphore和IAtomicLong这样的数据结构是简单的对象,而不是对象的集合 - 你不能向ISemaphore添加500条记录。信号量状态只包含几个字段(计数,当前所有者,名称,可能还有其他几个字段),将它们分开并将它们存储在单独的分区中是没有意义的。

队列更有趣,因为它确实包含多个项目,但不是分区数据结构。您可以向队列中添加500个项目,但访问总是位于队列的前面(用于读取)或队列的后面(用于写入),因此跨分区分发数据结构并不能真正提供改进的并发性与随机访问的Map,Set,List和类似集合一样。

© www.soinside.com 2019 - 2024. All rights reserved.