提交 35048a0c 编写于 作者: H haocao

Refactor orchestration instance id.

上级 ecbd5b4c
......@@ -54,7 +54,7 @@ public final class InstanceListenerManager implements ListenerManager {
@Override
public void start(final ShardingDataSource shardingDataSource) {
regCenter.watch(stateNode.getInstancesNodeFullPath(new OrchestrationInstance().getInstanceId()), new EventListener() {
regCenter.watch(stateNode.getInstancesNodeFullPath(OrchestrationInstance.getInstance().getInstanceId()), new EventListener() {
@Override
public void onChange(final DataChangedEvent event) {
......@@ -77,7 +77,7 @@ public final class InstanceListenerManager implements ListenerManager {
@Override
public void start(final MasterSlaveDataSource masterSlaveDataSource) {
regCenter.watch(stateNode.getInstancesNodeFullPath(new OrchestrationInstance().getInstanceId()), new EventListener() {
regCenter.watch(stateNode.getInstancesNodeFullPath(OrchestrationInstance.getInstance().getInstanceId()), new EventListener() {
@Override
public void onChange(final DataChangedEvent event) {
......
......@@ -31,6 +31,8 @@ public final class InstanceStateService {
private final RegistryCenter regCenter;
private final OrchestrationInstance instance = OrchestrationInstance.getInstance();
public InstanceStateService(final String name, final RegistryCenter regCenter) {
stateNode = new StateNode(name);
this.regCenter = regCenter;
......@@ -40,13 +42,13 @@ public final class InstanceStateService {
* Persist sharding instance online.
*/
public void persistShardingInstanceOnline() {
regCenter.persistEphemeral(stateNode.getInstancesNodeFullPath(new OrchestrationInstance().getInstanceId()), "");
regCenter.persistEphemeral(stateNode.getInstancesNodeFullPath(instance.getInstanceId()), "");
}
/**
* Persist master-salve instance online.
*/
public void persistMasterSlaveInstanceOnline() {
regCenter.persistEphemeral(stateNode.getInstancesNodeFullPath(new OrchestrationInstance().getInstanceId()), "");
regCenter.persistEphemeral(stateNode.getInstancesNodeFullPath(instance.getInstanceId()), "");
}
}
......@@ -18,32 +18,32 @@
package io.shardingjdbc.orchestration.internal.state.instance;
import io.shardingjdbc.orchestration.internal.util.IpUtils;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.lang.management.ManagementFactory;
import java.util.UUID;
/**
* Orchestration instance.
*
* @author zhangliang
*/
@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public final class OrchestrationInstance {
private static final String DELIMITER = "@-@";
private static final String PID_FLAG = "@";
private static final OrchestrationInstance INSTANCE = new OrchestrationInstance();
/**
* Orchestration instance id.
*/
private final String instanceId;
private String instanceId;
private OrchestrationInstance() {
String splitFlag = "@";
instanceId = IpUtils.getIp() + splitFlag + ManagementFactory.getRuntimeMXBean().getName().split(splitFlag)[0] + splitFlag + UUID.randomUUID().toString();
}
public OrchestrationInstance() {
instanceId = IpUtils.getIp() + DELIMITER + ManagementFactory.getRuntimeMXBean().getName().split(PID_FLAG)[0];
public static OrchestrationInstance getInstance() {
return INSTANCE;
}
}
......@@ -19,15 +19,13 @@ package io.shardingjdbc.orchestration.internal;
import io.shardingjdbc.orchestration.internal.json.DataSourceJsonConverterTest;
import io.shardingjdbc.orchestration.internal.json.ShardingRuleConfigurationConverterTest;
import io.shardingjdbc.orchestration.internal.state.instance.OrchestrationInstanceTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
DataSourceJsonConverterTest.class,
ShardingRuleConfigurationConverterTest.class,
OrchestrationInstanceTest.class
ShardingRuleConfigurationConverterTest.class
})
public class AllInternalTests {
}
package io.shardingjdbc.orchestration.internal.state.instance;
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public final class OrchestrationInstanceTest {
@Test
public void assertGetInstanceId() {
assertThat(new OrchestrationInstance("127.0.0.1@-@0").getInstanceId(), is("127.0.0.1@-@0"));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册