rabbitmq - RabbitMQ 或 Kafka 适合实时仪表板应用程序吗?

标签 rabbitmq apache-kafka streaming

我们面临一个关键决策,需要为实时遥测处理和监控系统选择正确的工具。

该系统有两个主要目的:

  1. 在仪表板 UI 应用程序中显示实时遥测数据(高刷新率)
  2. 处理来自多个来源的大量数据

我们有两个担忧:

  • 在我们的用例中,大多数数据消费者将是 Web 客户端,这与我们迄今为止发现的情况相反 -> 都是 RabbitMQKafka主要用于基于云的平台,其中大多数数据消费者是服务而不是客户端。

  • 通常,来自 Kafka 或 RabbitMQ 的数据使用者会进行负载平衡,并且不会为每个客户端复制消息。

.

  1. Kafka 或 RabbitMQ 是否适合为每个客户端复制数据的环境?
  2. 这种工具是否适合处理大量客户端,同时为每个客户端复制消息?
  3. 对于此类工作有更好的工具吗?

谢谢:)

最佳答案

  1. Kafka具有分区主题,因此每个消费者组独立地消费消息。 RabbitMQ 有一个名为 fanout 的交换类型,用于将消息传递到交换上的所有队列,因此可用于类似的目的。

  2. 如果您有大量客户端(数百或数千),我不会使用 RabbitMQ 扇出交换。 Kafka 可以水平扩展,并且可以处理相当大量的分区。出于延迟目的,通常建议您遵循不超过 100 x b x r 的规则,其中 b 是 Kafka 集群中的代理数量,r 是复制因子。

  3. 还有其他专门为大容量事件处理而设计的系统。你看过Event Store吗? ,或者对于基于云的,Azure Event Hub

关于rabbitmq - RabbitMQ 或 Kafka 适合实时仪表板应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48409964/

相关文章:

RabbitMQ 使用立即位和强制位

apache-spark - DStream 的 RDD 是否一次性提取为批处理间隔创建的全部数据?

python - 自动更新IPython笔记本中的图像

apache-kafka - 如何将kafka消息下载到文件中

hadoop - 当映射器在 EMR 流式处理作业中死亡时会发生什么?

android - Android Stack 中的音频缓冲区管理

spring - 如何让 Apache Camel、RabbitMQ 和事务工作?

java - 设计多个 RabbitMQ 消费者

python - 这是从鼠兔中提取队列的最简单方法

python - 如何使用 Faust Python 包将 kafka 主题与 Web 端点连接起来?