17

我有一个生产应用程序,每天必须处理几 GB 的消息。我非常喜欢 Kafka 的架构和性能;它完全符合我的需求。

我想在某个时候用Kafka替换我的消息传递层。0.7.1版本在稳定性和性能一致性方面是否足以满足生产使用?

4

4 回答 4

13

它肯定已经在几家大数据公司中使用,包括创建它(后来开源)的 LinkedIn 和 Tumblr。只有 Tumblr 自己每天处理数 GB 的消息。我敢肯定LinkedIn也在那里。您可以在此处查看当前使用它的已知公司列表:

https://cwiki.apache.org/confluence/display/KAFKA/Powered+By

此外,请务必订阅他们的邮件列表,有很多人积极尝试并在生产环境中使用它。

我相信它可以处理你可以扔给它的任何音量。

于 2012-10-06T23:09:07.500 回答
10

我认为 Kafka 在准备好投入生产之前缺少一个关键功能。

“如果生产者无法到达任何 Kafka 代理,则将消息刷新到磁盘”该问题很久以前就已在此处提交: https ://issues.apache.org/jira/browse/KAFKA-156

当生产者必须始终能够发送事件时,此功能将使完整的 Kafka 事件管道对于某些用例更加健壮。例如,当您跟踪页面浏览量或点赞按钮点击时,您不想错过任何事件,即使所有 Kafka 代理都无法访问。

于 2013-03-10T21:11:32.513 回答
3

我必须同意 Dave,Kafka 是一个很好的工具,但是它缺少一些可以手动完成的基本功能,但是你需要考虑 Kafka 提供了什么。一些缺少的东西是:

  • (正如戴夫所说)当生产者无法发送消息时将消息刷新到磁盘
  • 消费者能够跟踪哪些消息被处理(不仅仅是消费),哪些没有在重启的情况下。
  • 监控 - 一种接收系统中实体当前状态的方法,例如生产者中队列的当前大小或代理处的写入/读取速度(这些可以完成,但不是工具的一部分)。
于 2013-08-12T07:23:03.273 回答
2

我使用卡夫卡已经有一段时间了。最好使用本机 java 和 python 客户端。

我不得不费力寻找合适的 node.js 客户端。从字面上看,使用不同的客户端多次重写我的整个代码,因为它们有很多错误。最后用franz-kafka解决了 node.js。

除此之外,维护消费者偏移量有点困难。它缺少一些很好的功能,例如基于 AMQP 的 Apache Qpid 或 RabbitMQ 中存在的交换

由于它是分布式的,支持离线消息,性能确实令人印象深刻。我也更喜欢它:)

于 2012-12-27T19:30:34.823 回答