什么是服务器和客户端术语在Sidekiq意味着什么?

时间:2014-02-10 05:58:09

标签: ruby-on-rails redis sidekiq

在SideKiq中,文档说

Sidekiq.configure_server do |config|
  config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}
end
Sidekiq.configure_client do |config|
  config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}
end

我很好奇这个configure_server和configure_client在这里意味着什么?

     config.redis = {:namespace => "figs_#{Rails.env}", :size => 25, :url => 'redis://localhost:6379/0'}

显然是redis的位置,队列类型等。

3 个答案:

答案 0 :(得分:7)

客户端是将工作推送到Redis的任何东西,通常是运行Rails或Sinatra的乘客,美洲狮或独角兽进程。服务器是Sidekiq进程,它从Redis中提取作业。一个复杂性:Sidekiq服务器进程可以将新作业推送到Redis,因此也像客户端一样!

config/sidekiq.yml意味着允许与命令行args相同的配置。初始化程序用于需要Ruby的更复杂的配置,例如Redis连接信息或自定义中间件。

答案 1 :(得分:0)

来自Railscasts

  

Sidekiq有一个客户端中间件,它在将作业插入Redis之前运行,而服务器端则在处理作业之前运行。此中间件重试作业,记录它们并处理异常。

因此,您可以设置大小为25以处理作业(服务器端),将10用于将作业添加到队列(客户端)。这会增加make队列空的概率。

但我仍然不明白为什么在config/initializers/sidekiq.rb和其他一些配置中存在某些配置,但在/config/sidekiq.yml中类似(请参阅Sidekiq:Advanced options

答案 2 :(得分:-1)

我喜欢考虑它,因为它适用于Heroku。有两个主要过程(dynos)web和worker。

类型为web的Dynos是运行应用程序(Web服务器)的地方,因此路由器的所有连接都会传送到您的Web dynos,以便您的应用程序提供响应。

属于worker类型的Dynos是处理后台作业的地方。这是Sidekiq执行它的执行方法的地方,这样它就不会阻止你的web dyno。

在网络dynos中运行Sidekiq.configure_client。它配置您的web dyno如何连接到Sidekiq并提交作业。

在工作人员dynos中运行Sidekiq.configure_server。它配置你的工作人员dyno如何连接到Sidekiq并处理工作。