在我们公司,我们可以将机器主机名设为 -
dbx111.dc1.host.com
dbx112.dc2.host.com
dcx113.dc3.host.com
此处dc1
,dc2
,dc3
是我们的数据中心,我们现在只有三个数据中心。此外,机器主机名可能有更多的点在将来由另一个域分隔。
现在我需要找出当前机器所在的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
知道如何有效地完成这项工作吗?
答案 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();