首页 文章

Redis与RabbitMQ一起作为Logstash和elasticsearch之间的数据代理/消息系统

提问于
浏览
61

我们正在定义一个架构,用于收集Logstash托运人的日志信息,这些托架安装在各种机器中,并将数据集中在一个弹性搜索服务器中,并使用Kibana作为图形层 . 我们需要在Logstash发货人和elasticsearch之间 Build 一个可靠的消息传递系统来授权交付 . 在Logstash发货人和弹性搜索之间选择Redis over RabbitMQ作为数据代理/消息传递系统时应该考虑哪些因素,反之亦然?

5 回答

  • 67

    在评估Redis和RabbitMQ之后,我选择RabbitMQ作为我们的经纪人,原因如下:

    • RabbitMQ允许您使用SSL证书来加密您发送给代理的数据,从而使用内置的安全层,这意味着没有人会嗅探您的数据并访问您的重要组织数据 .

    • RabbitMQ是一款非常稳定的产品,可以每秒处理大量事件,并且无需瓶颈即可处理多个连接 .

    • 在我们的组织中,我们已经使用过RabbitMQ并且具有使用它的良好内部知识以及已经准备好与厨师的集成 .

    关于扩展,RabbitMQ有一个内置的集群实现,除了负载均衡器之外,您还可以使用它来实现冗余代理环境 .

    Is my RabbitMQ cluster Active Active or Active Passive?

    现在到使用RabbitMQ的弱点:

    • 大多数Logstash托运人不支持RabbitMQ,但另一方面,最好的一个名为Beaver,有一个实现,可以毫无问题地将数据发送到RabbitMQ .

    • Beaver在当前版本中与RabbitMQ的实现在性能上有点慢(出于我的目的),并且无法处理来自一台服务器的3000事件/秒的速率以及服务崩溃的时间 .

    • 现在我正在开发一个解决方案,解决RabbitMQ的性能问题,让Beaver托运人更加稳定 . 第一个解决方案是添加可以同时运行的更多流程,并为托运人提供更多功能 . 第二个解决方案是改变Beaver以异步方式向RabbitMQ发送数据,这在理论上应该更快 . 我希望到本周末我能完成两个解决方案 .

    你可以在这里关注这个问题:https://github.com/josegonzalez/python-beaver/issues/323

    并在此处检查拉取请求:https://github.com/josegonzalez/python-beaver/pull/324

    如果您有更多问题,请随时发表评论 .

  • 4

    尽管具有 some basic 消息代理功能,Redis仍被创建为键值数据存储 .

    RabbitMQ创建为消息代理 . 它自然有很多消息代理功能 .

  • 36

    我一直在研究这个话题 . 如果性能很重要而且持久性不重要,那么RabbitMQ是一个完美的选择 . Redis是一种具有不同意图的技术 .

    Following is a list of pros for using RabbitMQ over Redis:

    • RabbitMQ使用AMQP协议,可配置为使用SSL,增加安全层 .

    • RabbitMQ大约有75%的时间用于接受消息 .

    • RabbitMQ支持消息的优先级,工作者可以使用它来首先使用高优先级消息 .

    • 如果任何工作人员在使用消息后崩溃,则无法丢失消息,而Redis不是这种情况 .

    • RabbitMQ有一个很好的路由系统来将消息定向到不同的队列 .

    A few cons for using RabbitMQ:

    • RabbitMQ可能有点难以维护,难以调试崩溃 .

    • node-name或node-ip波动可能导致数据丢失,但如果管理得当,持久消息可以解决问题 .

  • 27

    我一直想知道同样的事情 . Logstash人员早期的建议推荐Redis而不是RabbitMQ(http://logstash.net/docs/1.1.1/tutorials/getting-started-centralized),但是当前文档中不再存在该部分说明,尽管有关于使用代理处理尖峰的一般说明https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html .

    虽然我也非常高兴地使用RabbitMQ,但我正在探索一个Redis代理,因为AMQP协议可能对我的日志记录用例有些过分 .

  • 3

    要问的快速问题:

    • 为什么需要经纪人?如果您使用logstash或logstash-forwarder从这些服务器读取文件,如果管道拥塞,它们都会变慢 .

    • 你有管理兔子或redis的经验吗?在所有条件相同的情况下,您知道如何使用的工具是更好的工具 .

    在意见领域,我将redis作为一个经纪人,并讨厌它 . 当然,这可能是我对redis的经验不足(产品本身不是问题),但它是管道中最薄弱的环节,并且在我们最需要的时候总是失败 .

相关问题