From 0afc0b489fba53b0a0b3bf4f58031b281dbb8617 Mon Sep 17 00:00:00 2001
From: byteblogs168 <598092184@qq.com>
Date: Mon, 17 Jul 2023 18:38:37 +0800
Subject: [PATCH] =?UTF-8?q?fix:=202.1.0=201.=20=E5=8D=87=E7=BA=A7=E4=BE=9D?=
=?UTF-8?q?=E8=B5=96=E5=8C=85=E7=89=88=E6=9C=AC=202.=20=E4=BF=AE=E6=94=B9g?=
=?UTF-8?q?etBlacklist=20NPE=E9=97=AE=E9=A2=98=203.=20=E5=88=A0=E9=99=A4hi?=
=?UTF-8?q?bernate-validator=E5=8C=85=E4=BD=BF=E7=94=A8spring-boot-starter?=
=?UTF-8?q?-validation?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 23 +++++++++--------
easy-retry-client-core/pom.xml | 9 -------
.../client/core/client/RetryEndPoint.java | 4 +--
.../XRetryClientCoreApplicationTests.java | 8 ------
easy-retry-client-starter/pom.xml | 13 +++++-----
.../XRetryClientStarterApplicationTests.java | 13 ----------
.../easy-retry-common-client-api/pom.xml | 6 +----
.../easy-retry-common-core/pom.xml | 9 +------
.../easy-retry-common-server-api/pom.xml | 12 +++------
easy-retry-common/pom.xml | 24 ------------------
easy-retry-server/pom.xml | 25 ++++++++-----------
.../access/config/MybatisConfigAccess.java | 4 +++
.../support/generator/TaskGenerator.java | 1 -
.../support/generator/task/TaskContext.java | 4 ++-
.../web/model/request/ServerNodeQueryVO.java | 3 ---
pom.xml | 14 +++--------
16 files changed, 47 insertions(+), 125 deletions(-)
delete mode 100644 easy-retry-client-core/src/test/java/com/x/retry/common/client/core/xretryclientcore/XRetryClientCoreApplicationTests.java
delete mode 100644 easy-retry-client-starter/src/test/java/com/x/retry/common/client/starter/xretryclientstarter/XRetryClientStarterApplicationTests.java
diff --git a/README.md b/README.md
index 20963f2b..06af831d 100644
--- a/README.md
+++ b/README.md
@@ -1,22 +1,24 @@
-
+
- 分布式重试服务平台 Easy-Retry
+ 🔥🔥🔥基于BASE思想实现的分布式服务重试组件
# 简介
->在分布式系统大行其道的当前,系统数据的准确性和正确性是重大的挑战,基于CAP理论,采用柔性事务,保障系统可用性以及数据的最终一致性成为技术共识
->为了保障分布式服务的可用性,服务容错性,服务数据一致性 以及服务间掉用的网络问题。依据"墨菲定律",增加核心流程重试,数据核对校验成为提高系统鲁棒性常用的技术方案
->
+> 在当前广泛流行的分布式系统中,确保系统数据的一致性和正确性是一项重大挑战。为了解决分布式事务问题,涌现了许多理论和业务实践,其中BASE理论是目前业界广泛接受的分布式一致性理论。
+> 基于BASE理论,采用柔性事务并优先保障系统的可用性和数据的最终一致性已逐渐成为技术共识。
+> 为了确保分布式服务的可用性和数据一致性,并防止由于网络抖动、连接超时等问题导致短时不可用的情况,根据"墨菲定律",在核心流程中增加重试和数据核对校验的动作成为提高系统鲁棒性常用的技术方案。
+> 在此背景下EasyRetry应运而生。EasyRetry是一款基于BASE思想实现的分布式服务重试组件,旨在通过重试机制确保数据的最终一致性。它提供了控制台任务观测、可配置的重试策略、重试后执行回调以及丰富地告警配置等功能。通过这些手段,可以对异常数据进行全面监测和回放,从而在确保系统高可用性的同时,大大提升数据的一致性。
+
> 通常的业务场景有:
-> + 保障系统稳定性,减少网络抖动导致异常,增加重试能力
+>+ 保障系统稳定性,减少网络抖动导致异常,增加重试能力
>+ 保障服务容错性,对核心流程进行拆分,在业务低峰期进行数据核对
>+ 保证信息的可达性,在服务间通知时增加重试
>
@@ -41,14 +43,13 @@
## 相关链接
- [字节跳动: 如何优雅地重试](https://juejin.cn/post/6914091859463634951)
-- [文档](https://www.easyretry.com/pages/a2f161/)
-- [功能实例](https://www.easyretry.com/pages/960e25/)
+- [文档](https://www.easyretry.com/pages/d1d1da/)
+- [HelloWorld](https://www.easyretry.com/pages/da9ecc/)
## 原理
-- [客户端原理剖析](https://gitee.com/aizuda/easy-retry/tree/dev/example)
-- [服务端原理剖析](https://gitee.com/aizuda/easy-retry/tree/dev/example)
+- [架构与功能](https://www.easyretry.com/pages/540554/)
## 应用实例
-- [Spring-Boot](https://gitee.com/aizuda/easy-retry/tree/dev/example)
+- [Spring-Boot](https://gitee.com/zhangyutongxue/easy-retry-demo)
## 期望
欢迎提出更好的意见,帮助完善 Easy-Retry
diff --git a/easy-retry-client-core/pom.xml b/easy-retry-client-core/pom.xml
index 464264c3..eb922393 100644
--- a/easy-retry-client-core/pom.xml
+++ b/easy-retry-client-core/pom.xml
@@ -25,10 +25,6 @@
spring-boot-starter-web
provided
-
- org.springframework.boot
- spring-boot-starter-jdbc
-
org.springframework.boot
spring-boot-starter-aop
@@ -48,11 +44,6 @@
cn.hutool
hutool-all
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
com.aizuda
easy-retry-common-core
diff --git a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java b/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java
index a6a77ab3..76371930 100644
--- a/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java
+++ b/easy-retry-client-core/src/main/java/com/aizuda/easy/retry/client/core/client/RetryEndPoint.java
@@ -60,7 +60,7 @@ public class RetryEndPoint {
* 服务端调度重试入口
*/
@PostMapping("/dispatch/v1")
- public Result dispatch(@RequestBody DispatchRetryDTO executeReqDto) {
+ public Result dispatch(@RequestBody @Validated DispatchRetryDTO executeReqDto) {
RetryerInfo retryerInfo = RetryerInfoCache.get(executeReqDto.getScene(), executeReqDto.getExecutorName());
if (Objects.isNull(retryerInfo)) {
@@ -119,7 +119,7 @@ public class RetryEndPoint {
}
@PostMapping("/callback/v1")
- public Result callback(@RequestBody RetryCallbackDTO callbackDTO) {
+ public Result callback(@RequestBody @Validated RetryCallbackDTO callbackDTO) {
RetryerInfo retryerInfo = RetryerInfoCache.get(callbackDTO.getScene(), callbackDTO.getExecutorName());
if (Objects.isNull(retryerInfo)) {
throw new EasyRetryClientException("场景:[{}]配置不存在", callbackDTO.getScene());
diff --git a/easy-retry-client-core/src/test/java/com/x/retry/common/client/core/xretryclientcore/XRetryClientCoreApplicationTests.java b/easy-retry-client-core/src/test/java/com/x/retry/common/client/core/xretryclientcore/XRetryClientCoreApplicationTests.java
deleted file mode 100644
index b69a8c9d..00000000
--- a/easy-retry-client-core/src/test/java/com/x/retry/common/client/core/xretryclientcore/XRetryClientCoreApplicationTests.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.x.retry.common.client.core.xretryclientcore;
-
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class XRetryClientCoreApplicationTests {
-
-}
diff --git a/easy-retry-client-starter/pom.xml b/easy-retry-client-starter/pom.xml
index e239be0e..33139eb1 100644
--- a/easy-retry-client-starter/pom.xml
+++ b/easy-retry-client-starter/pom.xml
@@ -20,18 +20,17 @@
org.springframework.boot
- spring-boot-starter
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
+ spring-boot-starter-web
+ provided
com.aizuda
easy-retry-client-core
+
+ org.springframework
+ spring-tx
+
diff --git a/easy-retry-client-starter/src/test/java/com/x/retry/common/client/starter/xretryclientstarter/XRetryClientStarterApplicationTests.java b/easy-retry-client-starter/src/test/java/com/x/retry/common/client/starter/xretryclientstarter/XRetryClientStarterApplicationTests.java
deleted file mode 100644
index 84ca6732..00000000
--- a/easy-retry-client-starter/src/test/java/com/x/retry/common/client/starter/xretryclientstarter/XRetryClientStarterApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.x.retry.common.client.starter.xretryclientstarter;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class XRetryClientStarterApplicationTests {
-
- @Test
- void contextLoads() {
- }
-
-}
diff --git a/easy-retry-common/easy-retry-common-client-api/pom.xml b/easy-retry-common/easy-retry-common-client-api/pom.xml
index 32bfd9a5..86ca72f7 100644
--- a/easy-retry-common/easy-retry-common-client-api/pom.xml
+++ b/easy-retry-common/easy-retry-common-client-api/pom.xml
@@ -21,7 +21,7 @@
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-validation
@@ -34,10 +34,6 @@
com.aizuda
easy-retry-common-core
-
- org.hibernate
- hibernate-validator
-
diff --git a/easy-retry-common/easy-retry-common-core/pom.xml b/easy-retry-common/easy-retry-common-core/pom.xml
index 9f8c09ab..3acf7b30 100644
--- a/easy-retry-common/easy-retry-common-core/pom.xml
+++ b/easy-retry-common/easy-retry-common-core/pom.xml
@@ -23,26 +23,19 @@
org.springframework.boot
spring-boot-starter-web
-
org.projectlombok
lombok
true
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
com.aliyun
alibaba-dingtalk-service-sdk
-
commons-configuration
commons-configuration
- 1.8
+ 1.10
javax.validation
diff --git a/easy-retry-common/easy-retry-common-server-api/pom.xml b/easy-retry-common/easy-retry-common-server-api/pom.xml
index c389d814..770e72ac 100644
--- a/easy-retry-common/easy-retry-common-server-api/pom.xml
+++ b/easy-retry-common/easy-retry-common-server-api/pom.xml
@@ -19,23 +19,19 @@
-
- org.springframework.boot
- spring-boot-starter-web
-
org.projectlombok
lombok
true
-
- org.hibernate
- hibernate-validator
-
com.aizuda
easy-retry-common-core
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
diff --git a/easy-retry-common/pom.xml b/easy-retry-common/pom.xml
index 46c3ba8b..7df93c6a 100644
--- a/easy-retry-common/pom.xml
+++ b/easy-retry-common/pom.xml
@@ -24,28 +24,4 @@
easy-retry-common-core
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/easy-retry-server/pom.xml b/easy-retry-server/pom.xml
index 716fcf4e..9e55529d 100644
--- a/easy-retry-server/pom.xml
+++ b/easy-retry-server/pom.xml
@@ -18,13 +18,14 @@
1.8
true
1.5.3.Final
- 2.6.20
- 4.3.0
+ 2.6.21
+ 4.4.0
4.0.1
- 4.10.0
+ 5.0.0-alpha.11
2.6
0.9.16
- 8.0.32
+ 8.0.33
+ 32.0.0-jre
@@ -32,6 +33,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
com.baomidou
mybatis-plus-boot-starter
@@ -50,7 +55,7 @@
com.google.guava
guava
- 31.1-jre
+ ${guava.version}
org.projectlombok
@@ -133,16 +138,6 @@
perf4j
${perf4j.version}
-
- org.hibernate
- hibernate-validator
-
-
- org.jetbrains
- annotations
- 13.0
- compile
-
diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/support/access/config/MybatisConfigAccess.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/support/access/config/MybatisConfigAccess.java
index e3f06d18..65966c71 100644
--- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/support/access/config/MybatisConfigAccess.java
+++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/persistence/support/access/config/MybatisConfigAccess.java
@@ -10,6 +10,7 @@ import org.springframework.util.CollectionUtils;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -62,6 +63,9 @@ public class MybatisConfigAccess extends AbstractConfigAccess {
public Set getBlacklist(String groupName) {
GroupConfig groupConfig = getByGroupName(groupName);
+ if (Objects.isNull(groupConfig)) {
+ return Collections.EMPTY_SET;
+ }
LambdaQueryWrapper sceneConfigLambdaQueryWrapper = new LambdaQueryWrapper()
.eq(SceneConfig::getSceneName, groupName);
diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/TaskGenerator.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/TaskGenerator.java
index a4cea93b..e4ec3d76 100644
--- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/TaskGenerator.java
+++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/TaskGenerator.java
@@ -23,7 +23,6 @@ public interface TaskGenerator {
* 任务生成器
*
* @param taskContext 任务列表
- * @return 成功处理的数据量
*/
void taskGenerator(TaskContext taskContext);
}
diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/TaskContext.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/TaskContext.java
index fa5a027a..0ad77570 100644
--- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/TaskContext.java
+++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/support/generator/task/TaskContext.java
@@ -5,9 +5,11 @@ import lombok.Data;
import java.util.List;
/**
+ * 任务生成器上下文
+ *
* @author www.byteblogs.com
* @date 2023-07-16 21:26:52
- * @since
+ * @since 2.1.0
*/
@Data
public class TaskContext {
diff --git a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ServerNodeQueryVO.java b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ServerNodeQueryVO.java
index dfc71751..7b256a9d 100644
--- a/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ServerNodeQueryVO.java
+++ b/easy-retry-server/src/main/java/com/aizuda/easy/retry/server/web/model/request/ServerNodeQueryVO.java
@@ -2,9 +2,6 @@ package com.aizuda.easy.retry.server.web.model.request;
import com.aizuda.easy.retry.server.web.model.base.BaseQueryVO;
import lombok.Data;
-import org.hibernate.validator.constraints.NotBlank;
-
-import javax.validation.constraints.NotNull;
/**
diff --git a/pom.xml b/pom.xml
index 06a433eb..0e974fd7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,12 +21,11 @@
1.8
1.8
1.8
- 2.0.1
+ 2.1.0-SNAPSHOT
1.0.0
- 5.4.2.Final
- 4.1.48.Final
- 5.7.21
- 3.5.1
+ 4.1.94.Final
+ 5.8.19
+ 3.5.3.1
2.0.0
@@ -82,11 +81,6 @@
mybatis-plus-boot-starter
${mybatis-plus.version}
-
- org.hibernate
- hibernate-validator
- ${hibernate-validator.version}
-