【发布时间】:2014-03-25 13:44:44
【问题描述】:
我有一个 Rails 前端服务器,它接收来自用户的多个请求,然后将这些请求发送到后端服务器。
后端服务器异步处理请求,并在完成每个请求时通知前端服务器。
我使用 Redis pub/sub 在这两个服务器之间进行通信。特别是,对于来自用户的每个请求,我都会创建一个订阅单个频道的新 Redis 实例(例如,scoring_channel)。
但是,如果我有 100 个用户同时发出请求,则每个 Redis 订阅者将持有一个线程。
这会影响我的服务器性能吗?如果我对最大线程数有限制(例如,Heroku 允许最多 256 个线程),我应该如何避免这个问题?
【问题讨论】:
-
如果所有线程都订阅同一个频道,那么订阅这么多是不是太贵了?我觉得订阅如果不是唯一的应该是普遍的。此外,如果每个线程订阅相同的频道,那么所有线程都会获得相同的数据,这是否需要作为您设计的一部分?
标签: ruby-on-rails redis publish-subscribe