akka现有的分布式定时任务框架总结

ops/2025/2/26 7:43:58/

根据你的需求,以下是一些基于 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 架构,支持无限水平扩容,提供了丰富的功能和良好的扩展性。


http://www.ppmy.cn/ops/161377.html

相关文章

【工欲善其事】2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战

文章目录 2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战1 前言2 本地部署准备工作3 具体安装步骤4 命令行启动测试5 GUI 界面启动测试6 相关资源一站式下载 2025 年实现听书自由——基于 Kokoro-82M 的开源 TTS 工具 audiblez 本地部署实战 …

Docker基础-常见命令

docker images -查看所有的本地镜像。 docker pull -把远端镜像拉取到本地。 docker rmi -删除镜像。 docker push -推到镜像仓库。 docker run -创建并运行容器(自动化,如果发现镜像不存在会先去拉取, 拉取完了以后再去自动创建容器&am…

从工程师到系统架构设计师

在技术领域,从一名初出茅庐的工程师成长为独当一面的系统架构设计师,是一条需要长期积累、持续突破的路径。这一过程不仅需要扎实的技术功底,更需要思维的升级和视野的拓展。以下将结合不同阶段的特征,为你梳理一条清晰的成长路线…

java面试项目介绍,详细说明

金三银四少走弯路,Java岗面试冲刺,你与大厂只差这篇文章包括面试准备,帮助大家少走弯路,成功入职大厂,并快速成长落地。 祝大家拿到满意的offer!(把许愿的offer发在评论区,一定会实现的) 主要从四大方面:掌握的主要知识、算法、项目、简历 掌握的主要知识 下面是我看过的资料和…

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration,这个对象里面有compareDate字段,刚好表格查询的对象也是FakeRegistration,所以表格展示的时间就是刚才…

【AAAI2025】风车卷积替代标准卷积,增强了底层特征提取能力

Pinwheel-shaped Convolution and Scale-based Dynamic Loss for Infrared Small Target Detection 基于风车形卷积和尺度动态损失的红外小目标检测 风车形卷积(PConv)模块: 作者提出了一种新颖的风车形卷积(PConv)…

【C++ 真题】P2814 家谱

P2814 家谱 题目背景 现代的人对于本家族血统越来越感兴趣。 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先。 输入格式 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系中父亲只有一行&#xf…

中华人民共和国著作权法

目录 中华人民共和国著作权法 第一章 总则 第二章 著作权 第一节 著作权人及其权利 第二节 著作权归属 第三节 权利的保护期 第四节 权利的限制 第三章 著作权许可使用和转让合同 第四章 与著作权有关的权利 第一节 图书、报刊的出版 第二节 表  演 第…