gpt4 book ai didi

java - Hazelcast - IMap 如何使用仲裁进行锁定操作?

转载 作者:行者123 更新时间:2023-12-02 12:34:27 25 4
gpt4 key购买 nike

我想使用 Quorum 为我的 map :myMap 进行 map 锁定操作。

我使用编程配置进行仲裁。

        QuorumConfig quorumConfig = new QuorumConfig();
quorumConfig.setName("xxx");
quorumConfig.setEnabled(true);

quorumConfig.setQuorumFunctionImplementation(new QuorumFunction() {
@Override
public boolean apply(Collection<Member> members) {
...
}
});

我使用 com.hazelcast.config.MapConfig.setQuorumName 方法来设置仲裁 mpl。

我的 map 配置如下所示,因为法定人数设置为 xxx。

MapConfig{name='myMap', inMemoryFormat=BINARY', ...., mapAttributeConfigs=null, quorumName=xxx, queryCacheConfigs=null, cacheDeserializedValues=INDEX_ONLY}

问题是,对于锁定操作,不会调用仲裁函数。

对于映射放置/删除操作,我发现仲裁功能受到尊重。

com.hazelcast.quorum.QuorumException:集群仲裁失败
在 com.hazelcast.quorum.impl.QuorumImpl.newQuorumException(QuorumImpl.java:164)
在com.hazelcast.quorum.impl.QuorumImpl.ensureQuorumPresent(QuorumImpl.java:158)
在com.hazelcast.quorum.impl.QuorumServiceImpl.ensureQuorumPresent(QuorumServiceImpl.java:127)
在 com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.ensureQuorumPresent(OperationRunnerImpl.java:237)
在 com.hazelcast.spi.impl.operationservice.impl.OperationRunnerImpl.run(OperationRunnerImpl.java:178)
在 com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.process(OperationThread.java:120)
在 com.hazelcast.spi.impl.operationexecutor.impl.OperationThread.run(OperationThread.java:100)
在 ------ 提交自 ------。(来源不明)
在 java.lang.Thread.getStackTrace(Thread.java:1117)
在 com.hazelcast.spi.impl.operationservice.impl.InitationFuture.resolve(InitationFuture.java:114)
在 com.hazelcast.spi.impl.operationservice.impl.InitationFuture.resolveAndThrowIfException(InitationFuture.java:75)
在 com.hazelcast.spi.impl.AbstractInvocauFuture.get(AbstractInvocauFuture.java:155)
在com.hazelcast.map.impl.proxy.MapProxySupport.invokeOperation(MapProxySupport.java:373)
在com.hazelcast.map.impl.proxy.MapProxySupport.removeInternal(MapProxySupport.java:508)
在 com.hazelcast.map.impl.proxy.MapProxyImpl.remove(MapProxyImpl.java:211)

但是仲裁不用于锁定操作。

在文档中,给出了用于锁定操作的 xml 配置。

http://docs.hazelcast.org/docs/latest-development/manual/html/Distributed_Data_Structures/Map/Locking_Maps.html

Example config is given as:

An example of declarative configuration:

<map name="myMap">
<quorum-ref>map-actions-quorum</quorum-ref>
</map>

<lock name="myMap">
<quorum-ref>map-lock-actions-quorum</quorum-ref>
</lock>

Here the configured map will use the map-lock-actions-quorum quorum for map lock actions and the map-actions-quorum quorum for other map actions.

与此相对应的程序是什么?

问候

最佳答案

以下是配置锁定仲裁的示例:

Config config = new Config();
LockConfig lockConfig = new LockConfig();
lockConfig.setName("myLock")
.setQuorumName("quorum-name");
config.addLockConfig(lockConfig);

查看链接了解详细信息:http://docs.hazelcast.org/docs/3.8.3/manual/html-single/index.html#lock-configuration

关于java - Hazelcast - IMap 如何使用仲裁进行锁定操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com