代码之家  ›  专栏  ›  技术社区  ›  ring bearer

从单个位置共享属性文件

  •  1
  • ring bearer  · 技术社区  · 16 年前

    我们将Java企业应用程序部署到多个服务器上。有复制的服务器在运行同一个应用程序以实现负载平衡(我们称之为J2EE服务器)。请注意,这不是群集的。

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

    有哪些选择可以避免这种硬依赖? 考虑到我们不想将属性文件复制到所有服务器的约束。

    4 回复  |  直到 15 年前
        1
  •  1
  •   Jérôme Verstrynge    15 年前

    考虑到我们没有 希望将属性文件复制到 所有服务器。

    如果您可以将属性复制到某些服务器上,请选择一个领导者并确保任何修改都传播到备份中,那么paxos就是您的朋友。如果领导失败,可以选举新的领导。我已经更新了维基百科页面。它包含关于算法描述的错误。

        2
  •  3
  •   James Kingsbery    16 年前

    如果您遇到此问题,则更具可扩展性的解决方案是研究如何使用:

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

    这将抽象出它们所在的位置。然后,您可以将这些设置存储在LDAP服务器、克隆的属性或其他最好的设置中,甚至可以为不同的环境使用不同的机制。

        3
  •  2
  •   bobah    16 年前

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

    积极的方面很明显,您确实有n个独立可配置的服务器,配置更改只会杀死(如果杀死)一个服务器。

    消极的方面是,有时有人会忘记在单个框上更改配置后执行“rsync”和“bounce”。

        4
  •  1
  •   corsiKa    16 年前

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

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