Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 基于卡夫卡主题的寻址/消费_Apache Kafka - Fatal编程技术网

Apache kafka 基于卡夫卡主题的寻址/消费

Apache kafka 基于卡夫卡主题的寻址/消费,apache-kafka,Apache Kafka,作为卡夫卡的新手,我们想知道卡夫卡是否支持我们的用例。 我们正在尝试创建一个事件流,其中包括不同类型的事件,例如创建、更新、删除 我们有两种消费者 需要连续消耗整个流,考虑审计消费者。 选择性消费者,只需要订阅一种事件类型,例如创建->创建消费者,更新->更新消费者 我们的数据将被不平等地划分,例如,我们可以创建80%的数据,更新10%的数据 我们想知道什么是一个好的策略? 基于混合数据的额外缩放要求如下: 运行AuditConsumer的5个实例 运行CreateConsumer的4个实例 运

作为卡夫卡的新手,我们想知道卡夫卡是否支持我们的用例。 我们正在尝试创建一个事件流,其中包括不同类型的事件,例如创建、更新、删除

我们有两种消费者

  • 需要连续消耗整个流,考虑审计消费者。
  • 选择性消费者,只需要订阅一种事件类型,例如创建->创建消费者,更新->更新消费者
  • 我们的数据将被不平等地划分,例如,我们可以创建80%的数据,更新10%的数据

    我们想知道什么是一个好的策略? 基于混合数据的额外缩放要求如下:

    运行AuditConsumer的5个实例

    运行CreateConsumer的4个实例


    运行1个UpdateConsumer实例。

    我个人会为每种事件类型创建一个主题,并创建另一个消费者,将事件流式传输到适当的频道

    以下内容稍微复杂一些,涉及更多的主题,但可以让您创建一个更精简的流程

    CreatedEvent
    /
    updateEvent
    /
    DeletedEvent
    被写入主题
    事件输入流

    AuditConsumer
    使用消费者组
    audit
    event\u input\u stream
    消费

    EventSplitter
    使用消费者组
    splitter
    event\u input\u stream
    消费。
    EventSplitter
    检查事件类型并生成
    已创建的\u事件
    已更新的\u事件
    已删除的\u事件

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    CreatedConsumer
    created\u事件中消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    updated消费者
    updated\u事件
    消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    DeletedConsumer
    deleted\u事件中消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    


    让所有消费者阅读同一主题的问题在于,
    UpdateConsumer
    将需要阅读所有消息,即使它将丢弃90%的消息。这实际上意味着需要平等地扩展所有消费者,因为他们实际上将消费相同数量的消息。

    我个人会为每种事件类型创建一个主题,并创建另一个消费者将事件流式传输到适当的频道

    以下内容稍微复杂一些,涉及更多的主题,但可以让您创建一个更精简的流程

    CreatedEvent
    /
    updateEvent
    /
    DeletedEvent
    被写入主题
    事件输入流

    AuditConsumer
    使用消费者组
    audit
    event\u input\u stream
    消费

    EventSplitter
    使用消费者组
    splitter
    event\u input\u stream
    消费。
    EventSplitter
    检查事件类型并生成
    已创建的\u事件
    已更新的\u事件
    已删除的\u事件

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    CreatedConsumer
    created\u事件中消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    updated消费者
    updated\u事件
    消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    
    DeletedConsumer
    deleted\u事件中消费

                                               /> created_event > CreatedConsumer
    event > event_input_stream > EventSplitter -> updated_event > UpdatedConsumer
                                               \> deleted_event > DeletedConsumer
    


    让所有消费者阅读同一主题的问题在于,
    UpdateConsumer
    将需要阅读所有消息,即使它将丢弃90%的消息。这实际上意味着需要平等地扩展所有消费者,因为他们实际上将消费相同数量的消息。

    有几种策略:

  • 您可以使用事件类型作为键来设置分区,并让使用者使用每个分区
  • 在不同主题中推送不同的事件类型。 “已创建事件”改为“已创建主题”,“已更新事件”改为“已更新主题”
  • 将所有事件推到一个主题中。使用Kafka stream来使用事件,并根据事件类型进行过滤,并进行进一步处理 就我个人而言,我更喜欢第三个,使用卡夫卡流过滤事件。
    关于扩展,您可以扩展到最大数量的分区。

    有几种策略:

  • 您可以使用事件类型作为键来设置分区,并让使用者使用每个分区
  • 在不同主题中推送不同的事件类型。 “已创建事件”改为“已创建主题”,“已更新事件”改为“已更新主题”
  • 将所有事件推到一个主题中。使用Kafka stream来使用事件,并根据事件类型进行过滤,并进行进一步处理 就我个人而言,我更喜欢第三个,使用卡夫卡流过滤事件。
    关于扩展,您可以扩展到最大分区数。

    是的,相同。是的,相同。