ShardingJDBC读写分离

ShardingJDBC是什么

看一看ChatGPT对他的解释:
ShardingJDBC是一个数据库连接池,它为数据库的分片和读/写拆分提供支持。它允许您跨多个物理数据库和服务器分发数据,并根据设置的配置将读写操作路由到适当的数据库。
以下是它的工作原理:
1、您可以使用数据库服务器列表配置数据库集群,并指定哪些服务器应用于读写操作。
2、将应用程序配置为使用ShardingJDBC作为连接池。
3、当应用程序需要执行数据库操作时,它会从ShardingJDBC请求连接。
ShardingJDBC根据您设置的配置将请求路由到适当的数据库服务器。如果请求是读取操作,则将其路由到指定用于读取操作的数据库服务器。如果请求是写操作,则将其路由到指定用于写操作的数据库服务器。
这有助于通过将负载分布到多个服务器并将读写操作路由到最合适的服务器来提高数据库集群的性能和可扩展性。

依赖

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

数据源配置

在application.properties文件中定义数据源

#配置多个数据源
spring.shardingsphere.datasource.names=m1,m2,m3
#数据源1
spring.shardingsphere.datasource.m1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m1.url=jdbc:mysql://115.29.197.4:3306/course1?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m1.username=root
spring.shardingsphere.datasource.m1.password=root
#数据源2
spring.shardingsphere.datasource.m2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m2.url=jdbc:mysql://115.29.197.5:3306/course2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m2.username=root
spring.shardingsphere.datasource.m2.password=root
#数据源3
spring.shardingsphere.datasource.m3.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.m3.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.m3.url=jdbc:mysql://115.29.197.6:3306/course2?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.m3.username=root
spring.shardingsphere.datasource.m3.password=root
# 指定主库和从库
# 采用静态读写分离规则
spring.shardingsphere.rules.readwrite-spliting.data-sources.readwrite-ds.type=Static
# 指定主库
spring.shardingsphere.rules.readwrite-spliting.data-sources.readwrite-ds.props.write-data-source-name=m1
# 指定从库,多个从库用逗号分割
spring.shardingsphere.rules.readwrite-spliting.data-sources.readwrite-ds.props.read-data-source-name=m2,m3
# 因为从服务器有两台,为了避免老是从一台从服务器薅羊毛,应该配置负载均衡策略
# 指定负载均衡名字
spring.shardingsphere.rules.readwrite-spliting.data-sources.readwrite-ds.load-balancer-name=lbs
# 配置负载lbs,下面是按权重负载,负载均衡策略还有RANDOM随机、ROUND_ROBIN轮询
spring.shardingsphere.rules.readwrite-spliting.load-balancers.lbs.type=WEIGHT
# m2数据库负载90%
spring.shardingsphere.rules.readwrite-spliting.load-balancers.lbs.props.m2=90# m3数据库负载10%
spring.shardingsphere.rules.readwrite-spliting.load-balancers.lbs.props.m3=10
# 路由过程打印到控制台方便调试spring.shardingsphere.props.sql-show=true

刚写的数据由于网络延迟导致读数据不一致

有时候可能会遇到执行完写操作后,立刻去读发现读不到或者读到旧状态的尴尬场景。这是由于主从同步可能存在延迟,在主节点执行完写操作,再去从节点执行读操作,读取了之前旧的状态。
解决方案:
1、强制走主库
如果你需要读取最新的数据,最好直接读主库的数据。使用下面两行代码会让sql直接走主库。
在这里插入图片描述
2、全同步复制(MGR)
也就是说主从同步的时候会阻塞你查询这个数据的操作,等同步完成之后才给你返回。
MGR要求:
1、引擎必须为 innodb,因为需事务支持在 commit 时对各节点进行冲突检查
2、每个表必须有主键,在进行事务冲突检测时需要利用主键值对比
3、必须开启 binlog 且为 row 格式
4、开启 GTID,且主从状态信息存于表中(–master-info-repository=TABLE 、–relay-log-info-repository=TABLE)–log-slave-updates 打开
5、一致性检测设置 --transaction-write-set-extraction=XXHASH64
MGR使用限制:
1、和普通复制 binlog 校验不能共存,需设置 --binlog-checksum=none
2、不支持 gap lock(间隙锁)隔离级别需设置为 read_committed
3、不支持对表进行锁操作(lock/unlock table)不会发送到其他节点执行,影响需要对表进行加锁操作的情况,列入 mysqldump 全表备份恢复操作
4、不支持 serializable(序列化)隔离级别
5、DDL 语句不支持原子性,不能检测冲突,执行后需自行校验是否一致
6、多主模式下不支持外键,单主模式不存在此问题
7、最多支持 9 个节点,超过 9 台 server 无法加入组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8727.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么总是闹离职的员工没走,平时不吭声的员工却突然离职?

