小编典典

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

redis

我们正在定义一种架构,以通过安装在各种计算机上的Logstash托运人收集日志信息,并在一个Elasticsearch服务器中集中索引数据,并使用Kibana作为图形层。我们需要在Logstash托运人和elasticsearch之间建立可靠的消息传递系统,以准许交货。在Logstash托运人与elasticsearch之间选择Redis
over RabbitMQ作为数据代理/消息传递系统时应考虑哪些因素,反之亦然?


阅读 664

收藏
2020-06-20

共1个答案

小编典典

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

  1. RabbitMQ允许您使用SSL证书来加密发送给代理的数据,从而使用内置的安全层,这意味着没有人会嗅探您的数据并有权访问您的重要组织数据。
  2. RabbitMQ是一款非常稳定的产品,可以每秒处理大量事件和许多连接,而不会成为瓶颈。
  3. 在我们的组织中,我们已经使用过RabbitMQ,并且对使用它有很好的内部了解,并且已经准备好与Chef集成。

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

现在到使用RabbitMQ的弱点:

  1. 大多数Logstash托运人不支持RabbitMQ,但另一方面,最好的一个名为Beaver的实现可以将数据毫无问题地发送到RabbitMQ。
  2. Beaver当前版本使用RabbitMQ的实现在性能上(出于我的目的)有点慢,并且无法处理来自一台服务器的3000个事件/秒的速率,并且服务有时会崩溃。
  3. 现在,我正在研究一种解决方案,该解决方案将解决RabbitMQ的性能问题并使Beaver托运人更加稳定。第一个解决方案是添加更多可同时运行的流程,这将赋予托运人更多的权力。第二种解决方案是更改Beaver以异步地将数据发送到RabbitMQ,这在理论上应该更快。我希望我能在本周末之前完成两种解决方案的实施。
您可以在此处关注该问题:https
//github.com/josegonzalez/python-
beaver/issues/323

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

如果您还有其他问题,请随时发表评论。

2020-06-20