【发布时间】:2012-03-21 13:47:05
【问题描述】:
对于 Web 开发,我想混合使用 rails 和 node.js,因为我想充分利用这两个世界(用于快速 Web 开发的 rails 和用于并发的 node)。我知道有些人选择将完整的 ruby 堆栈与集成到 rails 控制器中的 eventmachine 一起使用,这样每个请求都可以通过在 event-loop 模型中使用 Fiber 来实现非阻塞。我已经能够从大局中理解它是如何运作的。
不过,此时我想尝试使用带有消息队列概念的 rails 和 node.js 进行非阻塞请求处理。听说这可以通过redis作为中介来实现。到目前为止,我仍然无法弄清楚它是如何工作的。据我了解:所以我们有 2 个应用程序 A(rails)和 B(node.js)和 redis。 rails 应用程序将处理来自以 REST 方式通过控制器的用户的请求,然后从那里 rails 将通过 redis 传递该请求,然后 redis 将形成队列,node.js 应用程序将拾取该队列并在事后执行任何必要的操作(编写或从后端数据库读取)。
我的问题:
那么这将如何提高并发性和可扩展性呢?从我 知道因为 rails 通过控制器处理请求 同步,然后写入redis,请求将是 仍然阻塞,即使 node.js 端可以拾取队列 异步。 (我有一种感觉,如果它不是端到端的话,它还不是异步的 非阻塞)。
如果是redis,node.js在这里会被认为是代理还是应用程序 是中介吗?
我是 redis 新手,还在学习它。如果我使用 100% noSQL 我的后端数据库(例如 mongoDB 或 couchDB)的解决方案是完全可以用 redis 替换,还是 redis 更多地被视为 像rabbitMQ这样的消息队列工具?
消息队列是与线程不同的并发概念吗? 事件循环模型还是应该补充它们?
这就是我的全部问题。我是消息队列概念的新手。将感谢任何帮助和指向正确方向的指示以及帮助我了解更多信息的文章。谢谢。
【问题讨论】:
标签: ruby-on-rails node.js asynchronous redis message-queue