Sharding-JDBC实现读写分离

文章目录

  • 一、 读写分离
    • 1.1 读写分离核心概念
      • 1.1.1 主库
      • 1.1.2 从库
      • 1.1.3 主从同步
      • 1.1.4 负载均衡策略
      • 1.1.5 Config Map
    • 1.2 核心功能
    • 1.3 不支持范围
  • 二、 读写分离实践
    • 2.1 配置主从库数据源
    • 2.2 配置主从节点读写分离

一、 读写分离

Sharding-JDBC实现读写分离_第1张图片

1.1 读写分离核心概念

1.1.1 主库

添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。

1.1.2 从库

查询数据操作所使用的数据库,可支持多从库。

1.1.3 主从同步

将主库的数据异步的同步到从库的操作。由于主从同步的异步性,从库与主库的数据会短时间内不一致。

1.1.4 负载均衡策略

通过负载均衡策略将查询请求疏导至不同从库。

1.1.5 Config Map

配置读写分离数据源的元数据,可通过调用ConfigMapContext.getInstance()获取ConfigMap中的masterSlaveConfig数据。例:如果机器权重不同则流量可能不同,可通过ConfigMap配置机器权重元数据。

1.2 核心功能

提供了一主多从的读写分离配置,可独立使用,也可配合分库分表使用
同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
Spring命名空间
基于Hint的强制主库路由。

1.3 不支持范围

主库和从库的数据同步。
主库和从库的数据同步延迟导致的数据不一致。
主库双写或多写。

二、 读写分离实践

前提,在数据库层面配置好主从库

2.1 配置主从库数据源

Sharding-JDBC实现读写分离_第2张图片

2.2 配置主从节点读写分离

当然,这里也需要指定主键及生成算法
Sharding-JDBC实现读写分离_第3张图片

#主从配置、读写分离
spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name=m
spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names=s

spring.shardingsphere.sharding.tables.student.actual-data-nodes=ds0.student
spring.shardingsphere.sharding.tables.student.key-generator.column=sid
spring.shardingsphere.sharding.tables.student.key-generator.type=SNOWFLAKE


这次的内容到这里就结束了,作者水平有限,文章不足之处敬请指出

Best Regards

你可能感兴趣的:(后端,数据库,java,后端,springboot)