ShardingSphere分库分表实战之读写分离原理解析

6、ShardingSphere 之 读写分离 文章目录1 读写分离原理2 Mysql 配置主从复制2.1 创建2个Mysql 数据库服务,并启动两个Mysql服务2.2 配置Master库的/etc/my.cnf2.3 配置Slave库的/etc/my.cnf2.4 Master上创建用于主从复置的账号2.5 Slave上设置从库向主库同步3 ShardingSphere实现读写分离3.1 配置properties3.2 编写po3.3 编写mapper3.4 编写Test3.5 TestRest 1 读写分离原理 为了确保数据库产品的稳定性,很多数据 阅读详情

在这里插入图片描述

🚀 ShardingSphere 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 ShardingSphere 🚀

在这里插入图片描述
在这里插入图片描述

🍀 一.ShardingSphere分库分表实战之读写分离

注意:项目实战过程中有不熟的概念可以参考对应的官方网站,因为内容较多,本篇文章不做过多详细的说明,包括使用到的很多知识内容,官网开发手册都有更加详细的指导说明。

ShardingSphere开发者手册

🥦 1.1 核心概念

  • 主库

    • 添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。
  • 从库

    • 查询数据操作所使用的数据库,可支持多从库。
  • 主从同步

    • 将主库的数据异步的同步到从库的操作。 由于主从同步的异步性,从库与主库的数据会短时间内不一致。
  • 负载均衡策略

    • 通过负载均衡策略将查询请求疏导至不同从库。
      在这里插入图片描述

🥦 1.2 使用限制

  • 主库和从库的数据同步
  • 主库和从库的数据同步延迟
  • 主库双写或多写
  • 跨主库和从库之间的事务的数据不一致。建议在主从架构中,事务中的读写均用主库操作。

🥦 1.3 读写分离原理

读写分离原理:读写分离就是让主库处理事务性操作,从库处理select查询。数据库复制被用来把事务性查询导致的数据变更同步到从库,同时主库也可以select查询。

注意: 读写分离的数据节点中的数据内容是一致。

在这里插入图片描述

读写分离的基本实现:

  • 主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。

  • 读写分离是根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库。

  • 通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。

  • 使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理损坏的情况下仍然不影响系统的正常运行

读写分离则是根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库。

在这里插入图片描述

🥦 1.4 读写分离应用方案

在数据量不是很多的情况下,我们可以将数据库进行读写分离,以应对高并发的需求,通过水平扩展从库,来缓解查询的压力。如下:

在这里插入图片描述

分表+读写分离

在数据量达到500万的时候,这时数据量预估千万级别,我们可以将数据进行分表存储。

在这里插入图片描述

分库分表+读写分离

在数据量继续扩大,这时可以考虑分库分表,将数据存储在不同数据库的不同表中,如下:

在这里插入图片描述

读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题,包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。 并且,读写分离也带来了与数据分片同样的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。

透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库集群,是ShardingSphere读写分离模块的主要设计目标。

🍀 二.总结

本篇文章主要讲解了ShardingSphere分库分表实战的核心概念,读写分离原理解析以及应用方案的学习。下节预告,ShardingSphere分库分表实战之MySQL主从同步集群的搭建,敬请期待。

💬 三.共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

ShardingSphere-ShardingSphere读写分离和数据脱敏 读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题,包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。水平分片和读写分离联合使用,能够更加有效的提升系统性能, 下图展现了将分库分表与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。在数据量不是很多的情况下,我们可以将数据库进行读写分离,以应对高并发的需求,通过水平扩展从库,来缓解查询的压力。读写分离是通过主从的配置方式,将查询请求均匀的分散到多个数据副本,进一步的提升系统的处理能力。 阅读详情

相关推荐

shardingsphere实现读写分离原理

ShardingSphere通过在代理层对数据请求进行拦截,在请求到达数据库前进行分析,根据预先设定的读写分离规则,将请求路由到不同的数据库实例(即主数据库或从数据库)上。1.路由引擎:ShardingSphere通过路由引擎对请求进行分析,根据请求类型(如查询、插入、更新、删除等)和预先设定的规则,将请求路由到合适的数据库实例上。总的来说,ShardingSphere通过路由引擎、规则配置、数据源分配、负载均衡和数据同步等机制,实现了读写分离,提高了数据库的性能和可用性。

数据龛 1002

ShardingSphere数据分片之读写分离

读写分离是一种常见的数据库架构,它将数据库分为主从库,一个主库(Master)用于写数据,多个从库(Slave)进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。

