【问题标题】:Hazelcast dynamic imap configuration propagation to membersHazelcast 动态 imap 配置传播到成员
【发布时间】:2018-04-13 10:38:35
【问题描述】:

如果我有多个使用同一个 IMap 的 Hazelcast 集群成员,并且我想以编程方式以特定方式配置 IMap,那么我是否需要在所有成员中都有配置代码,或者拥有配置就足够了只在其中一个成员中编码一次?

换句话说,MapConfigs 是仅特定于成员的还是集群范围的?

为什么我要问的是 Hazelcast 文档 http://docs.hazelcast.org/docs/latest/manual/html-single/index.html#configuring-programmatically

这么说

随着动态添加的数据结构配置传播 所有集群成员,可能会由于以下条件而发生故障 超时和网络分区。配置传播机制 每当成员资格时,内部都会重试添加配置 检测到变化。

这给了我配置传播的印象。

现在如果成员 A 为 IMap "testMap" 指定了某个 MapConfig,那么成员 B 是否应该看到该配置

hzInstance.getConfig.findMapConfig("testMap") #or .getMapConfig("testMap")

在我的测试中,B 没有看到 A 完成的 MapConfig。

我还尝试在 A mapConfig.TimeToLiveSeconds(60) 和 B mapConfig.TimeToLiveSeconds(10) 指定。

似乎 IMap 中 A 拥有的项目在 60 秒内被驱逐,而 B 拥有的项目在 10 秒内被驱逐。如果我想要 IMap 的行为一致,这支持每个成员都需要执行相同配置的想法。

【问题讨论】:

    标签: configuration hazelcast


    【解决方案1】:

    每个成员都拥有 IMap 的某些分区。成员的 IMap 配置仅对其拥有的分区有效。 所以当同一个map的entry在不同的成员中配置不同的时候,看到不同的TTL值是正常的。 正如您所说,所有成员都应该具有相同的 IMap 配置以具有集群范围的持久行为。 否则,每个成员都会将自己的配置应用于自己的分区。

    但是,如果按照here 的描述添加动态配置,则该配置会传播到所有成员并更改其行为。

    简单来说,如果你在创建实例之前添加配置,那就是本地配置。但是,如果您在创建实例后添加它,那就是动态配置并传播到所有成员。

    【讨论】:

    • 谢谢你的澄清。我错过了只有动态配置传播的部分。我曾假设编程配置也会传播到所有成员。在创建 Hazelcast 实例后,我确实尝试了动态配置,但在我的测试中没有效果,因为使用的 Hazelcast 版本是 3.7.8。根据文档,从 3.9 开始支持动态配置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2012-12-23
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多