上海客户上线的这个产品直到现在都还有很多可以记录的东西。今天来说点多套应用多套配置文件的事情。
产品有多个应用,每个应用的配置文件还挺多的。客户要求应用集群化,我们的做法是部署多套应用,数据共享。比如我有一个wsp应用,8个节点,那就要8个工程包。其实我们有3种应用,总共就是要24个工程包(捂脸....),所以客户说这样不行,到时运维就很麻烦。也是的,单种应用的代码全都相同的,就是若干配置不一样。
一开始在程序中是有标识符来指明节点在集群中的身份的,每个节点的标识不能重复。我们使用的是weblogic,一个域只部署一个应用,客户提出可以用ip+端口来标识一个应用,想法可以,实际过程中我们发现获取端口是比较麻烦的,一个运行中的程序是不知道它所在的server的端口是多少。
既然无法动态的知道服务器端口,那就人为地在服务器上加标识,让程序在启动的时候从系统变量里读取。示例:
void initSeverFlag() {
String serverFlag = System.getProperty("server.flag");
if (StringUtils.isEmpty(serverFlag)) {
logger.warn("-------------- 未能获取唯一服务器标识,启动失败,请检查wls或tomcat的启动参数:-Dserver.flag--------------");
System.exit(0);
}
}
很简单的用System.getProperty("server.flag")中获取。这家伙可以获取到JVM和操作系统的一些参数。例