有效地找到我的机器所在的数据中心及其完整节点?

时间:2014-01-12 10:24:47

标签: java enums hostname

在我们公司,我们可以将机器主机名设为 -

dbx111.dc1.host.com
dbx112.dc2.host.com
dcx113.dc3.host.com

此处dc1dc2dc3是我们的数据中心,我们现在只有三个数据中心。此外,机器主机名可能有更多的点在将来由另一个域分隔。

现在我需要找出当前机器所在的datacenter,因为我将在实际机器上的代码下运行。如果我的机器在DC1,那么我需要返回/zk/dc1,但如果我的机器在DC2,那么我需要返回/zk/dc2,如果我的机器在{{1}然后我会返回DC3

但如果我的机器数据中心位于/zk/dc3,那么我会随机返回DEV/zk/dc1

目前我的下面的代码只写了,我所在的DATACENTER是否是/zk/dc2。但我不知道如何在此ENUM中添加上述逻辑,以便它还可以返回DC1 or DC2 or DC3 or DEV/zk/dc1/zk/dc2,具体取决于我所在的数据中心。

而且,如果我只需要获得我所在的数据中心,那么它也应该能够以这种方式工作。

/zk/dc3

知道如何有效地完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

private void toZkString() {
    if (this == DEV) {
        return new Random().nextBoolean() ? "/zk/dc1" : "/zk/dc2";
    }
    return "/zk/" + name().toLowercase();
}

private static final String OUR_LOCATION_AS_ZK_STRING = ourlocation.toZkString();