用于长时间运行的java进程的配置系统



我正在编写一个长时间运行的java进程,它将对内存中的队列进行轮询,并消耗队列中的项目。我想在这个服务中使用zookeeper进行动态配置。我已经编写了一个java类,它运行一个线程并监视zookeeper节点。每次更改zookeeper节点时,都会触发一个事件,并且我会获得zookeepper节点数据的新内容。现在的问题是:

  1. znode数据的编码应该是什么,一种选择是使用类似于系统的.properties文件,这样只需要键值对,然后在我的监听器中,在更改时在配置类中设置这些键。

  2. 将这些数据写入一个文件,然后将该配置文件包含在我的java程序中,这有意义吗?如果我这样做,当配置更改时,我将不得不以某种方式刷新磁盘中的内容。我看不出将这些配置写入本地文件有什么特别的好处。Zookeeper服务器有足够的冗余,当服务被弹出时,配置刷新线程可以获得该znode的所有数据。

1)属性文件可以正常工作。java.util.Properties具有从流加载和保存的方便方法。您可能还想考虑将配置存储在yaml文件中,该文件允许的不仅仅是简单的键/值对。

2) 没有理由将配置信息存储在两个地方,如果这样做,那么会混淆哪一个是真正的配置文件。

最新更新