上一篇&#xff1a;华为“天才少年”稚晖君被曝离职&#xff01;两年前加入年薪百万起步的天才少年计划&#xff01; 相信工作过几年的朋友都遇到过类似的现象&#xff1a;总是闹离职的员工没走&#xff0c;平时不吭声的员工却突然离职。 其实很正常&#xff0c;总是闹离职的说…

盘点海外 AIGC 独角兽创始人,中国何时迎来自己的高光时刻?

据不完全统计&#xff0c;全球 AIGC 创业公司中估值在 10 亿美元以上的已经多达 10 家。包括推出 ChatGPT 的 OpenAI&#xff0c;因《太空歌剧院》而走红的 Midjourney 等。这些独角兽背后的创业者都是谁&#xff1f;他们又是如何成为时代的开创者&#xff1f;本篇文章带你一看…

适合程序员使用的 ChatGPT!!!

ChatGPT 不仅能解决亲情&#xff0c;友情&#xff0c;爱情等非常热门的问题&#xff0c;还能帮助程序员在开发中反复测试自己的代码或者切磋技艺。 例如&#xff0c;作为程序员的我们&#xff0c;只要在ChatGPT上轻轻松松地输出我们的需求&#xff0c;“null pointer怎么解决啊…

1 分钟高效集成 ChatGPT,Stable Diffusion 等 AIGC 模型最强教程

1 分钟能做什么&#xff1f;集成 ChatGPT 到自己的公众号&#xff0c;小程序或者 APP&#xff1f;集成各种形式的 Stable Diffusion&#xff0c;让 AIGC 帮助自己的项目更有趣&#xff0c;更生动&#xff1f;本教程将会教大家如何 1 分钟高效集成 ChatGPT&#xff0c;Stable Di…

【起飞】让你电脑速度快到飞起的一些牛逼的设置整理【电脑卡顿反应慢等问题解决】

对于开发来说电脑的反应速度简直影响了思维的速度&#xff0c;要让电脑速度跟上我们的思维&#xff0c;提高工作效率&#xff0c;早点打卡下班回家陪老婆孩子哈哈 这篇文章主要对windows系统做的一些优化&#xff0c;是真的好用&#xff0c;仿佛在访问静态页面一样&#xff0c;…

【Redis】孔夫子旧书网爬虫接入芝麻代理IP:代理IP利用效率最大化

背景&#xff1a; 之前用过芝麻IP&#xff0c;写过这几篇文章 《【Python】芝麻HTTP代理系列保姆级全套攻略(对接教程自动领取每日IPIP最优算法)》 《【Python】记录抓包分析自动领取芝麻HTTP每日免费IP&#xff08;成品教程&#xff09;》 《爬虫增加代理池&#xff1a;使用稳…

高通410 随身WIFI刷入Debian系统(玩法合集)

引言 刚接触到这个项目是在b站上&#xff0c;刷到一位UP主的视频&#xff1a;https://b23.tv/xAFWiTF 其实现了在搭载高通410芯片的随身WIFI烧录linux系统&#xff0c;并在上面部署了chatGPT-Next网站服务。 本人参考的教程链接和其教程所有工具&#xff1a;https://pan.bai…

chatgpt赋能python:Python如何薅羊毛?

Python如何薅羊毛&#xff1f; 近年来&#xff0c;Python已经成为了越来越多程序员的首选编程语言。除了在技术领域得到广泛应用&#xff0c;Python还可以被用于一些非正当途径&#xff0c;比如薅羊毛。在这篇文章中&#xff0c;我们将会学习如何利用Python来薅羊毛。 什么是…

【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆

文章目录 前言一、ChatGPT是什么&#xff1f;二、那么&#xff0c;如何计算下一个单词的概率&#xff1f;三&#xff0c; 什么是模型&#xff1f;四&#xff0c;如何制作能完成人类任务的模型五&#xff0c;神经网络总结 前言 ChatGPT 能够自动生成类似于人类写作的文本&#…

多平台发布文章怎么做?自媒体多平台发内容教程分享

