2016-10-05 61 views
0

我目前正在使用Hazelcast为我们的软件进行评估。如果你能帮助我阐明以下内容,会很高兴。动态配置分布式对象

我有一个具体的要求:我想能够动态地配置分布式对象(比如地图,队列等)。也就是说,当我启动集群时,我无法掌握所有配置数据。我希望能够根据需要初始化(和处理)服务,并且可以在它们之间改变它们的配置。

我正在评估的版本是3.6.2。

我可用的文档(参考手册,部署指南,以及“Mastering Hazelcast”电子书)对于细节w.r.t非常简单。这个问题,甚至部分矛盾。

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

文档中提到,这是可以预料的,如果节点对同一个分布式对象有不同的配置,就会发生坏事。这很合理,很好。我可以确保配置一致。

看着代码,看起来有可能做我想做的事情:在创建分布式对象时,如果它还没有代理,HazelcastInstance将查看其配置以创建一个新的代理并将其存储在本地代理列表中。当该对象被销毁时,其代理将从列表中删除。在下一次调用时,它会从Config中重新加载。此外,该配置是可写的,所以如果它在两者之间被改变,它应该选择这些改变。

所以这看起来应该是可行的,但鉴于文件对此事的沉默程度,我想要一些确认。

  • 是否有任何理由为什么上述不应该工作?
  • 如果它应该工作,是否有任何理由不是做到以上?例如,是否有计划在未来版本中更改代码,以防止这种情况发生?
  • 如果是这样,是否有其他选择?

回答

0

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

+0

完美。谢谢。 是的,我认为你应该向这个方向扩展Hazelcast。现在的事实是,配置是如此(至少在API中提到的)静态是有点烦人的。 – user6926802