【发布时间】:2021-06-05 21:02:45
【问题描述】:
我的问题比较具体,所以我可以接受一般性的回答,这将为我指明正确的方向。
问题描述: 我想将来自多个生产者的特定任务数据传递给从事该任务的特定消费者(两者都是在 k8s 中运行的 docker 容器)。这种关系是多对多的——任何生产者都可以为任何消费者创建数据包。每个消费者在任何给定时刻都在处理大约 10 个数据流,而每个数据流每 秒 包含 100 个 160b 消息(来自不同的生产者)。
当前解决方案: 在我们当前的解决方案中,每个生产者都有一个任务的缓存:(IP:PORT)对消费者的值,并使用UDP数据包直接发送数据。它具有很好的可扩展性,但部署起来相当混乱。
问题: 这可以通过各种消息队列(Kafka、Redis、rabbitMQ ......)的形式实现吗?例如,每个任务都有一个通道,生产者发送数据而消费者 - 很好地消费它们? MQ 可以处理多少个流(我知道它会有所不同 - 建议你最好的)。
编辑:1000 个流等于每秒 100 000 条消息是否可行? (1000 个流的吞吐量为 16 Mb/s)
编辑 2:将打包大小固定为 160b(错字)
【问题讨论】:
标签: apache-kafka redis stream rabbitmq mq