系统概念
🌈EasyRetry 概念
EasyRetry 引入了一些基本的概念,系统性的了解一下这些概念可以帮助您更好的理解和正确的使用 EasyRetry 产品。
# 视频教程
从0到1快速了解分布式重试组件EasyRetry -【系统核心功能介绍】 (opens new window)
# ⚡组 (group)
组不支持自动创建,在使用前必须在控制台手动创建一个组
组是一个逻辑概念, 它可以看做是场景的分类或者是标签, 用于将一些相关性的场景进行分组,可以理解为MQ的Topic和Queue的关系; 服务端的负载均衡也是基于组 把不同的组分配到不同的服务端集群的其中一个节点。
# ⚡场景(scene)
在配置组时选择自动创建场景,则系统发现存在场景时会自动创建一个场景
每个组对应N个场景且同一个组不能有相同的场景,场景是系统配置的最小单位
# ⚡重试策略(retryStrategy)
本地重试: 与SpringRetry
或者GuavaRetry
模式一样,仅在内存重在一定时间范围内进行N次的重试
远程重试: 将异常的数据上报到服务端,服务端依据对应场景配置的退避策略、重试上限等进行重试流量下发
# ⚡幂等id(idempotentId)
同一个组的同一个场景下只会存在一个相同的idempotentId并且状态为'重试中'的任务, 若存在相同的则上报服务后会被幂等处理 比如:
- 组: AGroup
- 场景: BScene
- 时刻1: 上报一个异常 idempotentId: A1 状态为重试中
- 时刻2: 上报一个异常 idempotentId: A2 状态为重试中,可以上报成功,此时存在两个重试任务
- 时刻3: 上报一个异常 idempotentId: A1 不会新增一个重试任务,会被幂等处理
- 时刻4: idempotentId: A1 重试完成, 状态为已完成
- 时刻5: 上报一个异常 idempotentId: A1 状态为重试中, 新增一条重试任务
# ⚡业务编号(bizNo)
用于标识具有业务特点的值, 比如订单号、物流编号等,可以根据具体的业务场景生成,生成规则采用通用成熟的Spel表达式进行解析
# ⚡回调
重试任务状态为终态时(完成或到达最大次数),系统会产生一条与之对应的回调任务,客户端根据自身的业务特点执行一些操作,比如告警等
上次更新: 2024/04/07, 10:27:31