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

根据你的需求,以下是一些基于 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.mzph.cn/diannao/70718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序地图map全方位解析

微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具&#xff0c;可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点&#xff1a; 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…

Python的PyTorch+CNN深度学习技术在人脸识别项目中的应用

人脸识别技术是一种基于人脸特征进行身份识别的生物识别技术&#xff0c;其核心原理包括人脸检测、人脸对齐、特征提取、特征匹配、身份识别。 一、应用场景 安防&#xff1a;门禁、监控。 金融&#xff1a;刷脸支付、身份验证。 社交&#xff1a;自动标注、美颜。 医疗&am…

《数据库索引设计与优化》译本错误纠正(1)

今天在学习《数据库索引设计与优化》第十一章第198页的时候遇到一个问题&#xff0c;即参数的文字描述与实际不符。我看的是从网络上找到的译本&#xff0c;许多喜欢白嫖的朋友可能也会像我一样遇到这种问题。 可以看到&#xff0c;上面对参数Z的描述是&#xff1a;Z上一次索引…

API测试工具:Swagger vs Postman 2025最新全面对比

随着微服务架构的普及和云原生应用的激增&#xff0c;高效的 API 开发、测试和文档管理工具变得越来越重要。在众多 API 工具中&#xff0c;Swagger 和 Postman 各自以不同的方式解决着 API 开发生命周期中的关键问题&#xff0c;本文将从多个维度深入对比这两款工具&#xff0…

如何查询SQL Server数据库服务器的IP地址

如何查询SQL Server数据库服务器的IP地址 作为数据库管理员或开发人员&#xff0c;了解如何查询SQL Server数据库服务器的IP地址是一项重要技能。本文将介绍几种简单而有效的方法&#xff0c;帮助你轻松获取这一信息。无论你是新手还是经验丰富的专业人士&#xff0c;这些方法…

centos 7 安装python3 及pycharm远程连接方法

安装openssl 使用pip3安装 virtualenv的时候会提示WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 这是因为缺少openssl 2.0以上版本 解决办法&#xff1a; 一、先确认版本 openssl version 二、安…

AI人工智能之机器学习sklearn-数据预处理和划分数据集

1、概要 本篇学习AI人工智能之机器学习sklearn数据预处理和划分数据集&#xff0c;从代码层面讲述如何进行数据的预处理和数据集划分。 2、简介 本片讲述数据预处理的标准化处理、归一化处理&#xff0c;以常用的两个类为例 标准化处理类 StandardScaler归一化处理类 MinMax…

智能硬件-01智能停车场

行业背景 随着现代人们生活水平的提高&#xff0c;私家车辆在不断增加&#xff0c;小区将面临着临时车用户要多于固定车用户的窘境&#xff0c;尤其是在早晚高峰时段车辆出入拥堵&#xff0c;对小区的车辆管理难度越来越大&#xff0c;对停车场收费员的岗位要求越来越高&#…

定长内存池的实现、测试及错误分析

背景 C/C 申请内存使用的是 malloc &#xff0c;malloc 其实就是一个大众货&#xff0c;什么场景下都可以用&#xff0c;但是什么场景下都可以用就意味着什么场景下都不会有很高的性能。 定长内存池解决固定大小的内存申请释放需求&#xff0c; 性能达到极致&#xff0c;不考…

vue3 下载文件 responseType-blob 或者 a标签

在 Vue 3 中&#xff0c;你可以使用 axios 或 fetch 来下载文件&#xff0c;并将 responseType 设置为 blob 以处理二进制数据。以下是一个使用 axios 的示例&#xff1a; 使用 axios 下载文件 首先&#xff0c;确保你已经安装了 axios&#xff1a; npm install axios然后在你…

Search API:让数据获取变得简单高效的搜索引擎代理商

