SpringBoot+ShardingSphereJDBC实战(读写分离,分库分表,垂直拆分、水平拆分)附源码

参考:https://www.51cto.com/article/747736.html
https://blog.csdn.net/qq_41581588/article/details/126966665

源码地址:git@gitee.com:jackXUYY/springboot-example.git

读写分离测试

我们启用后缀名为dev的配置文件,如下,数据库链接需要改成自己的地址
库表需要自己建,在resources/sql下

在这里插入图片描述

配置如下

# 读写分离配置,使用前先搭建mysql主从数据库,对应UserController
spring:shardingsphere:datasource:# 配置真实数据源names: master,slave1,slave2# 配置第 1 个数据源,为了方便,我们搞3个库,但里面的表一样,当做主从配置master:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_userpassword: roottype: com.zaxxer.hikari.HikariDataSourceusername: root# 配置第 2 个数据源slave1:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_user1password: roottype: com.zaxxer.hikari.HikariDataSourceusername: root# 配置第 3 个数据源slave2:driver-class-name: com.mysql.jdbc.Driverjdbc-url: jdbc:mysql://127.0.0.1:3306/db_user2password: roottype: com.zaxxer.hikari.HikariDataSourceusername: rootmode:# 内存模式 内存模式,初始化配置或执行SQL等操作均在当前进程生效# Standalone 单机模式,可以将数据源和规则等元数据信息持久化,但是这些元数据不会在集群中同步# Cluster 集群模式,提供了多个Apache ShardingSphere实例之间元数据共享以及分布式场景下的状态协调的能力,也提供水平扩展以及高可用的能力# 可参考 https://blog.csdn.net/qq_41581588/article/details/126966665type: Memory# 打印sqlprops:sql-show: truerules:# 读写分离规则readwrite-splitting:# 数据源配置data-sources:# 这个名字随便起myds:# 读写分离类型,如: Static,Dynamictype: Static# 读数据源负载均衡算法名称load-balancer-name: alg_randomprops:# 读数据源名称,多个从数据源用逗号分隔read-data-source-names: slave1,slave2# 写数据源名称write-data-source-name: master# 负载均衡配置load-balancers:# 定义负载均衡算法:随机,轮询,权重alg_random:type: RANDOMalg_round:type: ROUND_ROBINalg_weight:props:slave1: 1slave2: 2type: WEIGHT

启动服务,执行这两个接口看控制台打印结果

在这里插入图片描述

垂直分片 测试 (从不同的库中加载多张不同的表在一个项目中使用)

打开dev2的配置,执行OrderController里面的接口看控制台打印的效果

注意数据库链接改成自己的,库表需要先建好,

在这里插入图片描述
水平分表测试(将表拆成多个结构一样,每个表存一点数据)使用dev3的配置
建个t_order1的表,和t_order结构一样

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

水平分片:查询所有记录,

查询了两个数据源,每个数据源中使用UNION ALL连接两个表* Actual SQL: server-order0 ::: SELECT  id,order_no,user_id,amount  FROM t_order0 UNION ALL SELECT  id,order_no,user_id,amount  FROM t_order1* Actual SQL: server-order1 ::: SELECT  id,order_no,user_id,amount  FROM t_order0 UNION ALL SELECT  id,order_no,user_id,amount  FROM t_order1

在这里插入图片描述

关联表测试,使用dev4的配置

广播表测试 使用dev5的配置

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

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

相关文章

深入理解SqlSugar ORM框架的使用与实战

一、引言 SqlSugar 是一个轻量级的 ORM(对象关系映射)库,用于在 C# 中与 SQL 数据库进行交互。它提供了一个简单易用的 API,使得开发人员可以以对象的形式而不是原始 SQL 语句进行工作。在本文中,我们将通过实例代码的…

C++入门【18-C++ 指针】

C 指针 学习 C 的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。 正如您所知…

nginx 一、安装与conf浅析

