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://xiahunao.cn/news/2659897.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

公司创建百度百科需要哪些内容?

一个公司或是一个品牌想要让自己更有身份,更有知名度,更有含金量,百度百科词条是必不可少的。通过百度百科展示公司的详细信息,有助于增强用户对公司的信任感,提高企业形象。通过百度百科展示公司的发展历程、领导团队…

【网络安全 | 扫描器】御剑安装及使用教程详析

御剑是一款传统的Web网络安全综合检测程序,支持对PHP、JSP、ASPX等文件进行扫描,具备全扫描、网络安全扫描和主机安全扫描能力,方便发现网站漏洞。 文章目录 下载使用教程 本文对御剑的安装及使用教程进行详析 下载 下载地址读者可自行上网…

Keras多分类鸢尾花DEMO

完整的一个小demo: pandas1.2.4 numpy1.19.2 python3.9.2 import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import DataFrame from scipy.io import loadmat from sklearn.model_selection import train_test_split impor…

Rhinos各版本安装指南

下载链接 https://pan.baidu.com/s/1L5qeUPMW32d7zR-GlVVZIw?pwd0531 温馨提示:若您下载的安装包与该安装步骤不同,说明您使用的是之前被淘汰的安装包,请通过该页面的下载链接重新下载。 1.鼠标右击【Rhino8.1(64bit)】压缩包&#xff08…

单挑力扣(LeetCode)SQL题:1951. 查询具有最多共同关注者的所有两两结对组(难度:中等)

题目:1951. 查询具有最多共同关注者的所有两两结对组 (通过次数2,464 | 提交次数3,656,通过率67.40%) 表: Relations ------------------- | Column Name | Type | ------------------- | user_id | int | | follower_id |…

电子握力器改造

toy_hand_game 介绍 消耗体力玩具,使用握力器(Grip Strengthener)控制舵机旋转。 开始设想是控制丝杆电机滑动,两套设备就可以控制两个丝杆电机进行“模拟拔河”,后续发现硬件设计错误,ULN2003不能控制两相四线电机,…

任务调度-hangfire

目录 一、Hangfire是什么? 二、配置服务 1.配置Hangfire服务 2.添加中间件 3.权限控制 三、配置后台任务 1.在后台中调用方法 2.调用延时方法 3.执行周期性任务 四、在客户端上配置任务 1.在AddHangfire添加UseHangfireHttpJob方法 2.创建周期任务 3.创建只读面板 总…

Oracle 12c rac 搭建 dg

环境 rac 环境 (主)byoradbrac 系统版本:Red Hat Enterprise Linux Server release 6.5 软件版本:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1:172.17.38.44 byoradb2:…

用轻量级ORM--Dapper实现泛型仓储

阅读本文你的收获 了解Dapper的适用场景了解Dapper的本质其实是一些扩展方法学会使用Dapper的扩展Domel来实现泛型仓储 一、什么是Dapper? Dapper是一个轻量级的ORM(对象关系映射)工具,用于简化数据库操作。它和Entity Framewor…

第五章 与HTTP协作的Web服务器

5.1 用单台虚拟主机实现多个域名 在传统的基于IP地址的服务器配置中,一台服务器通常只能提供一个域名的服务。然而,通过虚拟主机的技术,同一台服务器可以根据请求中的域名,区分并提供不同的网站内容。这使得在一台物理或虚拟服务…

如何在Mac中设置三指拖移,这里有详细步骤

三指拖移手势允许你选择文本,或通过在触控板上用三指拖动窗口或任何其他元素来移动它。它可以用于快速移动或调整窗口、文件或图像在屏幕上的位置。 然而,这个手势在默认情况下是禁用的,因此在本教程中,我们将向你展示如何在你的…

Java—Throwing Exceptions

一、指定方法引发的异常 上一节展示了如何为ListOfNumbers类中的writeList()方法编写异常处理程序。有时,代码捕获可能在其中发生的异常是适当的。然而,在其他情况下,最好让调用堆栈更上层的方法处理该异常。例如&…

DRF从入门到精通六(排序组件、过滤组件、分页组件、异常处理)

文章目录 一、排序组件继承GenericAPIView使用DRF内置排序组件继承APIView编写排序 二、过滤组件继承GenericAPIView使用DRF内置过滤器实现过滤使用第三方模块django-filter实现and关系的过滤自定制过滤类排序搭配过滤使用 三、分页组件分页器一:Pagination&#xf…

web3方向产品调研

每次互联网形态的改变,都会对世界产生很大的影响,上一次对社会产生重大影响的互联网形态(Web2.0)催生了一批改变人类生活和信息交互方式的企业。 目录 概述DAO是什么?为什么我们需要DAO? 金融服务金融桥接及周边服务D…

Go 中有效并发的模式

设计高效可靠的并发系统 在现代软件开发领域中,利用并发的能力已经变得至关重要。随着应用程序的复杂性增加和数据处理需求的增长,编写既高效又可靠的并发代码成为了一个重要的关注点。为了解决这个挑战,开发者们已经制定了一些模式和最佳实…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群: 二进制搭建适合大集群,50台以上的主机, 但是kubeadm更适合中小企业的业务集群 环境: Master:20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1:20.…

【C语言】程序练习(二)

大家好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、运算符练习 1 算术运算符 1.1 练习题: 2 自加自减运算符 3 关系运…

centos下docker安装Rocketmq总结,以及如何更换mq端口

默认你已经装好了docker哈 安装docker-compose sudo curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-composedocker-compose --version成功打印…

一招搞定找不到vcruntime140_1.dll无法继续执行此代码

在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“无法加载某某.dll文件”。而其中一个常见的问题就是vcruntime140_1.dll丢失。那么,vcruntime140_1.dll到底是什么?为什么会出现丢失的情…

MEMS热式气体流量传感器及其应用选型

热式气体流量传感器简介 热式气体流量传感器是基于流体传热学原理的一类传感器,利用 MEMS 热式原理对管路气体介质进行流量监测。 流量芯片由两个热偶堆和一个加热电阻组成,热偶堆对称分布在加热电阻的上、下游,加热电阻和热偶堆的热结处于一…