首页 > 数据库 >Sharding-JDBC:实现数据库的读写分离?

Sharding-JDBC:实现数据库的读写分离?

时间:2023-05-05 19:01:06浏览次数:40  
标签:JDBC 数据源 读写 bean jdbc Sharding 从库 数据库

简介

轻量级Java框架,在Java的JDBC层提供额外服务,以jar包的形式提供服务(增强版数据库连接驱动)。

适用于基于JDBC的ORM框架、支持第三方数据库连接池、支持实现了JDBC规范的数据库。

 

读写分离:基于已配置好主从复制的多个数据库。

 

使用步骤

  在springboot项目中使用。

一、导入依赖

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.1</version>
</dependency>

二、配置信息application.yml

  配置运行bean定义覆盖,保证sharding-jdbc生成的datasource对象与其它框架不发生冲突。

  配置多个数据源,指定主库、从库,指定从库的负载策略。

spring:
  main:
   #允许bean定义覆盖,后生成的bean会覆盖之前生成的bean allow-bean-definition-overriding: true shardingsphere: datasource:
    # 配置数据源名称 names: master,slave # 数据源配置(主) master: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.169.12.134:3306/db_test?characterEncoding=utf-8 username: **** password: **** # 数据源配置(从) slave: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.11.123:3306/db_test?characterEncoding=utf-8 username: **** password: **** masterslave: # 从库负载均衡策略,轮询 load-balance-algorithm-type: round_robin # 数据源名称 name: dataSource # 指定主库数据源 master-data-source-name: master # 指定从库数据源,多个逗号分隔 slave-data-source-names: slave props: # 开启SQL显示,默认false sql: show: true

 

结果

  项目中增删改操作会操作指定的主库,查询操作会操作指定的从库。

 

标签:JDBC,数据源,读写,bean,jdbc,Sharding,从库,数据库
From: https://www.cnblogs.com/lurenjia-bky/p/17375108.html

相关文章

  • Python教程:pandas读写txt文件——DataFrame和Series
    大家用pandas一般都是读写csv文件或者tsv文件,读写txt文件时一般就withopen了,其实pandas数据类型操作起来更加方便,还是建议全用pandas这一套。读txt文件代码如下,主要是设置正则表达式的分隔符(sep参数),和列名取消(header参数),以及不需要列索引(index_col)。1df=pd.read_csv("workl......
  • springboot 整合jdbc
    在springboot底层无论关系型还是非关系型数据库都是用spring-data进行交互新建:通过springinitialer勾选重要依赖jdbcapi和mysqldriver:设置数据源配置:通过源码可以看到我们一个通过spring.datasource.xxx来设置我们的yaml配置文件 同时我们可以观察到默认数据源是: y......
  • 从源码深入理解读写锁(golang-RWMutex)
    环境:go1.19.8在读多写少的情况下,即使一段时间内没有写操作,大量并发的读访问也不得不在Mutex的保护下变成串行访问,这种情况下,使用Mutex,对性能影响比较大。所以就要区分读写操作。如果某个读操作的g持有了锁,其他读操作的g就不必等待了,可以并发的访问共享变量,这样就可以将串行的......
  • JDBC剩余部分
    ResultSet(结果集)底层返回ResultSet可以认为是返回一张表ResultSet相当于集合中的迭代器,刚开始光标指向数据之外,next方法光标往后移动一行(每次使用一次next光标往后移动一行),当光标的指向处没有数据时,next函数返回falsepackagecom.hsp.edu;importjava.io.FileInputStream;i......
  • jdbc事物|5-3
    数据库事务(Transaction)是由若干个SQL语句构成的一个操作序列,有点类似于Java的synchronized同步。数据库系统保证在一个事务中的所有SQL要么全部执行成功,要么全部不执行,即数据库事务具有ACID特性:Atomicity:原子性Consistency:一致性Isolation:隔离性Durability:持久性数据库事务可以并发......
  • jdbc更新|5-2
    数据库操作总结起来就四个字:增删改查,行话叫CRUD:Create,Retrieve,Update和Delete。查就是查询,我们已经讲过了,就是使用PreparedStatement进行各种SELECT,然后处理结果集。现在我们来看看如何使用JDBC进行增删改。插入插入操作是INSERT,即插入一条新记录。通过JDBC进行插入,本质上也是用Pre......
  • 终于有人把openGauss3.0.0分布式原理讲透了,openGauss X ShardingSphere分布式原理和部
    本文为原理精讲,部署文章链接如下https://www.cnblogs.com/opengauss/p/17364285.html一、opengauss的背景和行业现状2022年,七大openGauss商业版发布,是基于openGauss3.0推出商业发行版目前海量数据库Vastbase表现最佳,一直是TOP1作者认为之所以海量数据库Vastbase......
  • SQL后半部和JDBC
    SQL后半部 排序orderbyasc升序desc降序select*from表名orderby列名asc;select*from表名orderby列名asc,列名desc; 聚合count selectcount(*)from表名where列名>200;sum selectsum(列名)from表名;maxminavg平均值 分组gr......
  • 终于有人把openGauss3.0.0分布式原理讲透了,openGauss X ShardingSphere分布式原理和部
    本文为原理精讲,部署文章链接如下https://blog.51cto.com/u_13808894/6236819一、opengauss的背景和行业现状2022年,七大openGauss商业版发布,是基于openGauss3.0推出商业发行版目前海量数据库Vastbase表现最佳,一直是TOP1作者认为之所以海量数据库Vastbase目前无法被同......
  • 使用 Sharding Jdbc 实现读写分离
    上一篇博客介绍了MySQL的主从复制的搭建,为实现读写分离创造了条件。对于一个网站来说,80%来源于读操作,绝大多数情况下的网站宕机,都是由于过多的读操作导致的,因此在实际的生产环境中,经常会搭建一主多从的架构,主库只负责写操作,多个从库用来负责读操作,对于少量需要实时获取信息的读......