Sharding-JDBC — 讀寫分離(spring boot)

咱們的項目,不少都涉及到了數據庫的操做。數據庫的穩定性顯得尤其重要。互聯網公司不少都採用「一主多從」的實現方案,我這裏也不例外。這樣能夠大大減小主庫的讀壓力,從而提升數據庫性能!mysql

同時,選擇一套靠譜的中間件來實現讀寫分離,也尤其重要。一般有幾個選擇:spring

  1. AOP切面實現數據源的切換。
  2. sharding-jdbc、tddl等jdbc加強版的數據庫中間件。
  3. mycat、atlas等代理層的數據庫中間件。

這裏,考慮到性能需求,我選擇了sharding-jdbc。sql

 

直接上實現!數據庫

依賴apache

下面兩個依賴,根據選擇的版本不一樣,選擇的依賴包不一樣:dom

  • Sharding-Sphere版:(3.0及以後的版本)
    <dependency>
        <groupId>io.shardingsphere</groupId>
        <artifactId>sharding-jdbc</artifactId>
        <version>${latest.release.version}</version>
    </dependency>
  • Sharding-JDBC版:(3.0以前的版本)
    <!-- 引入sharding-jdbc核心模塊 -->
    <dependency>
        <groupId>io.shardingjdbc</groupId>
        <artifactId>sharding-jdbc-core-spring-boot-starter</artifactId>
        <version>2.0.3</version>
    </dependency>

     

配置spring-boot

sharding:
  jdbc:
    datasource:
      names: ds_master,ds_slave_0,ds_slave_1
      ds_master:
        type: org.apache.commons.dbcp.BasicDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://10.112.1.1:3306/gome_axwl_fc?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
        username: test
        password: test
      ds_slave_0:
        type: org.apache.commons.dbcp.BasicDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://10.112.1.2:3306/gome_axwl_fc?useUnicode=true&characterEncoding=utf-8
        username: test
        password: test
      ds_slave_1:
        type: org.apache.commons.dbcp.BasicDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://10.112.1.3:3306/gome_axwl_fc?useUnicode=true&characterEncoding=utf-8
        username: test
        password: test

    config:
      masterslave:
        load-balance-algorithm-type: round_robin
        name:
          ds_ms
        master-data-source-name:
          ds_master
        slave-data-source-names:
          ds_slave_0,ds_slave_1

這裏配置了一個主庫(ds_master),兩個從庫(ds_slave_0、ds_slave_1)。
從庫的讀取規則爲round_robin(輪詢策略),除了輪詢策略,還有支持random(隨機策略)。性能

相關文章
相關標籤/搜索