Unverified Commit 46e8d31b authored by 张亮's avatar 张亮 Committed by GitHub
Browse files

Merge pull request #948 from tristaZero/dev

Use yaml instead of json for registry center & Support registry center for Proxy.
parents 99ae9700 97048bfb
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import io.shardingsphere.core.api.algorithm.masterslave.MasterSlaveLoadBalanceAl
import io.shardingsphere.core.api.config.MasterSlaveRuleConfiguration;
import io.shardingsphere.core.exception.ShardingConfigurationException;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.ArrayList;
@@ -34,7 +35,9 @@ import java.util.concurrent.ConcurrentHashMap;
 * Master-slave rule configuration for yaml.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlMasterSlaveRuleConfiguration {
@@ -51,6 +54,15 @@ public class YamlMasterSlaveRuleConfiguration {
    
    private Map<String, Object> configMap = new ConcurrentHashMap<>();
    
    public YamlMasterSlaveRuleConfiguration(final MasterSlaveRuleConfiguration masterSlaveRuleConfiguration, final Map<String, Object> configMap) {
        name = masterSlaveRuleConfiguration.getName();
        masterDataSourceName = masterSlaveRuleConfiguration.getMasterDataSourceName();
        slaveDataSourceNames = masterSlaveRuleConfiguration.getSlaveDataSourceNames();
        loadBalanceAlgorithmClassName = null == masterSlaveRuleConfiguration.getLoadBalanceAlgorithm()
                ? null : masterSlaveRuleConfiguration.getLoadBalanceAlgorithm().getClass().getName();
        this.configMap = configMap;
    }
    
    /**
     * Get master-slave rule configuration from yaml.
     *
+23 −0
Original line number Diff line number Diff line
@@ -19,13 +19,16 @@ package io.shardingsphere.core.yaml.sharding;

import io.shardingsphere.core.api.config.MasterSlaveRuleConfiguration;
import io.shardingsphere.core.api.config.ShardingRuleConfiguration;
import io.shardingsphere.core.api.config.TableRuleConfiguration;
import io.shardingsphere.core.keygen.KeyGeneratorFactory;
import io.shardingsphere.core.yaml.masterslave.YamlMasterSlaveRuleConfiguration;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
@@ -37,7 +40,9 @@ import java.util.Properties;
 * Sharding rule configuration for yaml.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlShardingRuleConfiguration {
@@ -60,6 +65,24 @@ public class YamlShardingRuleConfiguration {
    
    private Properties props = new Properties();
    
    public YamlShardingRuleConfiguration(final ShardingRuleConfiguration shardingRuleConfiguration,
                                         final Map<String, Object> configMap, final Properties props) {
        defaultDataSourceName = shardingRuleConfiguration.getDefaultDataSourceName();
        for (TableRuleConfiguration each : shardingRuleConfiguration.getTableRuleConfigs()) {
            tables.put(each.getLogicTable(), new YamlTableRuleConfiguration(each));
        }
        bindingTables.addAll(shardingRuleConfiguration.getBindingTableGroups());
        defaultDatabaseStrategy = new YamlShardingStrategyConfiguration(shardingRuleConfiguration.getDefaultDatabaseShardingStrategyConfig());
        defaultTableStrategy = new YamlShardingStrategyConfiguration(shardingRuleConfiguration.getDefaultTableShardingStrategyConfig());
        defaultKeyGeneratorClassName = null == shardingRuleConfiguration.getDefaultKeyGenerator()
                ? null : shardingRuleConfiguration.getDefaultKeyGenerator().getClass().getName();
        for (MasterSlaveRuleConfiguration each : shardingRuleConfiguration.getMasterSlaveRuleConfigs()) {
            masterSlaveRules.put(each.getName(), new YamlMasterSlaveRuleConfiguration(each, new HashMap<String, Object>()));
        }
        this.configMap = configMap;
        this.props = props;
    }
    
    /**
     * Get sharding rule configuration.
     *
+30 −0
Original line number Diff line number Diff line
@@ -35,13 +35,16 @@ import io.shardingsphere.core.yaml.sharding.strategy.YamlInlineShardingStrategyC
import io.shardingsphere.core.yaml.sharding.strategy.YamlNoneShardingStrategyConfiguration;
import io.shardingsphere.core.yaml.sharding.strategy.YamlStandardShardingStrategyConfiguration;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * Configuration for yaml sharding strategy.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlShardingStrategyConfiguration {
@@ -56,6 +59,33 @@ public class YamlShardingStrategyConfiguration {
    
    private YamlNoneShardingStrategyConfiguration none;
    
    public YamlShardingStrategyConfiguration(final ShardingStrategyConfiguration shardingStrategyConfiguration) {
        if (shardingStrategyConfiguration instanceof StandardShardingStrategyConfiguration) {
            standard = new YamlStandardShardingStrategyConfiguration();
            StandardShardingStrategyConfiguration config = (StandardShardingStrategyConfiguration) shardingStrategyConfiguration;
            standard.setShardingColumn(config.getShardingColumn());
            standard.setPreciseAlgorithmClassName(config.getPreciseShardingAlgorithm().getClass().getName());
            standard.setRangeAlgorithmClassName(null == config.getRangeShardingAlgorithm()
                    ? null : config.getRangeShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof ComplexShardingStrategyConfiguration) {
            complex = new YamlComplexShardingStrategyConfiguration();
            ComplexShardingStrategyConfiguration config = (ComplexShardingStrategyConfiguration) shardingStrategyConfiguration;
            complex.setShardingColumns(config.getShardingColumns());
            complex.setAlgorithmClassName(config.getShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof HintShardingStrategyConfiguration) {
            hint = new YamlHintShardingStrategyConfiguration();
            hint.setAlgorithmClassName(((HintShardingStrategyConfiguration) shardingStrategyConfiguration).getShardingAlgorithm().getClass().getName());
        }
        if (shardingStrategyConfiguration instanceof InlineShardingStrategyConfiguration) {
            inline = new YamlInlineShardingStrategyConfiguration();
            InlineShardingStrategyConfiguration config = (InlineShardingStrategyConfiguration) shardingStrategyConfiguration;
            inline.setShardingColumn(config.getShardingColumn());
            inline.setAlgorithmExpression(config.getAlgorithmExpression());
        }
    }
    
    /**
     * Build sharding strategy configuration.
     * 
+14 −0
Original line number Diff line number Diff line
@@ -22,13 +22,16 @@ import com.google.common.base.Strings;
import io.shardingsphere.core.api.config.TableRuleConfiguration;
import io.shardingsphere.core.keygen.KeyGeneratorFactory;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * Yaml table rule configuration.
 *
 * @author caohao
 * @author panjuan
 */
@NoArgsConstructor
@Getter
@Setter
public class YamlTableRuleConfiguration {
@@ -47,6 +50,17 @@ public class YamlTableRuleConfiguration {
    
    private String logicIndex;
    
    public YamlTableRuleConfiguration(final TableRuleConfiguration tableRuleConfiguration) {
        logicTable = tableRuleConfiguration.getLogicTable();
        actualDataNodes = tableRuleConfiguration.getActualDataNodes();
        databaseStrategy = new YamlShardingStrategyConfiguration(tableRuleConfiguration.getDatabaseShardingStrategyConfig());
        tableStrategy = new YamlShardingStrategyConfiguration(tableRuleConfiguration.getTableShardingStrategyConfig());
        keyGeneratorColumnName = tableRuleConfiguration.getKeyGeneratorColumnName();
        keyGeneratorClassName = null == tableRuleConfiguration.getKeyGenerator()
                ? null : tableRuleConfiguration.getKeyGenerator().getClass().getName();
        logicTable = tableRuleConfiguration.getLogicTable();
    }
    
    /**
     * Build table rule configuration.
     *
+5 −1
Original line number Diff line number Diff line
@@ -21,7 +21,11 @@
            <artifactId>sharding-jdbc</artifactId>
            <version>${sharding-sphere.version}</version>
        </dependency>
        
        <dependency>
            <groupId>io.shardingsphere</groupId>
            <artifactId>sharding-core</artifactId>
            <version>${sharding-sphere.version}</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
Loading