qq_45515182的博客 3058

Apache ShardingSphere实战与核心源码剖析

本文分析了数据库架构的演进过程及分库分表解决方案。随着互联网数据量激增,传统单机数据库面临性能瓶颈,通过主从复制、读写分离和缓存技术逐步优化。但当单表数据超千万或100G时仍需分库分表,主要分为垂直分库(按业务拆分)、垂直分表(按字段拆分)、水平分库(数据分片到不同库)和水平分表(单表数据水平拆分)四种方式。分库分表能有效解决存储容量、连接数等瓶颈问题,但需根据实际业务需求评估是否必要。

qq_35176057的博客 645

ShardingSphere 实践(4)—— 读写分离

ShardingSphere 读写分离:功能详解、用例测试

wzy0623的专栏 5954

shardingsphere分库分表跨库访问原理

分片规则:根据分片键和分片算法,将数据分片到不同的数据库和表。SQL 路由:根据分片规则,ShardingSphere 会将 SQL 路由到具体的库或表。SQL 改写:ShardingSphere 会对 SQL 进行改写,使其指向正确的分片。并行执行:对于跨库查询,ShardingSphere 会将 SQL 并行分发到多个数据库执行。结果归并:ShardingSphere 会将多个库的查询结果进行合并,返回给应用层。事务管理:ShardingSphere 支持多种事务机制,保证跨库操作的一致性。

weixin_39304656的博客 2291

shardingsphere分库分表项目实践3-分库分表算法原理

ShardingSphere的数据库表分片算法原理主要基于分片字段、分片算法以及分片策略来实现。 分片算法是用于实现数据分片的具体逻辑。ShardingSphere支持多种分片算法,包括取模、哈希、范围、时间等常用算法。这些算法可以根据分片键的值来计算数据应该存储在哪个数据库或表中。支持自定义分片算法。 分片策略是在配置文件中配置的,就是分片键和分片算法的组合,它决定了数据分片的整体规则。在ShardingSphere中,可以通过配置分片策略来指定分片键、分片算法以及分片后的数据节点等信息。

zfj321的博客 2006

终极指南:JavaGuide深度解析数据库读写分离与分库分表架构设计

在现代互联网应用开发中,**数据库读写分离**和**分库分表**是解决高并发场景下数据库性能瓶颈的关键技术方案。无论是电商平台、社交应用还是金融系统,随着用户量和数据量的增长,传统的单数据库架构往往难以支撑业务需求。本文将为您全面解析这两种核心的数据库优化技术,帮助您构建高性能、高可用的数据库架构体系。 ## 🎯 为什么需要数据库读写分离? **数据库读写分离**是一种将数据库的读操作和写操

gitblog_00528的博客 369

Apache ShardingSphere在MySQL上的分库分表实战指南.zip

Apache ShardingSphere 起源于当数据量级不断增长,传统的单一数据库架构无法满足日益增长的业务需求时,ShardingSphere 诞生了。它的初衷是为了解决分布式数据库领域的分库分表问题,提供一套完整的解决方案,让开发者能够在不更换底层数据库的情况下,通过水平扩展的方式提升数据处理能力。ShardingSphere 并不是要替代现有的数据库管理系统,而是作为一个中间件,与数据库系统配合,提供分库分表、读写分离、数据分片等功能。

weixin_35649491的博客 749

【分库分表ShardingSphere】

文章目录一、ShardingSphere二、ShardingJDBC实战1、核心概念2、测试项目介绍3、快速实战4、ShardingJDBC的分片算法NoneShardingStrategyInlineShardingStrategyStandardShardingStrategyComplexShardingStrategyHintShardingStrategy5、ShardingSphere的SQL使用限制6、分库分表带来的问题7、分库分表方案设计实战三、内核剖析解析引擎路由引擎改写引擎执行引擎归并引

我是Java程序员廖志伟,感谢朋友们的支持! 6011

基于Dify Agent构建智能客服:攻克知识库查询、多轮对话、安全鉴权与人机协同

基于Dify Agent构建智能客服,并将知识库等核心能力工具化,再通过Chatflow进行流程编排,是一种强大且灵活的策略。它不仅解决了当前AI客服面临的诸多核心挑战,也为未来的功能扩展和智能化升级打下了坚实的基础。希望本文能为您在构建高效、智能的AI客服系统之路上提供有益的参考!dify实验室基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。关注我,获取Dify相关资源(DSL、token、交流群等)。

同名公众号:dify实验室 3742

Python接口自动化测试实战:Requests+Pytest+Excel+Allure框架搭建指南

接口自动化测试是现代软件工程中保障软件质量的关键实践,其核心原理是通过脚本模拟客户端请求,自动验证API的功能、性能和可靠性。在Python技术栈中,Requests库以其简洁的API成为处理HTTP请求的基石,而Pytest框架则凭借其灵活的Fixture机制和强大的参数化功能,为测试用例的组织与执行提供了优雅的解决方案。结合Excel进行数据驱动测试,能够有效实现测试数据与脚本逻辑的分离,提升协作效率;最终通过Allure生成可视化测试报告,清晰呈现测试结果与过程。这套技术组合(Requests, Py

weixin_28677451的博客 304

ShardingSphere 分库分表技术实现与实战案例

本文介绍了使用Apache ShardingSphere实现分库分表的技术方案。针对电商平台订单、用户等海量数据表,设计了按用户ID哈希分库、按时间分表的分片策略,确保数据均匀分布和高效查询。文章详细讲解了ShardingSphere的核心原理(分片路由、SQL改写等)和实战步骤,包括环境准备、依赖配置、分片规则定义等。重点展示了订单表的分库分表配置示例,采用Snowflake算法生成分布式ID,并通过YAML文件定义多数据源和分片规则。

Mr_hwt_123的博客 1320

【实战指南】OpenClaw Telegram 群聊不响应完整解决方案:从获取群 ID 到关闭隐私模式全流程

将整个从“获取群组 ID → 配置 OpenClaw Telegram 通道 → 关闭隐私模式 → 测试”的全流程都整合进去。

hampeter的博客 3484

ShardingSphere 分库分表实战使用总结与完整示例演示

一、分库分表核心概念与技术选型为什么需要分库分表单库瓶颈:数据量超过500万或单表体积超10GB时,查询性能显著下降;单库连接数受限(默认151),高并发下写入性能差[6扩展性需求:水平扩展比垂直升级更经济高效,可应对千万级数据量[6ShardingSphere优势无侵入性:基于JDBC接口,对业务代码零修改,兼容主流ORM框架(如MyBatis、Hibernate)[2][6灵活分片:支持哈希分片、范围分片、列表分片等多种策略,可自定义分片键和算法[6][7生态完善。

bsklhao的博客 1325

Java实现双色球&大乐透随机选号算法——原理详解与代码实战

掌握核心语法:集合操作、随机数生成、排序。贴近实际场景:将编程知识应用于生活问题的解决。

wangchl0932的博客 4972

基于Simulink的加速度计振动分析:单自由度质量-弹簧-阻尼系统

摘要:基于Simulink的加速度计单自由度振动分析 本文研究了加速度计的单自由度(SDOF)质量-弹簧-阻尼系统模型,通过MATLAB/Simulink平台建立了完整的振动分析仿真系统。文章详细阐述了理论建模过程,推导了系统运动微分方程和传递函数,并提供了Simulink模型搭建的具体步骤和MATLAB实现代码。研究通过正弦扫频、随机振动和冲击响应三种典型输入信号,分析了系统的幅频特性、相频特性及时域响应,验证了加速度计的工作机理。仿真结果表明,该方法能有效模拟加速度计在不同激励条件下的动态特性,为传感器

AI的内部世界的博客 162

Java面试-分库分表的常见方案:ShardingSphere 实战

单表数据突破 5000 万,查询慢如蜗牛,加索引也没用……”当数据量达到千万级、亿级🔴性能瓶颈:查询、写入变慢🔴存储瓶颈:磁盘撑爆🔴高可用风险:单点故障分库分表(Sharding)就是将数据水平拆分✅ 水平扩展✅ 提升读写性能✅ 提高系统可用性今天,我们就来实战—— 分库分表的“终极武器”。准备好了吗?我们出发!🚀💥Apache 顶级项目分布式数据库中间件提供分库分表、读写分离、数据加密等能力功能价值分库分表突破单库性能瓶颈读写分离提升读性能数据加密保障数据安全。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

从零开始:C#上位机集成YOLO完成摄像头目标追踪(保姆级教程)

新手入门C#上位机+YOLO做摄像头目标追踪,最忌讳的是“只抄代码,不懂逻辑”。这个教程不仅给了完整代码,还把核心原理和踩坑点都讲清楚了,新手跟着走,不仅能跑通demo,还能理解为什么这么写。如果你们在运行时遇到具体问题,比如模型导出失败、代码报错,都可以在评论区留言,我会一一解答。后续也可以出一期工业相机+YOLO目标追踪的教程,帮助大家把demo落地到实际生产中。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1025

ShardingSphere-JDBC原理及分库分表实战

目录 简介 特点 架构实现原理 主要功能点 主要核心概念 实战 集成ShardingSphere-JDBC 自定义分片策略 分库不分表 分表不分库 分表分库 主从及读写分离 与Mycat对比 总结 简介 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用

不积跬步无以致千里 不积小流无以成江海 1730

46、聚类算法在智能交通数据分析中的应用

本文探讨了聚类算法在智能交通数据分析中的应用,介绍了K-均值算法、K-中心点算法和基于模型的聚类算法的基本原理及特点,并结合实际交通数据讨论了其应用场景与挑战。通过聚类分析,能够从海量交通数据中发现隐藏模式,为交通管理和规划提供科学依据。文章还展示了具体的案例分析和实现流程,为未来智能交通系统的发展提供了参考。

zz67890的博客 133

Vue+OpenLayers:解决中国境内OpenStreetMap地图加载问题

然而,在使用OpenLayers和Vue框架搭建地图应用时,很多中国开发者可能会遇到一个常见问题:OpenStreetMap(OSM)地图无法正常加载。为了解决这个问题,我们可以使用其他方式获取地图数据,比如使用国内的地图服务提供商。通过使用国内地图服务商提供的地图数据,我们可以解决OpenStreetMap地图加载问题。然后,我们创建一个OpenLayers地图对象,并指定地图图层的源为国内地图服务商提供的地图URL。属性,可以将地图的中心点和缩放级别调整到我们需要的位置。

CodeWhizZ的博客 8269

ShardingSphere 分库分表策略解析

在当今大数据时代,随着业务量的激增,数据库的负载压力也随之增大。许多企业面临着数据库性能瓶颈的问题,尤其是在数据量达到一定程度后,传统的单库单表架构已经无法满足业务需求。为了解决这个问题,ShardingSphere应运而生,它提供了一种分库分表策略,以优化数据库性能和扩展性。下面,我们将对ShardingSphere的分库分表策略进行概述。场景问题:假设我们正在开发一个电商网站,随着用户数量的增加,订单数据量迅速膨胀。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 873

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?

摘要:本文介绍了ShardingSphere如何通过读写分离机制优化高并发场景下的数据库访问。

断剑重铸之日 骑士归来之时 1175

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《系统掌握 ShardingSphere-JDBC:分库分表、读写分离、分布式事务一网打尽》

如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB。对数据的各种操作也是愈加的困难,传统单体的关系性数据库已经无法满足快速查询与插入数据的需求。阿里数据中心内景( 阿里、百度、腾讯这样的互联网巨头,数据量据说已经接近EB级)事务安全性,NOSQL数据库对事务的支持不完善. MySQL不可替代.遇到的问题解决方案此时项目是一个单体应用架构 (一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用)这个阶段是公司发展的早期阶段,系统架构如上图所示。我们

weixin_53818428的博客 1021

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ShardingSphere分库分表核心原理精讲第一节 理论基础和简介

开篇词:如何正确学习一款分库分表开源框架? 你好,我是萧然,长期从事分布式系统的构建和优化工作,负责过大型电商以及物联网系统的设计和开发,曾带领团队完成业界领先的物联网数据平台建设工作,对基于 ShardingSphere 进行数据分库分表和治理工作有着丰富的实践经验。 互联网高速发展带来海量的信息化数据,也带来更多的技术挑战。以我工作多年的物联网行业为例,各种智能终端设备(比如摄像头或车载设备等)以每天千万级的数据量上报业务数据,电商、社交等互联网行业更不必说。这样量级的数据处理,已经远不是传统关系型数据

fegus的博客 1727

读写分离和分库分表详解

读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。这样的话,就能够小幅提升写性能,大幅提升读性能。我简单画了一张图来帮助不太清楚读写分离的小伙伴理解。一般情况下,我们都会选择一主多从,也就是一台主数据库负责写,其他的从数据库负责读。主库和从库之间会进行数据同步,以保证从库中数据的准确性。这样的架构实现起来比较简单,并且也符合系统的写少读多的特点。分表就是对单表的数据进行拆分,可以是垂直拆分,也可以是水平拆分。垂直分表是对数据表列的拆分,把一张列比较多的表拆分为多张表。

2303_78378466的博客 1112
上一篇: ShardingSphere分库分表实战之广播表
下一篇: ShardingSphere分库分表实战之MySQL主从集群搭建
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值