J2EE集群:是否有处理集中配置的通用方法?

时间:2010-12-03 10:10:12

标签: java configuration cluster-computing

我们开发一个通常部署在单个Web服务器上的应用程序。现在我们检查它在集群环境中的运行方式,因为有些客户正在使用集群。

问题是应用程序创建了一个本地配置(在注册表/文件中),这在群集中没有任何意义。配置由应用程序更改。 是否有通用方式(如接口)进行集中配置,因此当应用程序部署在集群中时,每个节点上的config(-file)本身不会重复?还有其他推荐选择吗? (在network-share / in database / some MBean中手动配置?)

为什么通用?它必须在不同的应用程序服务器上运行(如tomcat,jboss,Webspere,weblogic ......),因此我们无法使用某些特定于服务器的功能。

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用像Commons Configuration这样的库,并选择像JDBC或JNDI一样对群集友好的实现。

答案 1 :(得分:0)

我会首先考虑JDBC和JDNI,但是如果你希望你的服务器能够独立运行,我会建议像subversion / git / mercurial这样的文件分配系统,即如果你的中央配置服务器关闭或不可用,你就不要不希望生产停止。

受版本控制的系统提供了何时更改何时更改以及受控发布(以及回滚版本)的历史记录

避免中央服务器添加另一个故障点的问题的一种方法是使用你已经依赖的数据库服务器(假设你有一个),因为如果它没有运行,你就不会工作反正。

答案 2 :(得分:0)

中央配置的最简单方法是将其放在文件系统上。通过这种方式,您可以将文件系统安装到您的操作系统,无论品牌或版本是什么,都可以将其提供给您的应用服务器。

我们为某些应用程序执行此操作。我们关心的共享库和/或属性文件(在我们的例子中)。我们设置了JVM参数或JNDI环境变量(试图转向那些),这样我们就可以在运行时查找已安装驱动器的路径并从文件中加载数据。

为我们工作非常光滑。

现在,如果您正在撰写信息,那就是另一回事了。那时你必须担心如何运行你的集群(它是否仅高度可用?负载均衡?)。应用程序是否在两个群集中运行,就像它是一个应用程序一样?或者它是否在每个群集节点上独立运行?如果是这样,那么您可能不得不担心并发写入。可能更好地使用数据库或上述其他解决方案之一。

但是,如果你所做的只是阅读配置,那么我会选择安装的文件系统,因为它是最简单的。