Sidekiq Github wiki 中文文档
相关项目
commit信息:Add Rails Autoscale | 提交者:adamlogic | 提交时间:2020-05-15 | 版本:4f98fc8
许多第3方gems提供给Sidekiq额外的功能。请注意这些gems(1)可能不能与sidekiq企业版功能一起协调工作;(2)或许显著地破坏sidekiq的伸缩性和功能。
ActiveRecord
- Sidekiq::Activerecord: 总结了Sidekiq和ActiveRecord之间的常见模式和各种交互。
异步发送电子邮件和文件处理
- Devise Async:后台发送Devise邮件。支持Resque, Sidekiq和Delayed::Job
- Carrierwave Backgrounder: 使用Delayed Job, Resque, Sidekiq, Qu, Queue Classic 或者 Girl Friday把CarrierWave的图片处理和存储转移到后台程序
- Ryespy:IMAP,FTP,Amazon S3,Google Cloud Storage,Google Drive,Rackspace Cloud Files侦听器。
- SidekiqSendMail: 渲染邮件,然后将其序列化,以供Sidekiq分发。
Benchmark
- Sidekiq Benchmark:往Sidekiq workers里添加基准方法,维持指标,并且向你的WebUI中添加tab,以便你能浏览它们。
批状态
- Sidekiq::TrackableBatch: 在Sidekiq::Batch运行时,获取它详细的和最新的信息。(依赖 Sidekiq Pro)
Bulk
- Sidekiq Bulk:给Sidekiq作业提供大批入队
Capistrano & Deployment
- Sidekiq Capistrano:Capistrano的Sidekiq集成
执行顺序
- Gush:Gush是构建在Sidekiq之上的并行工作流运行程序。 为运行复杂的程序而创建,每个作业具有多个依赖项。参考例子
- Batsir:Batsir是一个基于阶段过滤的队列执行平台。它基于管道和过滤器模式,并且可以创建多个管道和过滤器(称为‘阶段’),可以使用‘回归接收者’异步调用这些管道和过滤器。接收者会自动启动,并将有效负载发送到过滤器链,之后,转换后的消息将由被称为‘出站通知’的程序来处理。只要配置了合适的入站接收器,通知程序将会把消息异步发送到另一个阶段。
- Sidekiq Superworker: Chain together Sidekiq workers in parallel, serial, and batch configurations using an expressive DSL.
- Sidekiq::Promise[存档]将单个worker转换为异步promises,那样可以使用promise流来进行协调。
- sidekiq-grouping:使你可以对相似的任务进行分组,以将它们作为一个任务运行。 用于减少相似的计数器更新查询的数量,将单独的后台索引查询分组为批量等等。
- sidekiq-merger:合并执行时间之前发生的任务。 特别适合批量通知。
- sidekiq_workflows:在Sidekiq ** Pro** 上添加工作流程API。 与其它gems不同,该gem是专门为Sidekiq Pro的批处理而创建的。
Heroku
- Sidekiq Heroku Autoscale:依据队列中的作业来动态启动、停止和缩放Heroku Sidekiq dynos(autoscaler项目的更新)。
- Rails Autoscale: Heroku插件,只需很少的设置即可自动缩放web和worker dynos。
Heroku高可用
- Sidekiq Multi-Redis Client:让你可以指定两个Redis位置,并且使客户端代码可以 1) 在两个redis实例之间交替发送作业, 2) 拥有自动故障转移功能,以便在一个实例发生故障时发送所有作业到可用的实例。
###日志
* sidekiq-gelf:记录作业日志到GELF-supported 日志服务器(例如Graylog2)的中间件。
Mongoid
- Kiqstand by Mongoid: Kiqstand是一个让sidekiq使用Mongoid 3的中间件
监视
- Sidekiq Monitor:Sidekiq高级监视工具,它让你可以使用许多属性来过滤、检索、和排序作业,查看错误回溯、设置作业完工元数据、以及更多其它功能。
- Sidekiq Spy: console里的Sidekiq监视者。有点像Sidekiq::Web,但是没有网页。
- Sidekiq Monitor Stats:使用实用的指标来给监视脚本添加json端点。这是一些sensu脚本,这些脚本使用这些api、在Sidekiq出问题时发出警告、以及追踪有用的指标。
- Attentive Sidekiq: 一个监视/记录Sidekiq丢失作业(一个启动过但没有完成并且从redis里消失的作业)的扩展。
- Sidekiq InfluxDB: 一个Sidekiq服务中间件,用来把执行过的作业指标推送给InfluxDB数据库。
- Sidekiq Prometheus exporter:一个Sidekiq扩展,用来展示被废弃的Prometheus格式的统计信息。
- general ruby Prometheus exporter:一个通用ruby导出工具,使用Sidekiq integration来导出Prometheus指标。
- sidekiq_queue_metrics: 监视各个sidekiq队列指标以及每个队列中的故障。
- sidekiq-job_alert: 如果有太多等待的作业或是死亡的作业就给Slack发送警告。
优先级
- Sidekiq Priority:设置在Sidekiq队列内的作业的优先级。
- sidekiq-apriori:一个Sidekiq中间件,使用sidekiq内置的功能对作业进行优先级排序。 附加的钩子可以简化active record和worker类。
- Sidekiq Prioritized Queues: 给作业添加优先级数字。
- Dynamic priority within a queue:在同一队列中动态改变作业优先级。
队列控制
- Sidekiq Custom Queue:一个Sidekiq插件,使workers可以基于排队的message来定义定制化的/动态的队列。
- Sidekiq Canary:来做canary部署的Sidekiq插件
队列限制
- Sidekiq Limit Fetch:限制可同时运行的特定队列workers的数量。可以暂停一些队列并且可以动态调整队列的分布。也可以跟踪每个队列活跃的worker数量。支持全局模式(多个sidekiq进程)。它是一个附加阻塞队列模式。
- Sidekiq Throttler:Sidekiq::Throttler是Sidekiq的中间件,它使每个worker可以限制作业执行速度。
- sidekiq-rate-limiter:Redis backed, 限制每个worker的作业处理速度。
- Sidekiq::Throttled:并发和阈值控制。
- Sidekiq Worker Limiter:以极其简单的方式来限制 特定workers的并发。
循环作业
- Sidekiq Enterprise: 官方Sidekiq的cron作业解决方案
- Sidekiq Cron:使用cron notation给Sidekiq workers安排循环作业。
- Sidekiq Scheduler
- Sidekiq TIP:在允许的时间间隔内负载sidekiq worker
- Sidecloq: 一个的Sidekiq扩展,用来‘循环/周期/计划/定期’作业
死亡作业
- Sidekiq::Undertaker:可以考察,复活(重试)或者埋葬(删除)死亡作业。
Ruby
- Rubykiq: Sidekiq agnostic enqueuing using Redis.
Non-Ruby
- Coffeekiq:基本的node.js库,可将作业入队到Sidekiq。
- sidekiq-job-php:一个PHP库,给sidekiq‘入队/计划’作业。
- rust-sidekiq: 一个Rust库,给sidekiq‘入队/计划’作业。
任务状态
- Sidekiq-Status:给Sidekiq带来Resque-Status-like的功能,使你可以追踪作业状态。
- sidekiq_status: 为Sidekiq重新编写resque_status。
唯一作业
- Sidekiq Enterprise
- Sidekiq Middleware:Sidekiq的unique作业功能
- Sidekiq Unique Jobs: Sidekiq的unique作业功能
Kubernetes
- Sidekiq AliveKubernetes部署里的Sidekiq活动检测功能
Misc
- Sidekiq Remove Scheduled:轻松移除计划任务
- sidekiq-retries: 一个更灵活的重试处理中间件。
- sidekiq-enqueuer:一个Sidekiq Web扩展,在Web UI中使用定制负载参数来‘排队/计划’作业。同时支持Sidekiq::Worker和ActiveJob。
- sidekiq-worker-killer: 内存泄漏在Ruby中是很难处理的,同时我们经常自己发现内存消耗的增长。代替花费巨大的精力来修复它们,为什么不在程序内存变的太大时杀死它们呢?