动态配置分布式对象

时间:2016-10-05 14:27:33

标签: hazelcast

我目前正在使用Hazelcast评估我们的软件。如果你能帮助我阐明以下内容,我将很高兴。

我有一个特定的要求:我希望能够动态配置分布式对象(比如地图,队列等)。也就是说,当我启动集群时,我无法获得所有配置数据。我希望能够按需初始化(和处理)服务,并且它们的配置可能会在中间进行更改。

我评估的版本是3.6.2。

我提供的文档(参考手册,部署指南,以及"掌握Hazelcast"电子书)在细节方面非常吝啬。这个主题,甚至部分矛盾。

所以,澄清一个预期的用法:我想启动集群;然后,在某些时候,创建一个分布式地图结构,在节点间使用它;然后处置它并使用具有不同配置的地图(例如,备份数量,驱逐政策)用于相同的目的。

文档提到,并且可以预料,如果节点对同一分布式对象具有不同的配置,则会发生错误的事情。这很有道理,很好;我可以确保配置一致。

查看代码,似乎可以按照我的意图行事:创建分布式对象时,如果它还没有代理,HazelcastInstance将查看其Config以创建新的一,并将其​​存储在其本地代理列表中。销毁该对象时,将从列表中删除其代理。在下一次调用时,它将从Config重新加载。此外,该配置是可写的,因此如果它在中间被更改,它应该接受这些更改。

所以这似乎应该有效,但考虑到文档在这个问题上的沉默,我想要一些确认。

  • 为什么上述不应该起作用?
  • 如果它应该有用,是否有任何理由来执行上述操作?例如,是否有计划在未来版本中更改代码以防止其工作?
  • 如果是的话,还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

虽然计划在将来的版本中添加此功能,但当前版本无法在已创建的Distributed对象上动态更改配置。一旦创建,地图配置将保持在节点级别而不是集群级别 只要您从配置中创建分布式地图,使用它并销毁它,您的方法应该没有任何问题。