提交 cad130f8 编写于 作者: T terrymanu

refactor orchestration

上级 33a08cc1
...@@ -44,24 +44,24 @@ public class OrchestrationSpringMasterSlaveDataSource extends MasterSlaveDataSou ...@@ -44,24 +44,24 @@ public class OrchestrationSpringMasterSlaveDataSource extends MasterSlaveDataSou
private final InstanceStateService instanceStateService; private final InstanceStateService instanceStateService;
private final OrchestrationMasterSlaveConfiguration orchestrationMasterSlaveConfig; private final OrchestrationMasterSlaveConfiguration config;
@Setter @Setter
private ApplicationContext applicationContext; private ApplicationContext applicationContext;
public OrchestrationSpringMasterSlaveDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, final Map<String, DataSource> dataSourceMap, public OrchestrationSpringMasterSlaveDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter,
final MasterSlaveRuleConfiguration masterSlaveRuleConfig) throws SQLException { final Map<String, DataSource> dataSourceMap, final MasterSlaveRuleConfiguration config) throws SQLException {
super(masterSlaveRuleConfig.build(dataSourceMap)); super(config.build(dataSourceMap));
orchestrationMasterSlaveConfig = new OrchestrationMasterSlaveConfiguration(name, overwrite, registryCenter, dataSourceMap, masterSlaveRuleConfig); this.config = new OrchestrationMasterSlaveConfiguration(name, overwrite, registryCenter, dataSourceMap, config);
configurationService = new ConfigurationService(registryCenter, name); configurationService = new ConfigurationService(name, registryCenter);
instanceStateService = new InstanceStateService(registryCenter, name); instanceStateService = new InstanceStateService(name, registryCenter);
} }
/** /**
* initial orchestration spring master-slave data source. * initial orchestration spring master-slave data source.
*/ */
public void init() { public void init() {
configurationService.addMasterSlaveConfiguration(orchestrationMasterSlaveConfig, this); configurationService.addMasterSlaveConfiguration(config, this);
instanceStateService.addMasterSlaveState(this); instanceStateService.addMasterSlaveState(this);
} }
......
...@@ -48,7 +48,7 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im ...@@ -48,7 +48,7 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im
private final InstanceStateService instanceStateService; private final InstanceStateService instanceStateService;
private final OrchestrationShardingConfiguration orchestrationShardingConfig; private final OrchestrationShardingConfiguration config;
private final Properties props; private final Properties props;
...@@ -58,9 +58,9 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im ...@@ -58,9 +58,9 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im
public OrchestrationSpringShardingDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, final Map<String, DataSource> dataSourceMap, public OrchestrationSpringShardingDataSource(final String name, final boolean overwrite, final CoordinatorRegistryCenter registryCenter, final Map<String, DataSource> dataSourceMap,
final ShardingRuleConfiguration shardingRuleConfig, final Properties props) throws SQLException { final ShardingRuleConfiguration shardingRuleConfig, final Properties props) throws SQLException {
super(shardingRuleConfig.build(dataSourceMap), props); super(shardingRuleConfig.build(dataSourceMap), props);
configurationService = new ConfigurationService(registryCenter, name); configurationService = new ConfigurationService(name, registryCenter);
instanceStateService = new InstanceStateService(registryCenter, name); instanceStateService = new InstanceStateService(name, registryCenter);
orchestrationShardingConfig = new OrchestrationShardingConfiguration( config = new OrchestrationShardingConfiguration(
name, overwrite, registryCenter, getActualDataSourceMapAndReviseShardingRuleConfiguration(dataSourceMap, shardingRuleConfig), shardingRuleConfig); name, overwrite, registryCenter, getActualDataSourceMapAndReviseShardingRuleConfiguration(dataSourceMap, shardingRuleConfig), shardingRuleConfig);
this.props = props; this.props = props;
} }
...@@ -69,8 +69,8 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im ...@@ -69,8 +69,8 @@ public class OrchestrationSpringShardingDataSource extends ShardingDataSource im
* initial orchestration spring sharding data source. * initial orchestration spring sharding data source.
*/ */
public void init() { public void init() {
configurationService.persistShardingConfiguration(orchestrationShardingConfig, props); configurationService.persistShardingConfiguration(config, props);
configurationService.addShardingConfigurationChangeListener(orchestrationShardingConfig.getName(), orchestrationShardingConfig.getRegistryCenter(), this); configurationService.addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), this);
instanceStateService.addShardingState(this); instanceStateService.addShardingState(this);
} }
......
...@@ -42,6 +42,8 @@ public final class OrchestrationMasterSlaveDataSourceFactory { ...@@ -42,6 +42,8 @@ public final class OrchestrationMasterSlaveDataSourceFactory {
* @throws SQLException SQL exception * @throws SQLException SQL exception
*/ */
public static DataSource createDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException { public static DataSource createDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException {
return new OrchestrationMasterSlaveDataSource(config).getDataSource(); OrchestrationMasterSlaveDataSource orchestrationMasterSlaveDataSource = new OrchestrationMasterSlaveDataSource(config);
orchestrationMasterSlaveDataSource.init();
return orchestrationMasterSlaveDataSource.getDataSource();
} }
} }
...@@ -43,7 +43,7 @@ public final class OrchestrationShardingDataSourceFactory { ...@@ -43,7 +43,7 @@ public final class OrchestrationShardingDataSourceFactory {
* @throws SQLException SQL exception * @throws SQLException SQL exception
*/ */
public static DataSource createDataSource(final OrchestrationShardingConfiguration config) throws SQLException { public static DataSource createDataSource(final OrchestrationShardingConfiguration config) throws SQLException {
return new OrchestrationShardingDataSource(config).getDataSource(); return createDataSource(config, new Properties());
} }
/** /**
...@@ -55,6 +55,8 @@ public final class OrchestrationShardingDataSourceFactory { ...@@ -55,6 +55,8 @@ public final class OrchestrationShardingDataSourceFactory {
* @throws SQLException SQL exception * @throws SQLException SQL exception
*/ */
public static DataSource createDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException { public static DataSource createDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException {
return new OrchestrationShardingDataSource(config, props).getDataSource(); OrchestrationShardingDataSource orchestrationShardingDataSource = new OrchestrationShardingDataSource(config, props);
orchestrationShardingDataSource.init();
return orchestrationShardingDataSource.getDataSource();
} }
} }
...@@ -34,12 +34,27 @@ import java.sql.SQLException; ...@@ -34,12 +34,27 @@ import java.sql.SQLException;
@Getter @Getter
public class OrchestrationMasterSlaveDataSource { public class OrchestrationMasterSlaveDataSource {
private MasterSlaveDataSource dataSource; private final OrchestrationMasterSlaveConfiguration config;
private final MasterSlaveDataSource dataSource;
private final ConfigurationService configurationService;
private final InstanceStateService instanceStateService;
public OrchestrationMasterSlaveDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException { public OrchestrationMasterSlaveDataSource(final OrchestrationMasterSlaveConfiguration config) throws SQLException {
config.getRegistryCenter().init(); config.getRegistryCenter().init();
this.config = config;
dataSource = (MasterSlaveDataSource) MasterSlaveDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getMasterSlaveRuleConfiguration()); dataSource = (MasterSlaveDataSource) MasterSlaveDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getMasterSlaveRuleConfiguration());
new ConfigurationService(config.getRegistryCenter(), config.getName()).addMasterSlaveConfiguration(config, dataSource); configurationService = new ConfigurationService(config.getName(), config.getRegistryCenter());
new InstanceStateService(config.getRegistryCenter(), config.getName()).addMasterSlaveState(dataSource); instanceStateService = new InstanceStateService(config.getName(), config.getRegistryCenter());
}
/**
* Initial orchestration master-slave data source.
*/
public void init() {
configurationService.addMasterSlaveConfiguration(config, dataSource);
instanceStateService.addMasterSlaveState(dataSource);
} }
} }
...@@ -35,21 +35,35 @@ import java.util.Properties; ...@@ -35,21 +35,35 @@ import java.util.Properties;
@Getter @Getter
public class OrchestrationShardingDataSource { public class OrchestrationShardingDataSource {
private ShardingDataSource dataSource; private final OrchestrationShardingConfiguration config;
private final Properties props;
private final ShardingDataSource dataSource;
private final ConfigurationService configurationService;
private final InstanceStateService instanceStateService;
public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config) throws SQLException { public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config) throws SQLException {
config.getRegistryCenter().init(); this(config, new Properties());
new ConfigurationService(config.getRegistryCenter(), config.getName()).persistShardingConfiguration(config, new Properties());
dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig());
new ConfigurationService(config.getRegistryCenter(), config.getName()).addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource);
new InstanceStateService(config.getRegistryCenter(), config.getName()).addShardingState(dataSource);
} }
public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException { public OrchestrationShardingDataSource(final OrchestrationShardingConfiguration config, final Properties props) throws SQLException {
config.getRegistryCenter().init(); config.getRegistryCenter().init();
new ConfigurationService(config.getRegistryCenter(), config.getName()).persistShardingConfiguration(config, props); this.config = config;
dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig(), props); this.props = props;
new ConfigurationService(config.getRegistryCenter(), config.getName()).addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource); dataSource = (ShardingDataSource) ShardingDataSourceFactory.createDataSource(config.getDataSourceMap(), config.getShardingRuleConfig());
new InstanceStateService(config.getRegistryCenter(), config.getName()).addShardingState(dataSource); configurationService = new ConfigurationService(config.getName(), config.getRegistryCenter());
instanceStateService = new InstanceStateService(config.getName(), config.getRegistryCenter());
}
/**
* Initial orchestration master-slave data source.
*/
public void init() {
configurationService.persistShardingConfiguration(config, new Properties());
configurationService.addShardingConfigurationChangeListener(config.getName(), config.getRegistryCenter(), dataSource);
instanceStateService.addShardingState(dataSource);
} }
} }
...@@ -40,7 +40,7 @@ import java.util.Map; ...@@ -40,7 +40,7 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
/** /**
* Data configuration service. * configuration service.
* *
* @author caohao * @author caohao
*/ */
...@@ -48,8 +48,8 @@ public final class ConfigurationService { ...@@ -48,8 +48,8 @@ public final class ConfigurationService {
private final DataNodeStorage dataNodeStorage; private final DataNodeStorage dataNodeStorage;
public ConfigurationService(final CoordinatorRegistryCenter regCenter, final String name) { public ConfigurationService(final String name, final CoordinatorRegistryCenter regCenter) {
dataNodeStorage = new DataNodeStorage(regCenter, name); dataNodeStorage = new DataNodeStorage(name, regCenter);
} }
/** /**
......
...@@ -29,6 +29,7 @@ import io.shardingjdbc.orchestration.internal.json.GsonFactory; ...@@ -29,6 +29,7 @@ import io.shardingjdbc.orchestration.internal.json.GsonFactory;
import io.shardingjdbc.orchestration.internal.json.ShardingRuleConfigurationConverter; import io.shardingjdbc.orchestration.internal.json.ShardingRuleConfigurationConverter;
import io.shardingjdbc.orchestration.reg.base.CoordinatorRegistryCenter; import io.shardingjdbc.orchestration.reg.base.CoordinatorRegistryCenter;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.TreeCache; import org.apache.curator.framework.recipes.cache.TreeCache;
...@@ -44,6 +45,7 @@ import java.util.Properties; ...@@ -44,6 +45,7 @@ import java.util.Properties;
* *
* @author caohao * @author caohao
*/ */
@RequiredArgsConstructor
@Getter @Getter
public final class InstanceStateService { public final class InstanceStateService {
...@@ -51,11 +53,6 @@ public final class InstanceStateService { ...@@ -51,11 +53,6 @@ public final class InstanceStateService {
private final CoordinatorRegistryCenter registryCenter; private final CoordinatorRegistryCenter registryCenter;
public InstanceStateService(final CoordinatorRegistryCenter regCenter, final String name) {
this.registryCenter = regCenter;
this.name = name;
}
/** /**
* Add sharding state. * Add sharding state.
* *
......
...@@ -28,15 +28,15 @@ import org.apache.curator.framework.recipes.cache.TreeCacheListener; ...@@ -28,15 +28,15 @@ import org.apache.curator.framework.recipes.cache.TreeCacheListener;
*/ */
public final class DataNodeStorage { public final class DataNodeStorage {
private final CoordinatorRegistryCenter regCenter;
private final String name; private final String name;
private final CoordinatorRegistryCenter regCenter;
private final DataNodePath nodePath; private final DataNodePath nodePath;
public DataNodeStorage(final CoordinatorRegistryCenter regCenter, final String name) { public DataNodeStorage(final String name, final CoordinatorRegistryCenter regCenter) {
this.regCenter = regCenter;
this.name = name; this.name = name;
this.regCenter = regCenter;
nodePath = new DataNodePath(name); nodePath = new DataNodePath(name);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册