动态配置分布式对象

Configuring Distributed Objects Dynamically

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

我有一个具体要求:我希望能够动态配置分布式对象(比如地图、队列等)。也就是说,当我启动集群时,我手头无法拥有所有的配置数据。我希望能够按需初始化(和处置)服务,并且它们的配置可能会在两者之间发生变化。

我正在评估的版本是 3.6.2。

我可用的文档(参考手册、部署指南以及 "Mastering Hazelcast" 电子书)在细节方面非常简陋 w.r.t。这个主题,甚至部分矛盾。

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

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

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

所以这看起来应该可行,但考虑到文档对此事的沉默程度,我想得到一些确认。

当前版本无法即时更改已创建的分布式对象的配置,但计划在未来的版本中添加此功能。一旦创建,地图配置将停留在节点级别而不是集群级别。
只要您从配置中创建分布式地图,使用它并销毁它,您的方法应该可以正常工作。