dot Redis 8 来了——而且是开源的

了解更多

在 Redis 上运行 Quartz,Java 作业调度器

作业调度程序在当今的 Web 应用程序世界中已经变得非常流行。调度程序通常用于自动运行异步和繁重的作业,并且已经有一段时间使用 Redis 作为首选后端主机。对于流行的作业管理系统,例如用 Ruby 编写的 Resque 来创建后台作业;Sidekiq,它为 Ruby 提供高效的后台处理;以及主要使用 Celery 及其 Redis 后端选项的 Python 用户来说,情况也是如此。根据社区的要求,我们最近实现了 Redis 以支持流行的 Java 作业调度程序 Quartz。

Redis 的优势

Quartz 是一个成熟而强大的解决方案,可以使用几乎任何类型的数据库作为后端来存储其数据。由于大多数关系数据库都具有 JDBC 驱动程序,因此 Quartz 的 JDBC JobStore 非常受欢迎也就不足为奇了。但是,关系数据库可能很慢并且难以管理。实际上,Quartz FAQ 对如何在使用 JDBC 时提高性能提出了一些建议,范围从花钱解决问题和购买更好的硬件/网络/软件到传统的 DBA 智慧(例如,在表上添加索引)。

由于 Redis 作为内存数据库提供的效率和便捷的数据类型,因此 Redis 作为作业调度程序的后端具有许多优势,这并不奇怪。正如 经过验证的 Redis 性能 中指出的那样,Redis 独特的数据类型和命令能够以这样一种方式构建模式,即数据库经过调整以服务于应用程序请求,而无需在应用程序级别进行任何额外的处理。此外,考虑到应用程序与 Redis 数据集部署在同一区域中,延迟结果将仅仅是几毫秒。

像 Facebook 或 Twitter 这样的大型 Web 应用程序依赖于作业调度程序来执行大量的后台作业。这些范围从繁重的作业(即图像处理)到轻量级的作业(即发送电子邮件)。如今,应用程序需要高质量的性能,而无需进行数据库设置和脚本编写的麻烦。幸运的是,Redis 提供了这些应用程序所需的效率和性能水平,并增加了简单性的动力。此外,使用我们的 Redis Cloud Platform,只需单击一下,即可立即使用 Quartz 配置数据库。

Quartz 作业调度器

Quartz 是一个开源作业调度和管理库,可以集成到任何 Java 应用程序中。作为 Java 世界中的非正式标准作业管理系统,Quartz 已广受欢迎,服务于数万个应用程序。通过利用 Redis 作为持久存储,Quartz 用户可以获得 Redis 的效率,低延迟以及与 Heroku 等 PaaS 提供商的简单集成等优势。

Quartz 的 Redis JobStore

Redis JobStore 已针对 Quartz 利用而实现,现在可以从我们的 Github 存储库 下载,并可以简单地添加到给定的 Quartz 项目的库中。 Redis JobStore 利用排序集,其中存储了触发器及其各自的触发时间,从而可以快速有效地检索特定作业及其执行。排序集值提供了一个分数,该分数用于作业的触发时间,从而加快了整个过程。

Redis JobStore 中使用的另一个元素是使用 Redis 的发布和订阅机制 (Pub/Sub) 进行全局锁定,其中 JobStore 侦听“解锁”消息。

下载使用 Redis 进行持久存储的 Quartz 调度程序 JobStore。

Redis JobStore 通过两种便捷的机制支持多个调度程序。一种释放先前运行的调度程序的锁定触发器,第二种监视实时调度程序。实时调度程序的 ID 存储在 Redis 中,并且在给定时间后释放非活动调度程序触发器。

为了更好地理解使用 Redis JobStore 的 Quartz 调度程序的工作流程和行为,我邀请您查看它使用的 Redis 模式

查看自述文件 或 联系我 以了解有关如何入门以及当前限制和问题的更多信息。这是一个很好的起点,我们计划根据社区的要求继续增强此软件包。