Hazelcast中的分区功能是如何工作的?

8
据我所见,Hazelcast的应用通常在具有50个以上节点的架构中最为常见。但是,在1到4个节点的架构上使用Hazelcast是否合理呢?如果是,我应该如何制定最佳策略,以便处理分区和Hazelcast实例?
假设我只在一个节点上使用Hazelcast!我应该使用多少个Hazelcast实例?并且应该让分区默认数量保持不变(271),还是更好地进行更改,那么我需要考虑哪些因素来决定我的决策。
请有经验的人对此进行解释。
1个回答

7
这取决于您的需求:)
例如,hazelcast为映射执行的操作是计算键的哈希值,对其进行模分区计数,以确定存储键的分区。
对于单节点设置,Hazelcast可能有意义,因为该映射提供了比常规映射更多的功能,但其真正价值在于多节点(2个或更多)。
我们有客户使用较小的集群,例如5/6个节点。即使只有2个节点,您仍然可以获得某些功能。
关于分区计数:我们的目标是分区大小应最大为50/100 MB。因此,使用271个分区,您会获得+/13 GB的数据(50 MB)。如果您有26 GB的数据,则将分区数量加倍。

首先,非常感谢您的输入。这里的情况是我将使用hazelcast作为分布式内存数据网格,与couchbase一起作为持久性存储。因此,我正在尝试弄清楚这种组合(4个节点上的hazelcast和30多个节点上的couchbase)是否有所提供。我已经使用MapStore进行了一些指标测量,包括读/写吞吐量,尽管hazelcast很快,但couchbase更快。需求非常大(数据量达到几TB)。 - maria_k
1
我们只提供一个MapStore接口,因此实际的实现将是地图总性能的重要组成部分。另一个重要因素是配置,例如写入方式(write through vs write behind)。您可以使用具有同步备份的映射(因此在至少另一台机器上保证内存),但具有writebehind mapstore。因此,其中一个成员将进行写入。这样,您可以更好地利用地图存储性能。 - pveentjer
再次感谢。最后一个问题:我有一个couchbase连接实例。分区是否独立使用此实例并同时写入,还是等待一个分区完成以便下一个继续? - maria_k
1
你在说Hazelcast分区吗?分区本身并没有任何作用。 - pveentjer
有没有办法配置MapStore使用的线程数量,以便并发地写入数据库?(类似于连接池?)MapStore是如何工作的?我已经实现了它,但除了(write-delay-seconds)之外,我没有找到任何其他属性来更好地调整配置以满足我的需求。 - maria_k
我已经深入研究了Hazelcast,并发现它提供了许多关于内存处理的功能,但是在Couchbase数据库中同步写入是前提条件,而且我没有看到与MapStore相关的许多配置属性,这就是为什么我要问所有这些问题,以查看是否有遗漏的地方。想象一下,将会有多个MapStore实现,这就是为什么我希望尽可能明智地使用它的原因。 - maria_k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接