对于web上的实时数据流,我计划使用Redis作为我的缓存数据层,其中数据是即时的。芹菜是队列管理器,RabbitMQ是代理,从Redis排队到Tornado层。这一层然后通过websockets流到前端。
我从未在网上找到Redis + RabbitMQ组合。有人能提供一个可靠的解决方案吗?问题是这样的整合是否可行和明智?
我现在非常成功地使用Tornado和RabbitMQ(没有芹菜)在一起。我还做了一些原型,将Redis作为数据库插入系统。您成功的最佳机会是找到可以插入Tornado的循环的异步库。例如,tornado-redis, pika (RabbitMQ的缩写)和tornado-芹菜。我应该补充一下,我从来没有用过龙卷风芹菜,所以我不确定它的质量。
从纯粹的架构角度来看,我不认为同时使用Redis和RabbitMQ有什么错。虽然两者都可以用作消息代理,但RabbitMQ并不适合用作缓存,而Redis则非常适合这个用例。如果你用的是memcached而不是Redis,那就没什么特别的了,对吧?
还有(也许这是我能提出的最好的论点,建议Redis + RabbitMQ可以工作),Pinterest显然使用(或至少使用)两者来运行他们的网站:http://blog.gopivotal.com/pivotal/case-studies-2/using-redis-at-pinterest-for-billions-of-relationships.
我发现另一个消息来源说他们最终用另一个解决方案取代了芹菜/RabbitMQ,但显然这对他们来说是有效的。
编辑:找到一个2011年的Quora链接,说他们实际上也在运行龙卷风!