apache-kafka - 将 IBM MQ 与 Kafka 进行比较
问题描述
我发现了 Kafka 和 IBM MQ 之间的一些比较。但我还没有得到我所有的答案。我有一些结论,我需要确认它们。我知道 IBM 支持点对点。但是,我正在比较 Publisher\Subscriber 模式,假设集群大小相同。我主要关心 Kafka 在以下领域与 IBM MQ 的比较:
- 可扩展性:两者都水平扩展。然而,Kafka 更具可扩展性,尤其是在消费者数量方面,因为它为所有消费者使用一个日志。
- 健壮性:IBM MQ 更加健壮。卡夫卡有时不稳定,举止笨拙。这让我有些意外。
- 吞吐量:Kafka 的吞吐量更高。虽然,IBM MQ 的吞吐量足以满足绝大多数应用程序的需求。
- 延迟:我发现了相互矛盾的意见。有人说 kafka 的延迟更小,而另一些人则说它的延迟更多。
- 可用性:两者都非常可用。
- 容错:两者都是容错的。但卡夫卡在这里获胜。
- 消息持久化:两者都持久化消息。但是 kafka 具有更好的消息持久性,而且它是开箱即用的。
- 消息重放:两者都支持消息重放。我不确定哪个更容易或更好。
- 消息排序:Kafka 仅支持分区级别的排序。IBM MQ 支持主题。可以在 kafka 中使用键在主题级别上进行排序。
- 安全性:两者都支持安全性。但 IBM MQ 具有更好的安全特性。开发人员和运维人员的学习曲线:Kafka 有更多的培训材料,并且为开发人员和运维人员学习的难度较低。
- 其他:作为标准消息队列的 IBM MQ 比 Kafka 功能更丰富。IBM MQ 还支持 JMS,这使得它比 Kafka 更标准。另一方面,Kafka 更适合 Lambda 等大数据架构。Kafka 还支持流处理并且也有连接器。
结论
Kafka 更适合需要疯狂吞吐量或需要集成到大数据堆栈中并且丢失少量消息不是什么大问题的应用程序。另一方面,IBM MQ 可用于以健壮性和稳定性为关键因素并且不允许丢失任何消息的应用程序。
笔记:
这些只是我的发现。他们可能是对的,也可能是错的。请更正错误的并添加缺失的点。
解决方案
很难将 MQ 和 Kafka 的比较简化为几个要点。从我的角度来看,每个都有特别适合它的用例。它们都可以扩展,但方式不同。它们都是安全的,但方式不同。它们都是高度可用的,但方式不同。MQ 不进行消息重放。Kafka 不参与全局事务。
我将从用例开始,然后看看 MQ 和 Kafka 的特性是否适合。