使用Sharding-JDBC配置读写分离,优点在于数据源完全有Sharding托管,写操作自动执行master库,读操作自动执行slave库。不需要程序员在程序中关注这个实现了。
版本控制
可以看到启动了两个数据源,说明配置成功:
执行SQL时,会打印一下日志:
可以看到新增走的是主库,查询走的是从库
读写分离架构中经常出现,那就是读延迟的问题如何解决?
刚插入一条数据,然后马上就要去读取,这个时候有可能会读取不到?归根到底是因为主节点写入完之后数据是要复制给从节点的,读不到的原因是复制的时间比较长,也就是说数据还没复制到从节点,你就已经去从节点读取了,肯定读不到。mysql5.7 的主从复制是多线程了,意味着速度会变快,但是不一定能保证百分百马上读取到,这个问题我们可以有两种方式解决:
参考资料:
https://www.yepk.cn/archives/springboot-sharding-jdbc-io.html
官网:http://shardingsphere.apache.org/index_zh.html
开发配置文档:https://yepk.lanzous.com/iC7twishqji