Aizuda/EasyRetry动态: 经过一个月的苦战, Easy Retry 终于完成了集分布式任务重试和分布式任务调度二合一平台.

464 阅读4分钟

源码地址:

gitee.com/aizuda/easy…

系统最新版本:

2.4.0

系统介绍:

Easy Retry是一个灵活,可靠和快速的分布式任务重试和分布式任务调度平台,支持可重放,可管控、为提高分布式业务系统一致性的分布式任务重试平台和支持秒级、可中断、可编排的高性能分布式任务调度平台。 具备高度可伸缩性和容错性,还包含完善的权限管理和强大的告警监控功能。 一次部署即可获得重试和任务调度功能,为开发人员提供了简单而高效的解决方案,可处理分布式系统中的失败操作和定时调度任务。

在分布式系统中,任务失败是不可避免的,可能由网络问题、服务故障等原因引起。Easy Retry的重试模块旨在帮助开发人员处理这些失败,确保任务能够在失败后正确重试,提升系统稳定性和可靠性。 平台提供直观用户界面,方便开发人员配置任务的重试策略和调度规则。支持多种重试策略,如指数退避、固定间隔等,开发人员可根据业务需求选择最适合的策略。

分布式任务调度模块是高性能的任务调度框架,无需依赖外部中间件即可实现秒级任务间隔调度。支持多种执行模式,如集群模式、广播模式和分片模式,同时提供多种阻塞策略,如丢弃、覆盖和并行,以提高任务执行效率。平台还提供监控和日志功能,帮助开发人员实时监控任务执行状态。

本期更新核心内容:

  1. 支持分布式任务调度【新增】
  2. 支持重试场景执行超时时间设置【新增】
  3. 支持通过动态计算提升系统获取任务的数量,提供系统的调度速率【新增】
  4. 使用bucket机制优化负载均衡的机制【新增】
  5. 使用时间轮优化重试任务调度,大大提高了调度的准确度【新增】
  6. 通过使用不同akka的dispatcher减小任务之间的相互影响【新增】
  7. 修复了分布式锁所有节点都获取锁失败的问题 【BUG】
  8. 镜像支持linux/arm64,linux/amd64两种系统架构【新增】
  9. 优化客户端注册续约问题【优化】
  10. 重试任务调度日志详情新增ip地址,端口,目的方便查看相关路由信息【新增】

更新内容详解:

一、分布式任务调度【新增】

分布式任务调度平台是利用了系统无锁化设计采用多bucket模式,借助负载均衡算法,确保每个节点能够均衡处理任务,同时支持无限水平扩展,轻松应对海量任务调度.

  1. 秒级任务

采用常驻任务模式实现秒级任务调度且无需依赖任何中间件

  • 配置无需区别是否是秒级别任务还是常规任务, 支持最小间隔1秒
image.png
  • 执行结果展示
image.png
  1. 支持Cron表达式在线配置

支持近五次的7运行 image.png

  1. 静态分片模式配置

相比手动添加分片参数: 0=我是分片1;1=我是分片2; 我们提供了便捷的操作界面, 用户体验大大提升

image.png
  1. 阻塞策略

支持丢弃、覆盖、并行三种阻塞策略

下面是演示了丢失策略, 覆盖、并行策略可自行测试

image.png image.png

二、支持重试场景执行超时时间设置【新增】

由于每个场景的执行时长不同, 因此需要根据具体的场景配置合适超时时间, 极大提高了重试的成功率

image.png

本期更新的内容较多, 这里只是简单的介绍部分功能,如果需要更深入了解[EasyRetry](www.easyretry.com/)可以阅读官网.

下期【2.5.0】我们将支持功能如下:

  • 新增命名空间概念,多环境数据隔离
  • Dashboard 支持定时任务的统计
  • 通知配置支持@具体的开发人员
  • 支持重试次数到达N次时告警
  • 支持重试数据进入死信队列告警
  • 支持定时任务执行失败告警