组配置
# 组是何物
仅支持仅支持数字字母下划线且最多64个字符组成
组是一个逻辑概念,它可以被视为场景的分类或标签,用于将一些相关性的场景进行分组。类似于消息队列(MQ)中的Topic和Queue的关系,组在某种程度上可以实现类似的功能。 在消息队列中,Topic用于发布订阅模式,将消息发布到相应的主题,而Queue用于点对点模式,消息在队列中被消费。类似地,组可以用于将不同场景或任务进行逻辑分类,从而实现更好的组织和管理。 在服务端的组负载均衡器中,也使用了组的概念。它将不同的组分配到不同的服务端集群中的某个节点。这种分组可以使得不同的场景或任务在服务端得到适当的分配和处理,提高了整体系统的负载均衡性能和效率。 通过使用组,可以更好地管理和组织场景,将相关性较高的场景聚集在一起,便于系统的管理和运维。同时,组也为分布式系统提供了更好的负载均衡和资源分配方式,确保不同场景或任务得到合理的处理,提高了系统的稳定性和可靠性。
# 什么是组状态
组状态控制组的启用和停止。
- 状态是关闭或者开始都是允许数据的上报
- 状态是关闭不会参与组负载均衡器的分配
- 由关闭->打开或者由打开->关闭都会触发组负载均衡器的rebalance机制
- 状态是关闭不对扫描该组的任何任务
# 什么是路由策略
客户端为集群模式时,在下发重试流量时需要根据路由策略匹配一个客户端执行具体的重试任务或者回调任务. 更多功能可参考通信模块
目前支持三种算法(后期根据需求将继续扩展)
- 一致性Hash算法
- LRU算法
- 随机算法
# 什么是分区
easy retry 采用了分表的模式,这样可以支撑更多的数据提高系统的高性能和可用性
其中retry_task_{0~N-1}和retry_dead_letter_{0~N-1}采用分表策略, 分区总数配置如下
easy-retry:
total-partition: N # 重试和死信表的分区总数
easy-retry.total-partition: N # 重试和死信表的分区总数
// Make sure to add code blocks to your code group
🌈特别说明
- Easy Retry不支持自动建表功能,若是指定分区的表不存在则不能保存成功. 因此在搭建系统时应初始化好相关的表结构.
- 若不指定分区则由系统默认分配一个分区,支持变更分区.
- 分区一旦变更后,原本分区内的数据将不在进行处理.
# 什么是id生成模式
由于easy retry是分布式的系统,任务表也是采用分表模式,所以为了更好的标记重试任务的唯一性,easy retry使用业内比较成熟的分布式id生成算法生成uniqueId
目前支持一下id生成算法
- 号段模式: 采用业界成熟的美团开源的分布式ID生成器(leaf) (opens new window)的号段模式
- 雪花算法: 使用hutool自带的雪花算法生成id,若出现时间回拨问题则直接报错
# 什么是初始化场景
为了更简单方便的使用EasyRetry,我们支持了场景默认初始化功能.
- 若选择【是】:当未查询到场景时默认生成一个场景(退避策略: 等级策略, 最大重试次数: 21);
- 若选择【否】:新增场景时必须先配置场景,否则上报失败
上次更新: 2024/04/07, 10:27:31