我们正在定义一种架构,以通过安装在各种计算机上的Logstash托运人收集日志信息,并在一个Elasticsearch服务器中集中索引数据并将Kibana用作图形层。我们需要在Logstash托运人和elasticsearch之间建立可靠的消息传递系统,以使交付受托。在Logstash托运人和elasticsearch之间选择Redis over RabbitMQ作为数据代理/消息传递系统时应考虑哪些因素?反之亦然?
Answers:
在评估Redis和RabbitMQ之后,出于以下原因,我选择RabbitMQ作为我们的经纪人:
关于扩展,RabbitMQ具有内置的群集实现,除负载均衡器外,您还可以使用它来实现冗余代理环境。
现在到使用RabbitMQ的弱点:
您可以在此处关注此问题:https : //github.com/josegonzalez/python-beaver/issues/323
并在此处检查请求请求:https : //github.com/josegonzalez/python-beaver/pull/324
如果您还有其他问题,请随时发表评论。
我一直在对此主题进行一些研究。如果性能很重要而持久性不重要,那么RabbitMQ是一个完美的选择。Redis是一项具有不同意图的技术。
以下是在Redis上使用RabbitMQ的专家列表:
使用RabbitMQ的一些缺点:
Sorted Sets
允许类似队列的优先级交互的功能。Redis也可以被集群/分片,以将不同的消息发送到不同服务器上的不同队列。不确定直接用于Redis的SSL,但是我正在研究AWS Elasticache,而他们的Redis 3.2.6允许静态和过渡加密。注意:完全没有说Redis在这种情况下会更好;只是指出那些可能不是选择Redis而不是选择RabbitMQ的原因。
我一直在想同样的事情。Logstash的早期建议是在RabbitMQ上推荐Redis(http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized),但是,尽管有https://www.elastic.co/guide/zh-cn/logstash/current/deploying-and-scaling.html上有关使用经纪人处理峰值的一般说明。
虽然我也很开心地使用RabbitMQ,但我目前正在探索Redis代理,因为AMQP协议可能对我的日志记录用例有些过分。