目前很多小伙伴着手做自媒体全部都是在一些自媒体视频或是时尚博主的推荐下才了解到做自媒体可以为自己创造收入&#xff0c;刚开始做得时候或许只是会弄两三个账户&#xff0c;察觉收入也并不高&#xff0c;便不愿意去做相应的事情了&#xff0c;确实目前做自媒体的人太多了&a…

自媒体文章同步该怎么做?有什么办法可以一键同步到多自媒体平台

在自媒体行业当中&#xff0c;有很多人的苦恼就是应该如何将自己的创作内容同时发布在各大媒体上&#xff0c;应该进行什么样的步骤才能够进行同步。那我们需要在各大平台进行授权&#xff0c;才能够进行同时发布&#xff0c;不仅非常的繁琐&#xff0c;而且在管理账户方面更容…

自媒体一篇文章能多平台发布吗?

如今是全民自媒体时代&#xff0c;只要热爱创作&#xff0c;并且懂得网络知识的人们&#xff0c;就可以成为自媒体人&#xff0c;自媒体这个行业存在竞争&#xff0c;能否在竞争中脱引而出&#xff0c;能否利用自媒体平台赚钱&#xff0c;与个人眼光、写作水平以及所用工具存在…

头条发布文章如何一篇文章发布道30+自媒体平台?

很多从事自媒体工作的朋友都会借助工具来帮助自己工作&#xff0c;这种工具能批量发布30多个平台的工具&#xff0c;很多人都应该听说过头条号&#xff0c;也是一个著名的自媒体平台。许多作者已经在使用了&#xff0c;收入相当可观。许多自媒体工作室经营多个账号&#xff0c;…

自媒体平台批量文章采集

多个平台自媒体文章采集&#xff0c;今日头条、微信公众号、知乎、豆瓣、小红书这些自媒体平台明天都会产出海量的优质文章&#xff0c;通过对这些平台相关文章进行采集&#xff0c;能获取大量的热门素材&#xff0c;不管是自己创作还是内容分析&#xff0c;都十分便利。 多个平…

自媒体同篇文章多平台发布,自媒体人提高效率利器

写完文章发布后&#xff0c;也需要同步到其他平台。在这种重复发布的一个工作操作当中&#xff0c;我们可以同时发布到各个平台&#xff0c;这样会减少我们的宝贵创作时间。如果在没有一件同时发布之前&#xff0c;我们做自媒体行业是比较困难的。其中。也有这么一款软件&#…

自媒体原创文章多平台发布操作方法教程!

我相信很多自媒体朋友可能会有问题&#xff0c;因为他们已经注册了多个多媒体平台。在我们写完一篇文章后&#xff0c;我们需要将其逐一复制粘贴到每个平台的编辑器中。这么多的帐户没有多个平台的一键发布工具的帮助&#xff0c;我们每天都会登录该帐户。现在&#xff0c;让我…

自媒体人如何打造出爆文?这3种类型的文章最容易爆

爆文是一直是自媒体人的终极目标&#xff0c;要想打造出爆文却不是那么容易的事&#xff0c;借助热点无疑是热点爆文的一种速成法&#xff0c;今天就给大家分享几个自媒体爆文写作的技巧&#xff01; 01 综合热点文 第一种就是综合热点文——热点话题有可预测性&#xff0c;也…

自媒体平台图文创作建议和技巧

自媒体博主在自媒体平台进行图文创作时&#xff0c;需要注意哪些方面才能创造出更好的内容获得更多的关注呢&#xff1f;今天跟大家分享自媒体创作中的一些图文创作建议和技巧。 一、确定目标受众 首先需要明确自己要传达的信息和目标受众。要考虑读者的兴趣、需求和阅读习惯&…

竟能秒出软文?突袭全球的ChatGPT会给媒体行业带来怎样的震荡?

从国外传出ChatGPT的消息以来&#xff0c;#可能被ChatGPT取代的10大职业#&#xff0c;#ChatGPT真能替代人吗#&#xff0c;#国内距离首个ChatGPT还有多远#等诸多话题热度极高。 一个人工智能工具罢了&#xff0c;为何引发众人关注? 1 功能强大 ChatGPT上知天文下知地理&#x…

小爱音箱接入chatgpt

文章目录 前言一、安装Homeassistant二、安装hacs三、集成XiaoMi Miot Auto、Node-RED Companion四、安装Node-Red五、导入json文件及配置节点六、查看小爱音箱输入输出的实体ID七、部署测试 前言 本次实现是通过搭建部署 homeassistant nodered mqtt 实现小爱音箱接入chatg…