Kafka主题寻址/消费

zwghvu4y  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(404)

作为Kafka的新手,我们想知道Kafka是否支持我们的用例。我们正在尝试创建一个eventstream,其中包含不同类型的事件,例如创建、更新、删除。
我们有两种消费者
它需要连续地消耗整个流,考虑一个审计消费者。
只需要订阅一种事件类型的选择性消费者,例如created->createconsumer,updated->updateconsumer。
我们的数据将是不平等的划分,例如,我们可以有80%的数据创建和10%的数据更新。
我们想知道什么是一个好的策略?基于混合数据的额外缩放要求是
运行auditconsumer的5个示例。
运行createconsumer的4个示例。
运行updateconsumer的1个示例。

ars1skjm

ars1skjm1#

我个人会为每种事件类型创建一个主题,并创建另一个使用者来将事件流式传输到适当的通道。
下面的内容稍微复杂一点,涉及更多的主题,但可以让您创建一个更精简的流程。 CreatedEvent / UpdatedEvent / DeletedEvent 写在主题上 event_input_stream . AuditConsumer 消耗自 event_input_stream 与消费者群体 audit . EventSplitter 消耗自 event_input_stream 与消费者群体 splitter . EventSplitter 检查事件类型并生成 created_event , updated_event , deleted_event . CreatedConsumer 消耗自 created_event . UpdatedConsumer 消耗自 updated_event . DeletedConsumer 消耗自 deleted_event .

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

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

pn9klfpd

pn9klfpd2#

有几种策略:
您可以使用事件类型作为键来设置分区,并让使用者从每个分区消费。
在不同的主题中推送不同的事件类型。”created\u event“改为created\u topic”,“updated\u event”改为updated\u topic。
将所有事件推到一个主题中。使用kafka流来使用事件,并根据事件类型进行过滤和进一步处理。
就我个人而言,我更喜欢第三个,使用Kafka流过滤事件。关于扩展,您可以扩展到最大分区数。

相关问题