我想优化我的通知系统,现在它是如何运作的:
每次在应用程序上发生某些更改时,我们都会调用后台作业(Sidekiq)来计算某些值,然后通过电子邮件通知用户。
这种方法在一段时间内运作良好,但突然间我们发现了内存泄漏,因为经常有很多动作,我们每秒大约有30-50名工人,所以我需要重构这个。
我想做的是,不要立即运行 worker ,而是将其存储在数组中并稍后执行。
但我担心这也会导致问题,但只是“延迟”问题。
我期待听到更多的方法和解决方案。
提前致谢
答案 0 :(得分:0)
所以我找到了一个非常有趣的解决方案:
我将值Redis
直接存储为key - value
,其中值为数据集,数据I稍后需要进行计算。然后我使用简单的cron作业,它发生的服务负责从Redis读取数据并计算它们。我优化了Sidekiq工作人员只有在执行cron时才能工作,一切都工作得很好,甚至比以前快得多。
我仍然渴望听到是否有其他方法/解决方案。
由于