更新时间:2024-10-23 GMT+08:00
分享

Spring项目接入MAS-DB-SDK

  1. 引入MAS-DB-SDK组件坐标,下面version版本为最新版本,依赖组件版本参考如何选择组件版本

    <dependency>
    	<groupId>com.huaweicloud.devspore</groupId>
    	<artifactId>devspore-datasource</artifactId>
    	<version>1.2.1-RELEASE</version>
    </dependency>

  2. 根据本项目配置项选其中一个数据连接池坐标。

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>4.0.3</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.8.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.2.6</version>
    </dependency>

  3. 增加一个配置yml或properties配置文件,引入MAS-DB-SDK配置项。

    • 下文中配置项的格式为yaml文件,如果配置文件为properties格式,需自行修改格式。
    • MAS-DB-SDK配置项分为4部分:props配置、etcd配置、sources数据源配置、router路由配置。
    • 如果使用MAS服务,props配置、etcd配置则必须要配置,sources数据源配置需要与MAS服务中连接池中的命名一致。如果不对接MAS服务,props配置、etcd配置无需配置,sources数据源配置本地所用数据库即可。
    • 下列场景中的配置都包含了props、etcd的配置,配置项的具体值含义参考配置项详细信息列表
    • MAS-DB-SDK配置示例,这里的配置只作为一个格式的展示,具体场景的具体配置参考章节配置说明
      props:
        version: v1
        appId: xxx  
        monitorId: xxx  
        databaseName: xxx 
        decipherClassName: xxx.xxx.xxx
      
      etcd:
        address: 127.0.0.2:2379,127.0.0.2:2379,127.0.0.2:2379
        apiVersion: v3  
        username: etcduser 
        password: etcdpwd 
        httpsEnable: false  
      
      sources:
        ds1:
          driverClassName: com.mysql.jdbc.Driver
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0  
          username: datasourceuser  
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource  
          props: 
            connection-timeout: 1000
            validation-timeout: 1000
        ds1-slave0:
          driverClassName: com.mysql.jdbc.Driver 
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave0
          username: datasourceuser
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource
        ds1-slave1:
          driverClassName: com.mysql.jdbc.Driver 
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds0_slave1
          username: datasourceuser
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource
        ds2:
          driverClassName: com.mysql.jdbc.Driver
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1
          username: datasourceuser
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource
        ds2-slave0:
          driverClassName: com.mysql.jdbc.Driver
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave0
          username: datasourceuser
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource
        ds2-slave1:
          driverClassName: com.mysql.jdbc.Driver
          jdbcUrl: jdbc:mysql://127.0.0.1:3306/ds1_slave1
          username: datasourceuser
          password: datasourcepwd
          type: com.zaxxer.hikari.HikariDataSource
      	
      router:
        active: dc1  
        routeAlgorithm: single-read-write 
        nodes:
          dc1:  
            master: ds1 
            loadBalance: ROUND_ROBIN 
            slaves: 
              - ds1-slave0
              - ds1-slave1
          dc2:
            master: ds2
            loadBalance: round_robin
            slaves:
              - ds2-slave0
              - ds2-slave1

  4. 创建DataSource的Bean。

    @Bean
    public DataSource dataSource() {
    	DataSource clusterDataSource= YamlClusterDataSourceFactory.createDataSource("D:\Coral\Mas\TestService\src\main\resources\devspore-datasource.yml");
    	return clusterDataSource;
    }

  5. (可选)使用MAS-DB-SDK提供注解在类级别、方法级别指定数据源参考4

相关文档