Search API&#xff1a;让数据获取变得简单高效的搜索引擎代理商 在当今数字化时代&#xff0c;数据驱动的决策变得越来越重要&#xff0c;而获取精准、实时的数据是众多企业、研究机构和开发者的核心需求。然而&#xff0c;直接爬取搜索引擎或行业资讯网站可能会遇到诸多挑战&…

halcon三维对象处理例程总结(二)

目录 一、intersect_plane_object_model_3d二、interactive_intersection三、measure_plant四、moments_object_model_3d五、projective_trans_object_model_3d六、read_object_model_3d_generic_ascii一、intersect_plane_object_model_3d 计算三维物体模型与平面之间的相交部…

基于 Python 的项目管理系统开发

基于 Python 的项目管理系统开发 一、引言 在当今快节奏的工作环境中&#xff0c;有效的项目管理对于项目的成功至关重要。借助信息技术手段开发项目管理系统&#xff0c;能够显著提升项目管理的效率和质量。Python 作为一种功能强大、易于学习且具有丰富库支持的编程语言&…

2月24(信息差)

&#x1f30d;“任意舞蹈任意学”&#xff01;宇树机器人又进化了 传Meta有意合作抛出橄榄枝 &#x1f384;两部门&#xff1a;深入推进公路沿线充电基础设施建设 推动大功率充电技术标准应用 ✨小米15 Ultra、小米SU7 Ultra定档2月27日 雷军宣布&#xff1a;向超高端进发 1.…

mysql 迁移到人大金仓数据库

我是在windows上安装了客户端工具 运行数据库迁移工具 打开 在浏览器输入http://localhost:54523/ 账号密码都是kingbase 添加mysql源数据库连接 添加人大金仓目标数据库 添加好的两个数据库连接 新建迁移任务 选择数据库 全选 迁移中 如果整体迁移不过去可以单个单个或者几个…

C++和OpenGL实现3D游戏编程【连载23】——几何着色器和法线可视化

欢迎来到zhooyu的C++和OpenGL游戏专栏,专栏连载的所有精彩内容目录详见下边链接: 🔥C++和OpenGL实现3D游戏编程【总览】 1、本节实现的内容 上一节课,我们在Blend软件中导出经纬球模型时,遇到了经纬球法线导致我们在游戏中模型光照显示问题,我们在Blender软件中可以通过…

JUC并发—12.ThreadLocal源码分析

大纲 1.ThreadLocal的特点介绍 2.ThreadLocal的使用案例 3.ThreadLocal的内部结构 4.ThreadLocal的核心方法源码 5.ThreadLocalMap的核心方法源码 6.ThreadLocalMap的原理总结 1.ThreadLocal的特点介绍 (1)ThreadLocal的注释说明 (2)ThreadLocal的常用方法 (3)ThreadL…

Deepseek和Grok 3对比:写一段冒泡排序

1、这是访问Grok 3得到的结果 2、grok3输出的完整代码&#xff1a; def bubble_sort(arr):n len(arr) # 获取数组长度# 外层循环控制排序轮数for i in range(n):# 内层循环比较相邻元素&#xff0c;j的范围逐渐减少for j in range(0, n - i - 1):# 如果当前元素大于下一个元…

Java-01-源码篇-04集合-05-ConcurrentHashMap(1)

1.1 加载因子 加载因子&#xff08;Load Factor&#xff09;是用来决定什么时候需要扩容的一个参数。具体来说&#xff0c;加载因子 当前元素数量 / 桶的数量&#xff0c;当某个桶的元素个数超过了 桶的数量 加载因子 时&#xff0c;就会触发扩容。 我们都知道 ConcurrentHas…

vue3: directive自定义指令防止重复点击

第一章 前言 相信很多小伙伴会在各个渠道上搜如何防止重复点击&#xff0c;之后会推荐什么防抖、节流来避免这一操作&#xff0c;该方法小编就不继续往下说了。接下来说说小编的场景&#xff0c;项目已经完成的差不多了&#xff0c;但是由于之前大家都是直接点击事件调用方法的…