Sidekiq工作者和参数大小

时间:2018-07-25 15:31:05

标签: ruby-on-rails ruby scalability sidekiq

当前,我在我的Sidekiq工作人员之一中拥有以下代码:

def perform(identity_id, format, model, items_ids, columns, options)
  ExportListService::Dispatcher.new(
    identity: identity_from(identity_id),
    format:   format,
    items:    items_from(model, items_ids),
    columns:  columns,
    options:  options&.symbolize_keys! || {}
  ).perform
end

items_from方法负责按照在数组items_ids中发送的顺序从数据库中恢复每个项目,然后我们继续进行该服务。

订单非常重要,因为启动此工作程序的控制器具有多个过滤器和选项,ID可以按各种顺序发送,当传输到Sidekiq时不应丢失。

效果很好,但是我意识到这个items_ids数组中可以包含超过5000个条目。

就可伸缩性而言,什么是最好的?

  • 保持原样,如果阵列很大,它不会影响工作人员的绩效。我没有发现与Sidekiq的参数长度有关的任何内容,所以我不知道它是否会破坏表演。

OR

  • 采用整个控制器逻辑对该items_ids进行排序,然后将其复制到工作程序中(这意味着可能存在重复且难以维护代码)

我应该采取什么解决方案?还有我没想到的其他可能性吗?

0 个答案:

没有答案