文章目录
一、 读写分离
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 配置主从库数据源
2.2 配置主从节点读写分离
当然,这里也需要指定主键及生成算法
#主从配置、读写分离
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