对于Web开发,我想混合使用rails和node.js,因为我想从两个世界中获得最佳效果(用于快速Web开发的rails和用于并发的节点)。我知道有些人选择使用带有eventmachine的完整ruby堆栈,并将其集成到rails控制器中,以便每个请求都可以在事件循环模型中使用光纤进行非阻塞。我已经能够理解这是如何运作的。使用rails,redis和node.js进行异步请求处理的方式是什么?
在这个moement但是我想尝试使用rails和node.js与消息队列概念做非阻塞请求处理。我听说这可以通过使用redis作为中介来实现。我仍然无法弄清楚现在的工作方式。从我能理解的情况来看:所以我们有2个应用程序A(rails)和B(node.js)和redis。 rails应用程序将处理来自用户的请求,这些用户通过REST方式通过控制器,然后从那里通过redis传递,然后redis将形成队列,node.js应用程序将拾取该队列并事后做任何必要的事情(写或从后端数据库读取)。
我的问题:
因此,如何将改善并发性和可扩展性?从我知道,因为rails同步通过控制器 处理请求,然后写入redis,即使node.js结束可以异步地拾取队列 ,请求仍然会阻止 。 (我有一种感觉,它不是异步的,但如果它不是非阻塞的端到端 )。
如果redis 是中介,那么node.js会被认为是代理还是应用程序?
我是redis的新手,还在学习它。如果我为我的后端数据库(如mongoDB或couchDB)使用100%noSQL 解决方案,它们是否可以完全由redis替换,或者redis更像 类似rabbitMQ的消息队列工具?
消息传递队列与线程或事件循环模型不同,它是否应该补充它们?
这就是我的问题。我是消息队列概念的新手。将感谢任何帮助和指向正确的方向和文章,帮助我了解更多。谢谢。