使用治理功能需要指定配置中心和注册中心。配置将全部存入配置中心,可以在每次启动时使用本地配置覆盖配置中心配置,也可以只通过配置中心读取配置。
<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-orchestration</artifactId> <version>${sharding-sphere.version}</version> </dependency> <!--若使用zookeeper, 请加入下面Maven坐标--> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-orchestration-reg-zookeeper-curator</artifactId> <version>${sharding-sphere.version}</version> </dependency>
// 省略配置dataSourceMap以及shardingRuleConfig // ... // 配置注册中心 Properties properties = new Properties(); properties.setProperty("overwrite", overwrite); CenterConfiguration centerConfiguration = new CenterConfiguration("zookeeper", properties); centerConfiguration.setServerLists("localhost:2181"); centerConfiguration.setNamespace("sharding-sphere-orchestration"); centerConfiguration.setOrchestrationType("registry_center,config_center"); // 配置治理 Map<String, CenterConfiguration> instanceConfigurationMap = new HashMap<String, CenterConfiguration>(); instanceConfigurationMap.put("orchestration-sharding-data-source", centerConfiguration); // 获取数据源对象 OrchestrationShardingDataSourceFactory.createDataSource( createDataSourceMap(), createShardingRuleConfig(), new HashMap<String, Object>(), new Properties(), new OrchestrationConfiguration(instanceConfigurationMap));
或通过Yaml方式配置,与以上配置等价:
orchestration: orchestration_ds: orchestrationType: registry_center,config_center instanceType: zookeeper serverLists: localhost:2181 namespace: orchestration props: overwrite: true
DataSource dataSource = YamlOrchestrationShardingDataSourceFactory.createDataSource(yamlFile);
<!-- for spring boot --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-orchestration-spring-boot-starter</artifactId> <version>${sharding-sphere.version}</version> </dependency> <!--若使用zookeeper, 请加入下面Maven坐标--> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-orchestration-reg-zookeeper-curator</artifactId> <version>${sharding-sphere.version}</version> </dependency>
<!-- for spring namespace --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-orchestration-spring-namespace</artifactId> <version>${sharding-sphere.version}</version> </dependency> <!--若使用zookeeper, 请加入下面Maven坐标--> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-orchestration-reg-zookeeper-curator</artifactId> <version>${sharding-sphere.version}</version> </dependency>
spring.shardingsphere.orchestration.spring_boot_ds_sharding.orchestration-type=registry_center,config_center spring.shardingsphere.orchestration.spring_boot_ds_sharding.instance-type=zookeeper spring.shardingsphere.orchestration.spring_boot_ds_sharding.server-lists=localhost:2181 spring.shardingsphere.orchestration.spring_boot_ds_sharding.namespace=orchestration-spring-boot-sharding-test spring.shardingsphere.orchestration.spring_boot_ds_sharding.props.overwrite=true
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:orchestraion="http://shardingsphere.apache.org/schema/shardingsphere/orchestration" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://shardingsphere.apache.org/schema/shardingsphere/orchestration http://shardingsphere.apache.org/schema/shardingsphere/orchestration/orchestration.xsd"> <import resource="namespace/shardingDataSourceNamespace.xml" /> <util:properties id="instance-props"> <prop key="max-retries">3</prop> <prop key="operation-timeout-milliseconds">3000</prop> </util:properties> <orchestraion:instance id="regCenter" orchestration-type="registry_center,config_center" instance-type="zookeeper" server-lists="localhost:2181" namespace="orchestration-spring-namespace-demo" props-ref="instance-props" /> <orchestraion:sharding-data-source id="shardingDatabasesTablesDataSource" data-source-ref="realShardingDatabasesTablesDataSource" instance-ref="regCenter" overwrite="true" /> <orchestraion:master-slave-data-source id="masterSlaveDataSource" data-source-ref="realMasterSlaveDataSource" instance-ref="regCenter" overwrite="true" /> <orchestraion:encrypt-data-source id="encryptDataSource" data-source-ref="realEncryptDataSource" instance-ref="regCenter" overwrite="true" /> </beans>
更多的详细配置请参考配置手册。