Sharding-Jdbc之水平分库和读写分离(二)( 二 )

insert新增、update修改、delete删除 , 走的是master库
[ main] ShardingSphere-SQL : Rule Type: master-slave[ main] ShardingSphere-SQL : SQL: delete from course where cid=1 ::: DataSources: master读写分离延迟问题读写分离架构中经常出现 , 那就是读延迟的问题如何解决?
刚插入一条数据 , 然后马上就要去读取 , 这个时候有可能会读取不到?
归根到底是因为主节点写入完之后数据是要复制给从节点的 , 读不到的原因是复制的时间比较长 , 也就是说数据还没复制到从节点 , 你就已经去从节点读取了 , 肯定读不到 。
mysql5.7 的主从复制是多线程了 , 意味着速度会变快 , 但是不一定能保证百分百马上读取到 , 这个问题我们可以有两种方式解决:
(1)业务层面妥协 , 是否操作完之后马上要进行读取
(2)对于操作完马上要读出来的 , 且业务上不能妥协的 , 我们可以对于这类的读取直接走主库 , 当然Sharding-JDBC也是考虑到这个问题的存在 , 所以给我们提供了一个功能 , 可以让用户在使用的时候指定要不要走主库进行读取 。 在读取前使用下面的方式进行设置就可以了:
public List getCourse() {// 强制路由主库HintManager.getInstance().setMasterRouteOnly();return this.list();}核心的代码就是
HintManager.getInstance().setMasterRouteOnly();总结今天老顾介绍了分库策略 , 以及读写分离、和主从延迟的问题 。 希望能够帮助小伙伴;谢谢!!!
---End---
老顾的微服务网关分享课程 , 请大家多多支持
推荐阅读
Sharding-jdbc的实战入门之水平分表(一)
a、dubbo如何处理业务异常 , 这个一定要知道哦!
b、企业级SpringBoot应用多个子项目配置文件规划、多环境支持(一)
c、企业级SpringBoot应用多个子项目配置文件规划、多环境支持(二)
d、企业级SpringBoot应用多个子项目配置文件之配置中心(三)
e、利用阿里开源工具进行排查线上CPU居高问题
f、阿里二面:如何快速排查死锁?如何避免死锁?
g、微服务分布式架构中 , 如何实现日志链路跟踪?
h、网关如何聚合各个微服务的接口文档?
i、Kubernetes之POD、容器之间的网络通信
j、K8S中的Service的存在理由
k、企业微服务项目如何进入K8S的全过程
l、阿里开源项目Sentinel限流、降级的统一处理
m、大厂二面:Redis的分布式布隆过滤器是什么原理?
1、基于RocketMq的SpringCloud Stream框架实战入门
2、如何搭建消息中间件应用框架之SpringCloud Stream
3、面试必备:网关异常了怎么办?如何做全局异常处理?
4、Gateway网关系列(二):SpringCloud Gateway入门实战 , 路由规则
5、Gateway网关系列开篇:SpringCloud的官方网关Gateway介绍
6、API网关在微服务架构中的应用 , 这一篇就够了
7、学习Lambda表达式看这篇就够了 , 不会让你失望的哦(续篇)
8、Lambda用在哪里?几种场景?
9、为什么会出现Lambda表达式 , 你知道吗?
10、不说“分布式事务”理论 , 直接上大厂阿里的解决方案 , 绝对实用
11、女程序员问到这个问题 , 让我思考了半天 , Mysql的“三高”架构
12、大厂二面:CAP原则为什么只能满足其中两项?而不能同时满足
13、阿里P7二面:聊聊零拷贝的原理
14、秒杀系统的核心点都在这里 , 快来取
15、你了解如何利用token方式实现分布式Session吗?
16、Mysql索引结构演变 , 为什么最终会是那个结构呢?让你一看就懂
17、一场比赛涉及到的知识 , 用通俗易通的方式介绍并发协调
18、企业实战Redis全方面思考 , 你思考了吗?


推荐阅读