技术标签: sharding-jdbc java 数据库
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>sharding_test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>sharding_test</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<druid.version>1.2.6</druid.version>
<mysql.version>8.0.25</mysql.version>
<lombok.version>1.18.20</lombok.version>
<sharding.version>4.1.1</sharding.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!--数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- sharding-jdbc -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>${sharding.version}</version>
</dependency>
</dependencies>
</project>
spring:
shardingsphere:
#开启sql显示
props:
sql:
show: true
datasource:
# 配置数据源
names: db
db1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/sharding_test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
sharding:
#未配置分片规则的表将通过默认数据源定位-适用于单库单表,该表无需配置分片规则
default-data-source-name: db
# 分表策略 groovy脚本
tables:
db_user:
actual-data-nodes: db.db_user_$->{
0..2}
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
# 添加数据分表策略
table-strategy:
inline:
# 添加数据分表字段(根据字段插入数据到那个表)
sharding-column: id
# 分片算法表达式 => 通过id取余
algorithm-expression: db_user_$->{
id % 3}
广播表:db_class;
单一表:db_teacher ;
分表:db_user;
spring:
shardingsphere:
#开启sql显示
props:
sql:
show: true
datasource:
# 配置数据源,
names: db0,db1
db0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/sharding_test_0?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
db1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/sharding_test_1?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
sharding:
#设置唯一库数据
default-data-source-name: db0
#分库分表
default-database-strategy:
inline:
# 添加数据分表字段(根据字段插入数据到那个表)
sharding-column: id
# 分片算法表达式 => 通过id取余
algorithm-expression: db$->{
id % 2}
# 分表策略 groovy脚本
tables:
db_user:
actual-data-nodes: db$->{
0..1}.db_user_$->{
0..2}
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
# 添加数据分表策略
table-strategy:
inline:
# 添加数据分表字段(根据字段插入数据到那个表)
sharding-column: id
# 分片算法表达式 => 通过id取余
algorithm-expression: db_user_$->{
id % 3}
#广播表
db_class:
actual-data-nodes: db$->{
0..1}.db_class
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
#广播表
broadcast-tables: db_class
#绑定表避免JOIN 笛卡尔积
binding-tables: db_user,db_class
存在多个广播表:
#广播表
db_class:
actual-data-nodes: db$->{
0..1}.db_class
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
#广播表
db_teacher:
actual-data-nodes: db$->{
0..1}.db_teacher
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
#广播表
broadcast-tables: db_class,db_teacher
# 双主双重
spring:
shardingsphere:
#开启sql显示
props:
sql:
show: true
datasource:
# 配置数据源
names: master0,slave0,master1,slave1
master0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.224:3306/sharding_test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
slave0:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.222:3306/sharding_test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
master1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.223:3306/sharding_test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
slave1:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.221:3306/sharding_test?useUnicode=true&character_set_server=utf8mb4&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
username: root
password: root
sharding:
#唯一库数据
default-data-source-name: master0
master-slave-rules:
#读写分离
db0:
master-data-source-name: master0
slave-data-source-names: slave0
# 如果一主多从的配置需要设置查询算法 从库查询数据的负载均衡算法 目前有2种算法 round_robin(轮询)和 random(随机)
# load-balance-algorithm-type: ROUND_ROBIN
db1:
master-data-source-name: master1
slave-data-source-names: slave1
# load-balance-algorithm-type: ROUND_ROBIN
# 分库分表
default-database-strategy:
inline:
# 添加数据分表字段(根据字段插入数据到那个表)
sharding-column: id
# 分片算法表达式 => 通过id取余
algorithm-expression: db$->{
id % 2}
# 分表策略 groovy脚本
tables:
db_user:
actual-data-nodes: db$->{
0..1}.db_user
key-generator:
column: id # 主键ID
type: SNOWFLAKE # 生成策略雪花id
文章目录案例案例秒杀、大促之类的活动,一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?下面提供一个解决方案: 分布式锁我们都知道,在业务开发中,为了保证在多线程下处理共享数据的安全性,需要保证同一时刻只有一个线程能处理共享数据。Java 语言给我们提供了线程锁,开放了处理锁机制的 API,比如 Synchronized、_分布式 应用场景
如网上很多朋友遇到的情况一样,因为许久不用SQLServer了,最近下载安装了一个2014版本的,启动服务后,发现使用Aqua Data Studio根本连不上,一看1433端口没有监听;于是网上搜索解决方案,基本上都是说在 SQLServer的管理配置界面设置一下,tcp/ip的端口即可。也的确如此;但我遇到的情况相对特殊一些,因为本机安装了虚拟机,虚拟了很多的网卡以及IP,所以
文章目录CORS跨域资源共享简单跨域请求非简单请求CORS的安全问题CORS漏洞的利用有关于浏览器的同源策略和如何跨域获取资源,传送门 -->浏览器同源策略和跨域的实现方法同源策略(SOP)限制了应用程序之间的信息共享,并且仅允许在托管应用程序的域内共享。这有效防止了系统机密信息的泄露。但与此同时,也带来了另外的问题。随着Web应用程序和微服务使用的日益增长,出于实用目的往往需要将信息从..._cors(跨域资源共享)定义了一种允许客户端跨域请求的机制。此应用程序正以不安全的
基于卷积神经网络的旋转机械故障检测原文:https://doi.org/10.1016/j.jsv.2016.05.027摘要振动分析是一项成熟的技术,用于监测旋转机械的状态,因为振动模式因故障或机器状况而异。目前,主要采用人工设计的特征,如滚道的传球频率、RMS、峰度和波峰,用于自动故障检测。不幸的是,设计和解释这些特征需要相当程度的人类专业知识。为了使非振动分析专家能够进行状态监测,需要尽可能减少针对特定故障的特征工程的开销。因此,本文提出了一种基于卷积神经网络的状态监测特征学习模型。该方法的目的_convolutional neural network based fault detection for rotating machinery
ISO C++ forbids declaration of ‘typeof’ with no typetypedef ‘google_breakpad::typeof’ is initialized (use decltype instead)因为 C++11 把关键字_typedef ‘’ is initialized (use decltype instead)
Java行业在当下人才是供不应求,但是作为Java程序员的你也得居安思危,你要知道你身处的是一个高速变化的行业,稍不留意你的位置还是存在被取代的风险。这些承担着技术招聘市场中高供给高需求的 Java 程序员在 17 年的招聘市场上,真的还能如此风光吗?还是埋下了一些「危机」的伏笔呢?(看到文末有...
1.autoscoll 设为true2.autoscrollMinSize,设置panel出现滚动条时的最小宽度和高度。_winform 滚动条宽度
package main;import ( "fmt" "io" "io/ioutil" "os" "path" "net/http" "errors" "strings") func main() { http.HandleFunc("/upload/&quo_go 下载图片
地理位置一般是用来描述地理事物的空间关系。通常情况下,用经纬度可以准确地描述地理位置。而通常所说的地理定位也是找到该地理位置的经纬度作为坐标来进行定位的。在PC端,通常使用IP来定位该IP用户的位置,移动端定位有多种方式,最准确的是GPS。在Web开发中,Geolocation API (地理位置应用程序接口)提供了准确知道浏览器用户当前位置的功能。本节将对Geolocation地理定位进行详细讲..._web geolocation
[b]1.man[/b] 说明 :查阅命令帮助 格式:man 命令 eg. man cat[b]2.cat[/b] 说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案) 格式:$ cat filename 一次显示整个文件 $ cat > filename 从键盘创建一个文件 ..._^_^deb'^_^b
前言: 本文档是为了演示如何使用V2005开发一个简单的BHO组件,BHO组件是实现了IObjectWithSite接口的 COM对象,该COM对象与IE进行绑定。 本文档将逐步演示如何建立BHO组件的过程,该组件实现的功能:首先当装载WEB页的时候 打印出"Hello world"信息,然后把该WEB页的所有图片资源删除。
什么是Toggle?Toggle(开关)是用来让用户打开或关闭某个选项的复选框。通过在Hierarchy视图下右键 ->UI -> Toggle可以创建Toggle。属性和功能属性功能Interactable控制该组件是否接受输入。如果该选项没有被选中时,表示Toggle不能接受输入且动画过渡不可用。Transition用于控制Toggle响应用户操作方式。Navigation用来控制UI控件的键盘导航如何实现Is On默认是否勾选T_unity toggle