0

我有一个具有这些特殊要求的场景:

  • 生产就绪且稳定。
  • 点对点连接,生产者在防火墙后面,消费者在云中。有可能在几个生产者\消费者之间拆分流量,但所有流量仍然必须通过单个 WAN 连接,这可能是瓶颈。
  • 高吞吐量 - 大约 300 Mb/秒(可能高达 1Gb!)。消息大小从 ~1KB 到可能的几 MB 不等。
  • 保证交付是必须的——每条消息最终都必须到达消费者,因此我们需要开始将消息保存到磁盘以防网络暂时中断或内存不足的风险。
  • 消息顺序并不重要,消息带有时间戳,并且可以在消费者处重新排列。
  • 非常可取但不那么重要 - 应该在 linux 和 windows 上运行(JVM 似乎是显而易见的选择)

我最近一直在看这么多MQ,我没有任何动手经验。
觉得问问有经验的人会更好。
我们主要考虑 Kafka,但我不确定它是否最适合我们的用例,似乎是为分布式部署和多个主题\消费者\生产者量身定制的。此外,绝对没有在 Windows 上准备好生产。Apache ActiveMQ 或 Apollo\Artemis 呢?RabbitMQ 似乎不太适合我们的性能要求。或者也许有一些 Java 库在没有中间人代理的情况下具有我们需要的功能?
任何帮助理解这个 kludge 将不胜感激。

4

1 回答 1

0

如果有人遇到这种情况,我们最后还是选择了 Kafka。它的性能令人印象深刻,到目前为止它在 linux 上非常稳定。尚未尝试在生产部署的 Windows 上运行它。

2017 年 12 月 3日更新: 在 Linux 上运行良好且非常稳定,但在 Windows 上,这在生产中不可用。由于文件句柄泄漏,旧数据永远不会被删除,相关的 Jira 自 2013 年以来被忽略:https ://issues.apache.org/jira/browse/KAFKA-1194

于 2016-09-06T08:47:37.260 回答