apache-kafka - 设计 Kafka 主题 - 多主题 vs 一个大主题

标签 apache-kafka message-queue messaging distributed-computing kafka-producer-api

考虑到一系列不同的事件,推荐的方法是

  • 一个包含所有事件的大主题
  • 不同类型事件的多个主题

  • 哪个选项会更好?

    我知道消息不在主题的同一分区中,这意味着存在 无订单保证 ,但是有没有 其他需要考虑的因素什么时候做这个决定?

    最佳答案

    主题是逻辑抽象,应包含相同类型的消息。假设您监控网站并捕获点击流事件,另一方面,您有一个数据库将其更改填充到更改日志主题中。您应该有两个不同的主题,因为点击流事件与您的数据库更改日志无关。

    这有多个优点:

  • 您的数据将具有不同的格式,并且您将需要不同的(反)序列化器来写入读取数据(使用单个主题,您将需要一个混合序列化器,并且在读取数据时您将无法获得类型安全)
  • 您将有不同的消费者应用程序,一个应用程序可能只对点击流事件感兴趣,而第二个应用程序只对数据库更改日志感兴趣,而第三个应用程序对两者都感兴趣。如果您有多个主题,应用程序一和应用程序二只订阅他们感兴趣的主题——如果您只有一个主题,应用程序一和应用程序二需要阅读所有内容并过滤他们不感兴趣的内容,增加经纪人,网络,客户端可以加载
  • 关于apache-kafka - 设计 Kafka 主题 - 多主题 vs 一个大主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40704428/

    相关文章:

    java - 如何使用Apache Kafka实现 "Exactly once"kafka消费者?

    apache-spark - 如何在 Spark Kafka 直接流中手动提交偏移量?

    performance - RabbitMQ/ActiveMQ 或 Redis 超过 250,000 msg/s

    python - RabbitMQ - 游戏室和安全注意事项

    java - Kafka 消费者协调器连接问题,Kafka 0.11.0.3

    apache-kafka - Kafka Streams - 是否有可能减少由多个聚合创建的内部主题的数量

    c++ - 消息队列解决方案?

    Azure 辅助角色未运行?

    python - 从按下的按钮调用时 wx.lib.pubsub.Publisher 不工作?