shardingConfig2
This commit is contained in:
parent
4157bac93f
commit
f4998e1073
|
|
@ -6,6 +6,7 @@ import com.zaxxer.hikari.HikariConfig;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
|
import org.apache.shardingsphere.api.config.masterslave.MasterSlaveRuleConfiguration;
|
||||||
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
|
import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
|
||||||
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
|
import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
|
||||||
|
|
@ -105,6 +106,12 @@ public class ShardingConfig {
|
||||||
// 配置表的切分策略
|
// 配置表的切分策略
|
||||||
shardingRuleConfig.setTableRuleConfigs(addTableRuleConfigs());
|
shardingRuleConfig.setTableRuleConfigs(addTableRuleConfigs());
|
||||||
|
|
||||||
|
// 配置表绑定规则
|
||||||
|
List<Set<String>> sets = new ArrayList<>();
|
||||||
|
sets.add(regionTables);
|
||||||
|
shardingRuleConfig.setBindingTableGroups(bindingTableGroups(sets));
|
||||||
|
|
||||||
|
|
||||||
// 配置是否显示sql
|
// 配置是否显示sql
|
||||||
Properties props = new Properties();
|
Properties props = new Properties();
|
||||||
props.put("sql.show", showSql);
|
props.put("sql.show", showSql);
|
||||||
|
|
@ -193,4 +200,38 @@ public class ShardingConfig {
|
||||||
});
|
});
|
||||||
return sets;
|
return sets;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定表的分片规则
|
||||||
|
*/
|
||||||
|
public static Set<String> bindingTableGroups(List<Set<String>> sets) {
|
||||||
|
if (sets != null && !sets.isEmpty()) {
|
||||||
|
Set<String> tableGroups = new HashSet<>();
|
||||||
|
for (Set<String> set : sets) {
|
||||||
|
String tableNames = bindingTable(set.toArray(new String[0]));
|
||||||
|
if (StringUtils.isNotBlank(tableNames)) {
|
||||||
|
tableGroups.add(tableNames);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tableGroups;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量绑定表规则
|
||||||
|
*
|
||||||
|
* @param tables 批量绑定的标规则
|
||||||
|
* @return tableNames
|
||||||
|
*/
|
||||||
|
private static String bindingTable(String... tables) {
|
||||||
|
StringBuilder tableNames = new StringBuilder();
|
||||||
|
if (tables != null && tables.length != 0) {
|
||||||
|
for (String table : tables) {
|
||||||
|
tableNames.append(table).append(",");
|
||||||
|
}
|
||||||
|
tableNames.deleteCharAt(tableNames.length() - 1);
|
||||||
|
}
|
||||||
|
return tableNames.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -101,14 +101,14 @@ public class CourseCollectServiceImpl extends ServiceImpl<CourseCollectDao, Cour
|
||||||
@CachePut(value = "app:courseCollect", key = "#userId")
|
@CachePut(value = "app:courseCollect", key = "#userId")
|
||||||
public Result selectByUserId(Integer page, Integer limit, Long userId,Integer classify) {
|
public Result selectByUserId(Integer page, Integer limit, Long userId,Integer classify) {
|
||||||
Page<Course> pages=new Page<>(page,limit);
|
Page<Course> pages=new Page<>(page,limit);
|
||||||
IPage<Course> courseIPage = baseMapper.selectCourseByCollect(pages, userId,classify);
|
// IPage<Course> courseIPage = baseMapper.selectCourseByCollect(pages, userId,classify);
|
||||||
List<Course> courses = courseIPage.getRecords();
|
// List<Course> courses = courseIPage.getRecords();
|
||||||
if (courses != null && courses.size() > 0) {
|
// if (courses != null && courses.size() > 0) {
|
||||||
for (Course course : courses) {
|
// for (Course course : courses) {
|
||||||
course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId()));
|
// course.setCourseClassification(courseClassificationDao.selectById(course.getClassifyId()));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return Result.success().put("data",courseIPage);
|
return Result.success().put("data",null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ spring:
|
||||||
# sharding-jdbc 配置
|
# sharding-jdbc 配置
|
||||||
shardingsphere:
|
shardingsphere:
|
||||||
# 显示sharding-jdbc改写的sql语句
|
# 显示sharding-jdbc改写的sql语句
|
||||||
show-sql: false
|
show-sql: true
|
||||||
|
|
||||||
center-tables-data-node: duanju.%s
|
center-tables-data-node: duanju.%s
|
||||||
# 区域表的数据源节点
|
# 区域表的数据源节点
|
||||||
|
|
@ -30,130 +30,131 @@ spring:
|
||||||
# 区域分库策略的计算字段
|
# 区域分库策略的计算字段
|
||||||
region-tables-sharding-database-column: user_id
|
region-tables-sharding-database-column: user_id
|
||||||
# 分库的计算方法
|
# 分库的计算方法
|
||||||
region-tables-sharding-database-algorithm: duanju-$->{Math.abs(user_id) % 5}
|
region-tables-sharding-database-algorithm: duanju-$->{user_id%5}
|
||||||
|
|
||||||
# 短剧集表 拆分
|
# 短剧集表 拆分
|
||||||
course_details-sharding-database-column: course_id
|
course_details-sharding-database-column: course_id
|
||||||
course_details-sharding-database-algorithm: duanju-$->{Math.abs(course_id) % 5}
|
course_details-sharding-database-algorithm: duanju-$->{course_i%5}
|
||||||
|
|
||||||
# 数据源名称
|
# 数据源名称
|
||||||
datasource:
|
datasource:
|
||||||
master:
|
duanju:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url: jdbc:mysql://rm-gc7xx913734hv5w5q.mysql.cn-chengdu.rds.aliyuncs.com/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username: video_user
|
username: root
|
||||||
password: VideoUser@1
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
# 数据源配置begin
|
# 数据源配置begin
|
||||||
master-0:
|
duanju-0:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
master-1:
|
duanju-1:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
master-2:
|
duanju-2:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
master-3:
|
duanju-3:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
master-4:
|
duanju-4:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave:
|
|
||||||
|
duanju-slave:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave-0:
|
duanju-slave-0:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave-1:
|
duanju-slave-1:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave-2:
|
duanju-slave-2:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave-3:
|
duanju-slave-3:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
max-lifetime: ${max-lifetime}
|
max-lifetime: ${max-lifetime}
|
||||||
connection-timeout: ${connection-timeout}
|
connection-timeout: ${connection-timeout}
|
||||||
slave-4:
|
duanju-slave-4:
|
||||||
driver-class-name: ${driver-class-name}
|
driver-class-name: ${driver-class-name}
|
||||||
jdbc-url:
|
jdbc-url: jdbc:mysql://192.168.1.5:3306/duanju-4?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=CTT
|
||||||
username:
|
username: root
|
||||||
password:
|
password: gongyijieqp002
|
||||||
minimum-idle: ${minimum-idle}
|
minimum-idle: ${minimum-idle}
|
||||||
maximum-pool-size: ${maximum-pool-size}
|
maximum-pool-size: ${maximum-pool-size}
|
||||||
idle-timeout: ${idle-timeout}
|
idle-timeout: ${idle-timeout}
|
||||||
|
|
@ -164,22 +165,28 @@ spring:
|
||||||
# 读写分离配置begin
|
# 读写分离配置begin
|
||||||
master-slave-rules:
|
master-slave-rules:
|
||||||
#数据源
|
#数据源
|
||||||
duanju:
|
center:
|
||||||
master-data-source-name: master
|
masterDataSourceName: duanju
|
||||||
slave-data-source-names: slave
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave
|
||||||
duanju-0:
|
duanju-0:
|
||||||
master-data-source-name: master-0
|
masterDataSourceName: duanju-0
|
||||||
slave-data-source-names: slave-0
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave-0
|
||||||
duanju-1:
|
duanju-1:
|
||||||
master-data-source-name: master-1
|
masterDataSourceName: duanju-1
|
||||||
slave-data-source-names: slave-1
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave-1
|
||||||
duanju-2:
|
duanju-2:
|
||||||
master-data-source-name: master-2
|
masterDataSourceName: duanju-2
|
||||||
slave-data-source-names: slave-2
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave-2
|
||||||
duanju-3:
|
duanju-3:
|
||||||
master-data-source-name: master-3
|
masterDataSourceName: duanju-3
|
||||||
slave-data-source-names: slave-3
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave-3
|
||||||
duanju-4:
|
duanju-4:
|
||||||
master-data-source-name: master-4
|
masterDataSourceName: duanju-4
|
||||||
slave-data-source-names: slave-4
|
slaveDataSourceNames:
|
||||||
|
- duanju-slave-4
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ spring:
|
||||||
allow-bean-definition-overriding: true
|
allow-bean-definition-overriding: true
|
||||||
# 环境 dev|test|prod
|
# 环境 dev|test|prod
|
||||||
profiles:
|
profiles:
|
||||||
active: dev
|
active: prod
|
||||||
# jackson时间格式化
|
# jackson时间格式化
|
||||||
jackson:
|
jackson:
|
||||||
time-zone: GMT+8
|
time-zone: GMT+8
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue