如何在用于存储所有业务事件时为Kafka建模主题和分区?

时间:2015-09-06 13:27:28

标签: apache-kafka

我们正在考虑使用Kafka作为永久存储我们所有业务事件的方式。目的是能够启动我们尚未想到的新的“微服务”,这些微服务将能够利用所有先前的事件来建立他们的预测/状态。另一个用例可能是现有服务,我们希望“重播”此服务感兴趣的所有事件以重新创建其状态。

请注意,我们不打算将Kafka用作“事件存储”,因为事件将在“每个请求”上投影/加载到聚合中。

另外(据我所知)我们不知道消费者将如何消费这些事件。新的微服务可能需要各种不同的事件才能创建其内部投影/状态。

  1. Kafka适合这个还是有更好的选择?
  2. 如果是这样,对此进行建模(主题/分区)的好方法是什么?
  3. 我们目前正在使用RabbitMQ进行消息传递(业务事件被发送到RabbitMQ)。如果我们能够在未来从RabbitMQ迁移并完全转移到Kafka,那将是很棒的。我认为这可能会改变主题和分区的建模方式,因为现在我们可以更好地了解消费者如何消费这些事件。这是否与其他用例兼容(无限保留和重放)?

1 个答案:

答案 0 :(得分:1)

这是非常好的,你转换到 KAFKA ,是的可以保存KAFKA BROKERs中的数据,但我建议而不是将所有数据保存在 KAFKA-BROKERs 所有时间为什么你不能将这些数据转储到HDFS或S3(AWS),它会更便宜,你将拥有数据的所有HDFS功能。
将所有数据存储在Brokers中也会增加Zookeeper的开销。