Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lakernote
EasyAdmin
提交
6dc89fc9
E
EasyAdmin
项目概览
lakernote
/
EasyAdmin
10 个月 前同步成功
通知
14
Star
3
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
EasyAdmin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6dc89fc9
编写于
11月 30, 2022
作者:
lakernote
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加shardingjdbc
上级
c780bffb
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
73 addition
and
7 deletion
+73
-7
src/main/java/com/laker/admin/framework/aop/metrics/MetricsAspect.java
.../com/laker/admin/framework/aop/metrics/MetricsAspect.java
+10
-1
src/main/java/com/laker/admin/framework/ext/sharding/ModuloHintShardingAlgorithm.java
...n/framework/ext/sharding/ModuloHintShardingAlgorithm.java
+25
-0
src/main/java/com/laker/admin/framework/ext/sharding/PreciseModuloShardingTableAlgorithm.java
...ork/ext/sharding/PreciseModuloShardingTableAlgorithm.java
+20
-0
src/main/resources/application-sharding.yaml
src/main/resources/application-sharding.yaml
+18
-6
未找到文件。
src/main/java/com/laker/admin/framework/aop/metrics/MetricsAspect.java
浏览文件 @
6dc89fc9
...
...
@@ -10,6 +10,7 @@ import com.laker.admin.module.ext.service.IExtLogService;
import
com.laker.admin.utils.IP2CityUtil
;
import
com.laker.admin.utils.http.HttpServletRequestUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.shardingsphere.api.hint.HintManager
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
...
...
@@ -88,7 +89,15 @@ public class MetricsAspect {
Boolean
success
=
JSONUtil
.
parseObj
(
response
).
getBool
(
"success"
,
true
);
logBean
.
setStatus
(
success
);
}
extLogService
.
save
(
logBean
);
// hint
HintManager
hintManager
=
HintManager
.
getInstance
();
hintManager
.
addTableShardingValue
(
"ext_log"
,
0L
);
try
{
extLogService
.
save
(
logBean
);
}
finally
{
hintManager
.
close
();
}
return
returnValue
;
}
}
src/main/java/com/laker/admin/framework/ext/sharding/ModuloHintShardingAlgorithm.java
0 → 100644
浏览文件 @
6dc89fc9
package
com.laker.admin.framework.ext.sharding
;
import
org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm
;
import
org.apache.shardingsphere.api.sharding.hint.HintShardingValue
;
import
java.util.ArrayList
;
import
java.util.Collection
;
public
final
class
ModuloHintShardingAlgorithm
implements
HintShardingAlgorithm
<
Long
>
{
@Override
public
Collection
<
String
>
doSharding
(
final
Collection
<
String
>
availableTargetNames
,
final
HintShardingValue
<
Long
>
shardingValue
)
{
Collection
<
String
>
result
=
new
ArrayList
<>();
System
.
out
.
println
(
"----------------------------------------------------"
);
System
.
out
.
println
(
availableTargetNames
);
for
(
String
each
:
availableTargetNames
)
{
for
(
Long
value
:
shardingValue
.
getValues
())
{
if
(
each
.
endsWith
(
String
.
valueOf
(
value
%
2
)))
{
result
.
add
(
each
);
}
}
}
return
result
;
}
}
\ No newline at end of file
src/main/java/com/laker/admin/framework/ext/sharding/PreciseModuloShardingTableAlgorithm.java
0 → 100644
浏览文件 @
6dc89fc9
package
com.laker.admin.framework.ext.sharding
;
import
org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm
;
import
org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue
;
import
java.util.Collection
;
public
final
class
PreciseModuloShardingTableAlgorithm
implements
PreciseShardingAlgorithm
<
Long
>
{
@Override
public
String
doSharding
(
final
Collection
<
String
>
tableNames
,
final
PreciseShardingValue
<
Long
>
shardingValue
)
{
for
(
String
each
:
tableNames
)
{
if
(
each
.
endsWith
(
shardingValue
.
getValue
()
%
2
+
""
))
{
return
each
;
}
}
throw
new
UnsupportedOperationException
();
}
}
\ No newline at end of file
src/main/resources/application-sharding.yaml
浏览文件 @
6dc89fc9
...
...
@@ -28,18 +28,30 @@ spring:
jdbcUrl
:
jdbc:mysql://localhost:3306/laker?serverTimezone=GMT%2B8&characterEncoding=utf8&useSSL=false
username
:
root
password
:
123456
# 是否在日志中打印 SQ
mode
:
type
:
Standalone
sharding
:
tables
:
# 配置ext_log的分表的规则
ext_log
:
# 拥有几个分片表0-1
actual-data-nodes
:
ds.ext_log_$->{0..1}
# 表达式方式指定
# table-strategy:
# inline:
# sharding-column: user_id
# algorithmExpression: ext_log_${user_id % 2}
# 代码逻辑指定
table-strategy
:
inline
:
sharding-column
:
user_id
algorithmExpression
:
ext_log_${user_id % 2}
hint
:
algorithmClassName
:
com.laker.admin.framework.ext.sharding.ModuloHintShardingAlgorithm
# table-strategy:
# standard:
# shardingColumn: user_id
# preciseAlgorithmClassName: com.laker.admin.framework.ext.sharding.PreciseModuloShardingTableAlgorithm
keyGenerator
:
type
:
SNOWFLAKE
column
:
log_id
props
:
worker.id
:
123
# 是否在日志中打印逻辑SQL和实际sql
props
:
sql.show
:
true
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录