文章目录 一、安装nginxdocker方式安装linux方式安装Ubuntu 或 Debian 系统:CentOS 或 RHEL 系统: macOS 系统(使用 Homebrew):Windows 系统: 二、nginx.conf浅析 Nginx(发音为“engine-x”&…

椭圆中点算法

原理 椭圆的扫描转换与圆的扫描转换有相似之处,但也有不同,主要区别是椭圆弧上存在改变主位移方向的临界点。瞬时针绘制四分椭圆弧的中点算法,根据对称性可以绘制完整的椭圆。 四分椭圆弧 中心在原点,长半轴为 a a a、短半轴为…

01-03

利用模板类完成顺序表

简易电子琴

#include<reg51.h> //包含51单片机寄存器定义的头文件 sbit P14P1^4; //将P14位定义为P1.4引脚 sbit P15P1^5; //将P15位定义为P1.5引脚 sbit P16P1^6; //将P16位定义为P1.6引脚 sbit P17P1^7; //将P17位定义为P1.7引脚 unsigned char keyval; …

Redis 的常用命令

一、Redis 通用命令 TYPE key&#xff1a;返回 key 所储存的值的类型。 OBJECT ENCODING key&#xff1a;返回key所储存的值的底层编码方式。 DEL key&#xff1a;该命令用于在 key 存在时删除 key。 EXPIRE key seconds&#xff1a;设置指定key的过期时间。 RENAME key newke…

高端大气的在线文档

背景 产品介绍&#xff0c;帮助手册&#xff0c;操作手册&#xff0c;开发说明&#xff0c;个人的简单网站等等&#xff0c;都需要一个在线的文档&#xff0c;特别是开源社区的在线文档也非常需要&#xff0c;开源社区也为此提供了大量的工具。如何找到一款高端大气的&#xf…

使用MyBatis实现动态SQL查询的最佳实践

在数据库操作中&#xff0c;动态SQL查询是一种非常常见的需求。MyBatis作为一款优秀的持久层框架&#xff0c;提供了强大的动态SQL功能&#xff0c;允许开发者根据不同条件动态构建SQL查询语句&#xff0c;从而灵活地执行数据库操作。本文将深入探讨MyBatis中动态SQL查询的实现…

解决Golang WriteHeader设置后,Content-Type失效的问题

场景 最近笔者在研究web框架过程中&#xff0c;发现了一个响应类型的问题&#xff0c;困扰许久&#xff0c;原因就是设置了响应状态码后&#xff0c;然后设置响应类型为application/json。在实际请求后&#xff0c;响应类型变成了text/plain; charsetutf-8格式。 问题解决&…

SQL备忘--子查询与ALL/ANY运算符

概念 在SQL查询语句中包含了其他的查询语句&#xff0c;出现了SQL语句的嵌套&#xff0c;即为使用了嵌套子查询 子查询用法 子查询可以用在&#xff1a; SELECT查询字段中FROM表名语句中WHERE条件中 由此可见子查询用法广泛&#xff0c;可用在SQL基本语句的每个位置。但具…

学习Go语言Web框架Gee总结--前缀树路由Router(三)

学习Go语言Web框架Gee总结--前缀树路由Router router/gee/trie.gorouter/gee/router.gorouter/gee/context.gorouter/main.go 学习网站来源&#xff1a;Gee 项目目录结构&#xff1a; router/gee/trie.go 实现动态路由最常用的数据结构&#xff0c;被称为前缀树(Trie树) 关…

python代码大全(持续更新)

读写文件 # 读取文件 with open(file.txt, r) as file:content file.read()# 写入文件 with open(file.txt, w) as file:file.write(Hello, World!)HTTP请求 import requestsresponse requests.get(https://api.example.com/data) data response.json()JSON处理 import j…

机器学习中聚类算法-简单介绍

聚类算法 聚类算法&#xff1a; 将数据分成不同的组&#xff0c;如K均值&#xff08;K-Means&#xff09;和层次聚类&#xff08;Hierarchical Clustering&#xff09;。 聚类是机器学习中一类重要的无监督学习问题&#xff0c;其目标是将数据集中的样本划分为不同的组&#x…

【AI】目标检测算法DETR源码解析及推理测试

说到目标检测&#xff0c;自然而然我们会想到YOLO这个框架&#xff0c;YOLO框架已经发展到V8版本了&#xff0c;各种应用也比较成熟&#xff0c;不过我最近在研究Transformer&#xff0c;今天的主角是Transformer在目标检测的开山之作&#xff1a;DETR&#xff1a;End-to-End O…

FairGuard游戏加固产品常见问题解答

针对日常对接中&#xff0c;各位用户对FairGuard游戏加固方案在安全性、稳定性、易用性、接入流程等方面的关注&#xff0c;我们梳理了相关问题与解答&#xff0c;希望可以让您对产品有一个初步的认知与认可。 Q1:FairGuard游戏加固产品都有哪些功能? A&#xff1a;FairGuar…

结构体详解

结构体&#xff1a; 一系列具有相同类型或不同类型的数据构成的数据集合&#xff0c;也叫结构 结构体可以用来封装一些属性来组成新的类型。 结构体的大小&#xff1a; 结构体的大小不是结构体元素单纯相加。内存对齐&#xff08;若计算机使用32位字长的cpu&#xff0c;对32位的…

【算法】dp题单

题单链接&#xff1a; https://vjudge.net/contest/574209#overview 目录 1. 洛谷 P1020 导弹拦截 &#xff08;dp二分Dilworth 定理&#xff09; 2. P1439 最长公共子序列&#xff08;二分求最长公共子序列&#xff09; 3. 洛谷 P1854 花店橱窗布置 &#xff08;线性dp 用…

OpenFeign

OpenFeign 一、基本使用 1、引入依赖 <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId><groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-start…

k8s的网络

k8s的网络 k8s中的通信模式&#xff1a; 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信的 2、同一个node节点之内&#xff0c;不同pod之间的通信 每个pod都有一个全局的真实的ip地址…