根据你的需求,以下是一些基于 Akka 实现的分布式定时任务框架,以及相关的 GitHub 项目推荐:
1. Openjob
Openjob 是一个基于 Akka 架构的新一代分布式任务调度框架,支持多种定时任务、延时任务、工作流计划,采用无中心化架构,底层利用同等性分片算法,支持无穷程度扩容。
- 特性:
- 高可靠:分布式无状态计划,支持多样的数据库(H2/MySQL/PostgreSQL/Oracle/TiDB)。
- 高性能:底层利用同等性分片算法,全程无锁化计划,任务调度准确到秒级别,支持轻量级分布式计算、无穷程度扩容。
- 定时调度:支持分布式定时任务、固定频率任务、高性能秒级任务、一次性任务定时调度。
- 分布式计算:支持单机、广播、Map、MapReduce 和分片多种分布式编程模型,轻松实现大数据分布式计算。
- 延时任务:基于 Redis 实现高性能延时任务,底层实现任务多级存储,提供丰富的统计和报表。
- 工作流:内置工作流调度引擎,支持可视化 DAG 计划,简朴高效实现复杂任务调度。
- 权限管理:完善的用户管理,支持菜单、按钮以及数据权限设置,灵活管理用户权限。
- 报警监控:全面的监控指标,丰富实时的报警方式,便于运维职员快速定位和解决线上问题。
- 跨语言:原生支持 Java/Go/PHP/Python 多语言,以及 Spring Boot、Gin、Swoft 等框架集成。
- GitHub 项目地点:Openjob GitHub 。
2. k-job
k-job 是一个基于 PowerJob 重写和重构的分布式任务框架,支持定时任务、负载均衡和 OpenAPI 异步调用。
- 特性:
- 支持定时任务频繁创建和任务参数频繁动态变动的场景。
- 支持大量定时任务并发执行,实现负载均衡。
- 主要针对小型任务,无需过多设置,不对任务实例举行操纵。
- 技术选型:
- 通讯:gRPC(基于 Netty 的 NIO)。
- 序列化:Protobuf 编码格式。
- 负载均衡:自实现的注册中心 NameServer。
- 消息队列:自实现的简易消息队列,支持异步发送、超时重试和多级延时队列。
- 定时调度:时间轮算法。
- GitHub 项目地点:k-job GitHub 。
3. Akka Quartz Scheduler
Akka Quartz Scheduler 是一个为 Akka 添加定时任务管理的工具,基于 Quartz 调度器实现。
- 特性:
- 结合 Akka 的 Actor 模型和 Quartz 的调度功能,实现定时任务的管理。
- 支持复杂的调度策略和任务持久化。
- GitHub 项目地点:Akka Quartz Scheduler GitHub 。
4. ShedLock
虽然 ShedLock 不是基于 Akka 的,但它是一个轻量级的分布式锁解决方案,可以与 Spring 的 @Scheduled 注解配合利用,确保分布式环境下的任务只被一个实例执行。
- 特性:
- 支持多种数据库(如 MySQL、PostgreSQL 等)作为锁存储。
- 简朴易用,与 Spring 的 @Scheduled 注解无缝集成。
- 支持锁的超时机制,防止任务执行时间过长导致的锁无法释放。
- GitHub 项目地点:ShedLock GitHub 。
5. Elastic-Job
Elastic-Job 是一个分布式调度解决方案,基于 Quartz 和 Zookeeper 实现。
- 特性:
- 分布式调度调和、弹性扩容缩容、失效转移、错过执行作业重触发等。
- 支持任务分片,确保同一分片在分布式环境中仅一个执行实例。
- 提供丰富的作业类型和运维平台。
- GitHub 项目地点:Elastic-Job GitHub 。
推荐
如果你正在探求一个高性能、支持多种任务类型(包罗定时任务、延时任务、工作流计划)的分布式任务调度框架,Openjob 是一个不错的选择。它基于 Akka 架构,支持无穷程度扩容,提供了丰富的功能和良好的扩展性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |