From 6d5df140e0fd5a399889f64e0e6fceaefb100023 Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Sat, 14 Jan 2023 19:55:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/X-RETRY文档.md | 78 ++++++++++++++++++++++++++++------ pom.xml | 8 ++++ x-retry-client-core/pom.xml | 8 ++++ x-retry-client-starter/pom.xml | 8 ++++ x-retry-server/pom.xml | 5 +-- 5 files changed, 91 insertions(+), 16 deletions(-) diff --git a/doc/X-RETRY文档.md b/doc/X-RETRY文档.md index 7c1afbf30..c8ec74490 100644 --- a/doc/X-RETRY文档.md +++ b/doc/X-RETRY文档.md @@ -2,21 +2,75 @@ # 简介 -X-RETRY 是基于异常重试同时支持客户端与服务端重试的高性能分布式异常重试平台,具有接入简单、操作方便、支持动态化配置等特性。 +X-RETRY 基于服务治理的思想我们开发了重试治理的功能,支持动态配置,接入方式基本无需入侵业务代码,并使用多种策略结合的方式在链路层面控制重试放大效应,兼顾易用性、灵活性、安全性的分布式异常重试服务平台 # 社区 +https://www.byteblogs.com/chat # 特性 1. 管控重试流量,预防重试风暴,及早发现和预警,并且提供流程管理手段 -2. 保证易用性,业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 -3. 具有灵活性,能够动态调整配置。 -4. 操作简单,一分钟上手,支持WEB页面对重试数据CRUD操作。 -5. 数据大盘,实时管控系统重试数据。 -6. 支持动态修改重试场景,启动/停止任务,以及终止运行中的重试数据, -7. 多样化退避策略 eg: Cron、固定间隔、等级触发、随机时间触发 -8. 部署简单 - 支持docker容器部署 -9. 高性能调度平台 - 支持服务端节点动态扩容 -10. 支持ONLY_LOCAL、ONLY_REMOTE、LOCAL_REMOTE多种重试类型 -11. 可以做到重试数据不丢失、重试数据一键回放 -12. 支持多样化的告警方式 - 邮箱、企业微信、钉钉 +2. 保证易用性: 业务接入成本小。避免依赖研发人员的技术水平,保障重试的稳定性 +3. 灵活性: 能够动态调整配置,启动/停止任务,以及终止运行中的重试数据 +4. 操作简单:一分钟上手,支持WEB页面对重试数据CRUD操作。 +5. 数据大盘: 实时管控系统重试数据。 +6. 多样化退避策略: Cron、固定间隔、等级触发、随机时间触发 +7. 容器化部署: 服务端支持docker容器部署 +8. 高性能调度平台: 支持服务端节点动态扩容和缩容 +9. 多样化重试类型: 支持ONLY_LOCAL、ONLY_REMOTE、LOCAL_REMOTE多种重试类型 +10. 重试数据管理: 可以做到重试数据不丢失、重试数据一键回放 +11. 支持多样化的告警方式: 邮箱、企业微信、钉钉 + +# 快速入门 +## 添加依赖 +```java + + com.x.retry + x-retry-client-starter + 0.0.0.1-SNAPSHOT + +``` + +## 配置 +添加注解开启X-RETRY功能 +```java +@SpringBootApplication +@EnableXRetry(group = "example_group") +public class ExampleApplication { + + public static void main(String[] args) { + SpringApplication.run(ExampleApplication.class, args); + } + +} +``` + +为需要重试的方法添加重试注解 +```java +@Retryable(scene = "errorMethodForLocalAndRemote", localTimes = 3, retryStrategy = RetryType.LOCAL_REMOTE) + public String errorMethodForLocalAndRemote(String name) { + + double i = 1 / 0; + + return "这是一个简单的异常方法"; + } +``` +## Retryable 详解 +|属性|类型|必须指定|默认值|描述| +|-|-|-|-|-| +| scene |String|是|无|场景| +| include | Throwable |否|无|包含的异常| +| exclude |Throwable|否|无|排除的异常| +| retryStrategy|RetryType|是|LOCAL_REMOTE|重试策略| +| retryMethod|RetryMethod|是|RetryAnnotationMethod|重试处理入口| +| bizId | BizIdGenerate |是| SimpleBizIdGenerate |自定义业务id,默认为hash(param),传入成员列表,全部拼接取hash| +| bizNo |String|否|无| bizNo spel表达式| +| localTimes |int|是|3| 本地重试次数 次数必须大于等于1| +| localInterval |int|是|2| 本地重试间隔时间(s)| + +## 初始化数据库 +数据库脚本位置 +``` +doc/sql/x_retry.sql +``` + diff --git a/pom.xml b/pom.xml index 2c17bd9bf..5e48f078a 100644 --- a/pom.xml +++ b/pom.xml @@ -89,6 +89,14 @@ + + + github + GitHub OWNER Apache Maven Packages + https://maven.pkg.github.com/byteblogs168/x-retry + + + diff --git a/x-retry-client-core/pom.xml b/x-retry-client-core/pom.xml index 3154111fa..1373dda59 100644 --- a/x-retry-client-core/pom.xml +++ b/x-retry-client-core/pom.xml @@ -76,6 +76,14 @@ + + + github + GitHub OWNER Apache Maven Packages + https://maven.pkg.github.com/byteblogs168/x-retry + + + diff --git a/x-retry-client-starter/pom.xml b/x-retry-client-starter/pom.xml index 3a84cc3e5..93fa02263 100644 --- a/x-retry-client-starter/pom.xml +++ b/x-retry-client-starter/pom.xml @@ -34,4 +34,12 @@ + + + github + GitHub OWNER Apache Maven Packages + https://maven.pkg.github.com/byteblogs168/x-retry + + + diff --git a/x-retry-server/pom.xml b/x-retry-server/pom.xml index df2108cb2..2fc084ec8 100644 --- a/x-retry-server/pom.xml +++ b/x-retry-server/pom.xml @@ -16,6 +16,7 @@ 1.8 + true @@ -117,10 +118,6 @@ 1.8 - - org.springframework.boot - spring-boot-maven-plugin - org.apache.maven.plugins maven-surefire-plugin