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

news/2025/2/25 14:36:22

根据你的需求,以下是一些基于 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.niftyadmin.cn/n/5865614.html

相关文章

CES Asia 2025,技术创新成招商强引力

近日,2025年中国经济白皮书正式发布,为第七届亚洲消费电子技术贸易展(CES Asia 2025)的招商工作注入强大动力,其在技术创新方面展现出的显著优势,成为吸引全球科技企业的关键因素。 白皮书全面展示了中国在…

C#文件操作

文件类File 常用方法介绍Open()打开文件Create()创建文件Copy()复制文件Delete()删除文件Exists()判断文件是否存在Move()移动文件Replace()替换文件AppendAllText()新建并添加文本ReadAllText()打开并读取文本内容 1.读取文件 1.创建一个Filestream 对象 (引入System.IO命名…

Linux版本控制器Git【Ubuntu系统】

文章目录 **前言**一、版本控制器二、Git 简史三、安装 Git四、 在 Gitee/Github 创建项目五、三板斧1、git add 命令2、git commit 命令3、git push 命令 六、其他1、git pull 命令2、git log 命令3、git reflog 命令4、git stash 命令 七、.ignore 文件1、为什么使用 .gitign…

Deepseek引爆AI热潮 防静电地板如何守护数据中心安全

近期,Deepseek的爆火将人工智能推向了新的高度,也引发了人们对AI背后基础设施的关注。作为AI运行的“大脑”,数据中心承载着海量数据的存储、处理和传输,其安全稳定运行至关重要。而在这背后,防静电地板扮演着不可或缺…

告别阻塞,迎接高效:掌握 AsyncIOScheduler 实现异步任务调度

前言 时间在编程中是宝贵的,直接关联到效率与灵活性,尤其在异步编程里,如何优雅地管理定时任务简直是一门“艺术”。如果你还在用 time.sleep() 来控制延时任务,恐怕你早已体会过它的“痛苦”:程序卡住、线程阻塞、性能急剧下滑。想象一下,你的程序如同一个永远无法按时…

HTML应用指南:利用GET请求获取全国泸溪河门店位置信息

随着新零售业态的快速发展,门店位置信息的获取变得越来越重要。作为新兴烘焙品牌之一,泸溪河自2013年在南京创立以来,一直坚持“健康美味,香飘世界”的企业使命,以匠人精神打造新中式糕点。为了更好地理解和利用这些数据,本篇文章将深入探讨GET请求的实际应用,并展示如何…

力扣3464. 正方形上的点之间的最大距离

力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …

线性模型 - 支持向量机(参数学习)

支持向量机的主优化问题为凸优化问题,满足强对偶性,即主优化问题可以 通过最大化对偶函数来求解。对偶函数是一个凹函数,因此最大化对偶函数是一个凸优化问题,可以通过多种凸优化方法来进行求解,得到拉格朗日乘数的最优…