Logo
YAML 配置

简介 #

YAML 提供通过配置文件的方式与 SphereEx-DBPlusEngine-Driver 交互。 配合治理模块一同使用时,持久化在配置中心的配置均为 YAML 格式。

说明: YAML 配置文件支持配置内容超过 3MB。

YAML 配置是最常见的配置方式,可以省略编程的复杂度,简化用户配置。

使用步骤 #

引入 Maven 依赖 #

<dependency>
    <groupId>com.sphere-ex</groupId>
    <artifactId>shardingsphere-jdbc</artifactId>
    <version>${shardingsphere.version}</version>
</dependency>

配置 YAML #

DBPlusEngine-Driver 的 YAML 配置文件支持配置多个逻辑库,每个逻辑库对应一个 YAML 配置文件。如果只有一个逻辑库,可以将包括全局配置和逻辑库的所有配置写在一个 YAML 配置文件中。

单个逻辑库配置 #

DBPlusEngine-Driver 的 YAML 配置文件通过 Schema 名称、运行模式、数据源集合、规则集合以及属性配置组成。

# JDBC 中的数据源的别名。在集群模式,使用该参数联通 DBPlusEngine-Driver 与 DBPlusEngine-Proxy 共同使用。
# 默认值:logic_db
databaseName (?):

mode:

dataSources:

rules:
- !FOO_XXX
    ...
- !BAR_XXX
    ...

props:
  key_1: value_1
  key_2: value_2

模式详情请参见模式配置

数据源详情请参见数据源配置

规则详情请参见规则配置

多个逻辑库配置 #

1.需要指定 global.yaml 用于配置全局属性,如下所示:

mode:
  ...

authority:
  ...

props:
  key_1: value_1
  key_2: value_2

2.配置 database-xxx.yaml 用于配置每个逻辑库的数据源和规则,如下所示:

databaseName:

dataSources:

rules:
  - !FOO_XXX
    ...
  - !BAR_XXX
    ...

3.在 DBPlusEngine-Driver 的 URL 串中指定配置路径和默认逻辑库名称,如下所示:

url: jdbc:shardingsphere:absolutepath:/Users/configDirName?databaseName=sharding_db

构建数据源 #

通过 YamlShardingSphereDataSourceFactory 工厂创建的 ShardingSphereDataSource 实现自 JDBC 的标准接口 DataSource。


File yamlFile = // 指定 YAML 文件路径
DataSource dataSource = YamlShardingSphereDataSourceFactory.createDataSource(yamlFile);

使用数据源 #

使用方式同 Java API。

语法说明 #

!! 表示实例化该类

! 表示自定义别名

- 表示可以包含一个或多个

[] 表示数组,可以与减号相互替换使用

YAML 存储方式 #

绝对路径文件存储 YAML 配置 #

# 1.绝对路径方式读取单个逻辑库配置,需要指定具体的 yaml 配置文件的全路径。
jdbc:shardingsphere:absolutepath:/Users/sphere/config.yaml

# 2.绝对路径方式读取多个逻辑库配置,需要指定 yaml 配置文件所在的目录,目录下必须有 global.yaml 用于指定全局配置。databaseName 属性用于指定默认逻辑库。
jdbc:shardingsphere:absolutepath:/Users/sphere/configDirName?databaseName=sharding_db

类路径文件存储 YAML 配置 #

# 1.类路径方式读取单个逻辑库配置,需要指定具体的 yaml 配置文件所在的类路径。
jdbc:shardingsphere:classpath:config/shardingsphere/config.yml

# 2.类路径方式读取多个逻辑库配置,需要指定 yaml 配置文件所在目录的类路径,目录下必须有 global.yaml 用于指定全局配置。databaseName 属性用于指定默认逻辑库。
jdbc:shardingsphere:classpath:config/configDirName?databaseName=sharding_db

使用 Apollo 存储 YAML 配置 #

当您使用 Apollo 加载器时,需要添加对应的 apollo 的 pom 依赖,apollo 配置方式支持在 apollo 中使用 properties 和 YAML 两种配置格式,目前适配的版本为 1.9.0 , 如下:

<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-client</artifactId>
    <version>${apollo.version}</version>
</dependency>
  1. properties 方式配置示例如下:
# 1.apollo 使用 properties 格式配置单个逻辑库
jdbc:shardingsphere:apollo:test_namespace?configFileFormat=properties&configKey=database-sharding

# 2.apollo 使用 properties 格式配置多个逻辑库,需要通过 configKey 指定配置文件,其中 global 必须包含,用于配置全局属性。databaseName 属性用于指定默认逻辑库。
jdbc:shardingsphere:apollo:test_namespace?configFileFormat=properties&configKey=global,database-sharding,database-encrypt&databaseName=sharding_db
  1. yaml 方式配置示例如下:
# 1.apollo 使用 yaml 格式配置单个逻辑库
jdbc:shardingsphere:apollo:test_namespace?configFileFormat=yaml

# 2.apollo 使用 yaml 格式配置多个逻辑库,需要配置多个 yaml 的 namespaces,其中 global namespace 必须包含,用于配置全局属性。databaseName 属性用于指定默认逻辑库。
jdbc:shardingsphere:apollo:global,database-sharding,database-sharding2?databaseName=sharding_db