【发布时间】:2015-03-16 22:58:57
【问题描述】:
我有一个生产应用程序,每天必须处理数 GB 的消息。我非常喜欢 Kafka 的架构和性能;它完全符合我的需求。
我想在某个时候将我的消息传递层替换为Kafka。 0.7.1 版本在稳定性和性能一致性方面是否足够适合生产使用?
【问题讨论】:
标签: apache-kafka
我有一个生产应用程序,每天必须处理数 GB 的消息。我非常喜欢 Kafka 的架构和性能;它完全符合我的需求。
我想在某个时候将我的消息传递层替换为Kafka。 0.7.1 版本在稳定性和性能一致性方面是否足够适合生产使用?
【问题讨论】:
标签: apache-kafka
它肯定已经在几家大数据公司中使用,包括 LinkedIn,它是在哪里创建的(后来开源的)和 Tumblr。只有 Tumblr 本身每天处理数 GB 的消息。我敢肯定LinkedIn也在那里。您可以在此处查看当前使用它的已知公司列表:
https://cwiki.apache.org/confluence/display/KAFKA/Powered+By
另外,请务必订阅他们的邮件列表,有很多人积极尝试并在生产环境中使用它。
我确信它可以处理你可以扔给它的任何音量。
【讨论】:
我认为 Kafka 在投入生产之前缺少一个关键功能。
“如果生产者无法访问任何 Kafka 代理,则将消息刷新到磁盘” 这个问题很久以前就在这里提交了: https://issues.apache.org/jira/browse/KAFKA-156
当生产者总是必须能够发送事件时,此功能将使完整的 Kafka 事件管道对于某些用例更加健壮。例如,当您跟踪浏览量或点赞按钮的点击时,您不想错过任何事件,即使所有 Kafka 代理都无法访问。
【讨论】:
我必须同意 Dave 的观点,Kafka 是一个很好的工具,但是它缺少一些可以手动完成的基本功能,但是您需要考虑 Kafka 提供了什么。一些缺少的东西是:
【讨论】:
我使用 kafka 已经有一段时间了。最好使用本机 java 和 python 客户端。
我费了很大劲才找到合适的 node.js 客户端。从字面上看,使用不同的客户端多次重写我的整个代码,因为它们有很多错误。 最终以 franz-kafka 解决 node.js。
除此之外,维护消费者偏移量有点困难。它缺少一些很好的功能,例如基于 AMQP 的 Apache Qpid 或 RabbitMQ 中存在的交换
由于它是分布式的,支持离线消息,性能确实令人印象深刻。我也喜欢它:)
【讨论】: