大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说面试连环炮系列(二十八):数据库读写分离的目的是什么?「终于解决」,希望您对编程的造诣更进一步.
1. 数据库读写分离的目的是什么?
通常业务系统是读多写少,读写分离是将对数据库的读写操作分散到不同的节点上,能够小幅提升写性能,大幅提升读性能。通常采用数据库一主多从的方式,主库可以读写,从库只读。
2. 读写分离会带来什么问题?如何解决?
主库和从库的数据存在延迟。比如写完主库之后,主库的数据同步到从库是需要时间的,这个时间差就导致了主库和从库的数据不一致性问题。解决办法是在不能忍受延迟的场景强制读主库。
3. MySQL主从复制的原理清楚吗?
- 主库将数据库中数据的变化写入到 binlog
从库连接主库。 - 从库会创建一个I/O线程向主库请求更新的 binlog。
- 主库会创建一个 binlog dump 线程来发送 binlog ,从库中的 I/O 线程负责接收。
- 从库的 I/O 线程将接收的 binlog 写入到 relay log 中。
- 从库的 SQL 线程读取 relay log 同步数据本地(也就是再执行一遍 SQL )。
4. 读写分离具体怎么实施呢?
常用组件有下面2个:
- Sharding-JDBC:定位为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。
- MyCat:实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分库分表,配合数据库的主从模式还可实现读写分离。
参考(摘抄的文字版权属于原作者):
https://javaguide.cn/high-performance/read-and-write-separation-and-library-subtable.html
https://time.geekbang.org/column/article/77636
https://zhuanlan.zhihu.com/p/66245006
https://www.codingbrick.com/archives/546.html
公众号:编码砖家
出处:https://www.cnblogs.com/xiaoyangjia/
本文版权归作者所有,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。
原文地址:https://www.cnblogs.com/xiaoyangjia/archive/2022/03/29/16070541.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5407.html