ShardingSphere分库分表实战之读写分离原理解析
🍀 一.ShardingSphere分库分表实战之读写分离
注意:项目实战过程中有不熟的概念可以参考对应的官方网站,因为内容较多,本篇文章不做过多详细的说明,包括使用到的很多知识内容,官网开发手册都有更加详细的指导说明。
🥦 1.1 核心概念
主库
- 添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。
从库
- 查询数据操作所使用的数据库,可支持多从库。
主从同步
- 将主库的数据异步的同步到从库的操作。 由于主从同步的异步性,从库与主库的数据会短时间内不一致。
负载均衡策略
- 通过负载均衡策略将查询请求疏导至不同从库。
- 通过负载均衡策略将查询请求疏导至不同从库。
🥦 1.2 使用限制
- 主库和从库的数据同步
- 主库和从库的数据同步延迟
- 主库双写或多写
- 跨主库和从库之间的事务的数据不一致。建议在主从架构中,事务中的读写均用主库操作。
🥦 1.3 读写分离原理
读写分离原理:读写分离就是让主库处理事务性操作,从库处理select查询。数据库复制被用来把事务性查询导致的数据变更同步到从库,同时主库也可以select查询。
注意: 读写分离的数据节点中的数据内容是一致。
读写分离的基本实现:
主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。
读写分离是根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库。
通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。
使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理损坏的情况下仍然不影响系统的正常运行
读写分离则是根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库。
🥦 1.4 读写分离应用方案
在数据量不是很多的情况下,我们可以将数据库进行读写分离,以应对高并发的需求,通过水平扩展从库,来缓解查询的压力。如下:
分表+读写分离
在数据量达到500万的时候,这时数据量预估千万级别,我们可以将数据进行分表存储。
分库分表+读写分离
在数据量继续扩大,这时可以考虑分库分表,将数据存储在不同数据库的不同表中,如下:
读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题,包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。 并且,读写分离也带来了与数据分片同样的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。
透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库集群,是ShardingSphere读写分离模块的主要设计目标。
🍀 二.总结
本篇文章主要讲解了ShardingSphere分库分表实战的核心概念,读写分离原理解析以及应用方案的学习。下节预告,ShardingSphere分库分表实战之MySQL主从同步集群的搭建,敬请期待。
💬 三.共勉
最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉! |
- 点赞
- 收藏
- 关注作者
评论(0)