从单个位置共享属性文件

时间:2010-05-17 15:30:22

标签: java java-ee properties nfs

我们将Java Enterprise应用程序部署到多个服务器上。有一些复制的服务器运行相同的应用程序来进行负载平衡(让我们称之为J2EE服务器)。注意这不是集群的。

有一个公共服务器(让我们称之为道具服务器),它托管与所有应用程序相关的所有属性文件。包含属性文件的文件夹是在所有其他J2EE服务器之间共享的NFS。 问题是你可以看到道具服务器是一个单点故障。如果它没有出现或者NFS共享被破坏,其他服务器将无法加载属性。

有哪些选项可以避免这种硬依赖? 鉴于我们不希望将属性文件复制到所有服务器的约束。

4 个答案:

答案 0 :(得分:3)

如果您遇到此问题,可扩展性更高的解决方案是使用此方法:

http://java.sun.com/j2se/1.4.2/docs/guide/lang/preferences.html

这抽象出了它们所在的位置。然后,您可以将这些设置存储在LDAP服务器,克隆属性或任何最佳状态中 - 您甚至可以针对不同的环境使用不同的机制。

答案 1 :(得分:2)

其中一种方法是每个J2EE服务器都有一组克隆的配置文件。这意味着一个约束,即每次为一个服务器更改配置时,它应该在所有其他服务器之间进行rsync-ed(在知道更改之后)。

积极的方面是明确的,你真的有N个独立可配置的服务器,配置更改杀死(如果杀死)只有一个服务器。

消极方面是有时会有人忘记做'rsync'和&在一个盒子上更改配置后'跳出'。

答案 2 :(得分:1)

看看PAXOS算法。它旨在使多个服务器达成共识。

http://en.wikipedia.org/wiki/Paxos_algorithm

答案 3 :(得分:1)

  

考虑到我们没有的约束   想要将属性文件复制到   所有服务器。

如果您可以将属性复制到某些服务器,请选择一位领导并确保将任何修改传播到备份,然后Paxos就是您的朋友。如果领导者失败,可以选出新的领导人。我更新了维基百科页面。它包含有关算法描述的错误。