美文网首页
Sharding-Jdbc 读写分离(Spring Boot)

Sharding-Jdbc 读写分离(Spring Boot)

作者: 黄靠谱 | 来源:发表于2019-01-25 19:02 被阅读22次

参考

中文官网
http://shardingsphere.io/document/current/cn/manual/sharding-jdbc/configuration/config-spring-namespace/

配置参考官网:
http://shardingsphere.io/document/current/cn/manual/sharding-jdbc/configuration/config-spring-boot/

demo

https://github.com/huangzhenshi/shardingjdbc_springboot

读写分离

核心功能

  • 提供一主多从的读写分离配置,可独立使用,也可配合分库分表使用。目前仅支持单主库。
  • 独立使用读写分离支持SQL透传。
  • 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
  • 普通的查询数据操作所使用的数据库,可支持多从库。访问策略:strategy-type:ROUND_ROBIN,RANDOM 和自定义
  • 基于Hint的强制主库路由,可手动强制部分读请求到主库上。(因为主从同步有延迟,对实时性要求高的系统,可以将部分读请求也走主库)

配置:(SpringBoot + 读写分离)

  1. 数据库准备:
  • 主从数据库首先要配置好主从配置,并且创建好对应的表和数据
  • 同时主、从库要对应用程序进行授权,否则没有权限访问
  1. 配置一主多从数据源:master、slave0、slave1
  2. 配置从库的访问策略:随机、轮询(默认)、自定义 :randomStrategy
  3. 整合多个数据源:masterslave
sharding.jdbc.datasource.names=master,slave0,slave1

sharding.jdbc.datasource.master.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.master.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.master.url=jdbc:mysql://localhost:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.master.username=root
sharding.jdbc.datasource.master.password=123456

sharding.jdbc.datasource.slave0.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave0.url=jdbc:mysql://192.168.29.129:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.slave0.username=huangzs
sharding.jdbc.datasource.slave0.password=123456

sharding.jdbc.datasource.slave1.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave1.url=jdbc:mysql://192.168.29.130:3306/testsync?characterEncoding=utf-8
sharding.jdbc.datasource.slave1.username=huangzs
sharding.jdbc.datasource.slave1.password=123456

sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
sharding.jdbc.config.masterslave.name=dataSource
sharding.jdbc.config.masterslave.master-data-source-name=master
sharding.jdbc.config.masterslave.slave-data-source-names=slave0,slave1

sharding.jdbc.config.props.sql.show=true
  1. jar包依赖:springBoot版本
        <dependency>
            <groupId>io.shardingjdbc</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>2.0.0.M3</version>
        </dependency>

API

  1. 强制走主库查询
HintManager.getInstance().setMasterRouteOnly();

相关文章

网友评论

      本文标题:Sharding-Jdbc 读写分离(Spring Boot)

      本文链接:https://www.haomeiwen.com/subject/rcyvjqtx.html