apache-kafka - 每个生产者的 Kafka 主题

标签 apache-kafka real-time scalability publish-subscribe bigdata

假设我有多个设备。每个设备都有不同类型的传感器。现在我想将每个传感器的每个设备的数据发送到 kafka。但我对 kafka 主题感到困惑。用于处理这些实时数据

每个设备都有 kafka 主题并且来自该设备的所有传感器都将数据发送到特定的 kafka 主题是否好,或者我应该创建一个主题并让所有设备将数据发送到该主题。

如果我采用第一种情况,我们将为每个设备创建主题,然后,

设备 1(传感器 A、B、C)-> 主题 1

设备 2(传感器 A、B、C)-> 主题 2

  • 我可以创建多少个主题?
  • 这个模型会缩放吗?

  • Case 2: where, 向一个topic发送数据

    设备 1(传感器 A、B、C)、设备 2(传感器 A、B、C)....设备 N....-> 主题
  • 这不会成为数据的瓶颈吗?由于它将表现为来自某个传感器的队列数据将远远落后于队列并且不会被实时处理。
  • 这个模型会缩放吗?

  • 编辑

    假设每个设备都与用户相关联(多对一)。所以我想根据设备处理数据。所以我想要处理数据的方式是,每台设备及其传感器数据经过一些处理后都会发送给用户。

    说我在关注

    设备 1

    -> 传感器 A - 主题 1 分区 1

    -> 传感器 B - Topic1 Part 2

    设备 2

    -> 传感器 A - Topic2 分区 1

    -> 传感器 B - Topic2 分区 2

    我想要一些发布/订阅类型的行为。由于可以添加或删除设备,因此也可以添加或删除传感器。有没有办法动态创建这些主题和分区。

    如果不是 kafka,什么 pub/sub 会适合这种行为。

    最佳答案

    这取决于您的语义:

  • 一个主题是一个逻辑抽象,应该包含“统一”数据,即具有相同语义含义的数据
  • 一个主题可以通过它的分区数量轻松扩展

  • 例如,如果您有不同类型的传感器收集不同的数据,您应该为每种类型使用一个主题。

    Since devices can be added or removed also sensors can be added or removed. Is there a way to create these topics and partition on the fly.



    如果设备元数据(用于区分日期来自何处)嵌入在每条消息中,则您应该使用具有多个分区的单个主题来横向扩展。添加新主题或分区是可能的,但必须手动完成。对于添加新分区,问题可能是它可能会更改您的数据分布,从而可能会破坏语义。因此,最佳实践是从一开始就对主题进行过度分区以避免添加新分区。

    如果没有嵌入的元数据,您将需要多个主题(例如,每个用户或每个设备)来区分消息来源。

    作为替代方案,可能具有多个分区的单个主题和从设备/传感器到分区的固定映射——通过使用自定义分区器——也可以工作。对于这种情况,添加新分区没有问题,因为您可以控制数据分布并保持其稳定。

    更新

    有一篇博文对此进行了讨论:https://www.confluent.io/blog/put-several-event-types-kafka-topic/

    关于apache-kafka - 每个生产者的 Kafka 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735910/

    相关文章:

    python - 从 C++ exe 中获取输出并在 Python 中实时处理它

    c++ - 为什么 Erlang 和其他函数编程语言不是原生 c/c++?

    docker - Spring Boot Kafka消息使用者和丢失的消息

    facebook - 实时 api 提要 - 如何获得新评论?

    android - 具有实时框架的内容提供者 [PubNub]

    performance - 在多核机器上扩展多线程应用程序

    curl - 在 Golang 中使用 curl 在网站上搜索字符串最有效和可扩展的等价物是什么?

    java - 使用 Spring Cloud Stream Kafka Binder 时 Kafka Producer 中的错误处理

    ruby - 使用kafka-rb为客户端使用docker进行Kafka设置

    django - Kafka Python 生产者与 django Web 应用程序集成