我正在构建类似于pingdom的监控服务,但监控系统的不同方面,并使用sidekiq对正常运行的任务进行排队。我需要做的是安排每分钟发送ping,而不是使用基于cron的系统,这需要每隔一分钟启动一个新的ruby实例我已经沿着使用sidetiq的路线(注意不同的拼写使用" t")使用sidekiq自己的队列来安排未来的任务。这感觉就像一个简洁的解决方案,但我担心这可能不是最安全的任务调度方式?如果系统存在问题(因为在某些时候不可避免),这种调度任务的方法是否会比使用基于cron的方法更不可靠?为什么?
由于
答案 0 :(得分:0)
您对系统需求的描述太短,但我会尝试猜测它是什么:
首先使用sidekiq意味着您还需要一个redis实例,这也意味着您需要一种方法来监视sidekiq进程并在发生故障时重新启动它,并且可能是redis服务器。
基于cron任务的方法将具有更少的要求,因此失败的可能性更小。
cron已经存在了很长时间,它已经过测试并且非常可靠,但也有它的缺点。
说,你可以在主/从配置中构建一个具有独立redis实例的系统,你也可以使用Redis sentinel在主机故障的情况下实现故障转移,在这个设置上实现监控/警报系统(你可以使用像sidekiq作者这样的http://contribsys.com/inspeqtor/这样的超级简单的东西),你也可以在不同的机器上启动sidekiq的几个实例。
通过所有这些,您可以拥有一个非常可靠的系统来运行sidekiq with sidetiq。
希望有所帮助