【问题标题】:Is it compulsory to use Apache Kafka while using Apache storm?使用 Apache Storm 时是否必须使用 Apache Kafka?
【发布时间】:2015-09-18 06:02:12
【问题描述】:
我想在我的项目中实现 Storm 以进行实时消息处理。我观察到很多人使用“Apache Kafka”和“Storm”。
在我的项目中,客户端应用程序将向服务器端发送消息,服务器端应该对消息进行身份验证、处理并存储到 HBase 中。唯一的限制是消息不应该被丢弃,每条消息都必须持久化到 HBase 中,如果处理该消息需要几分钟就可以了。
我想知道
- 是否必须将 Kafka 与 Storm 结合使用?
- 将 Kafka 与 Storm 结合使用有哪些优势?
- 如果我不将 Kafka 与 Storm 一起使用会怎样?
请各位大神指教一下Kafka的使用方法
【问题讨论】:
标签:
hbase
apache-kafka
apache-storm
【解决方案1】:
- Kafka 无需与 Storm 一起使用。两个系统相互独立
- Kafka 是一个可靠的消息队列,因此有助于 Storm 拓扑提供容错(即,它简化了所谓的可靠 Spout 的实现)
- 参见 (2) -> 即,如果您想获得容错保证,您需要自己注意 Spout 的可靠性
如果您想在将传入消息持久化到 HBase 之前在 Storm 中处理和验证传入消息,我建议您使用 Kafka。 Kafka 将充当缓冲区,可靠地存储每个传入消息。 Storm 可以使用来自 Kafka 的消息。如果消息在 Storm 中丢失,可以从 Kafka 重新读取消息。将消息持久化到 HBase 后,Kafka 可以丢弃该消息。