作为kafka的新手,我们想知道kafka是否支持我们的用例。 我们正在尝试创建一个包含不同类型事件的事件流,例如创建,更新,删除。
我们有两种消费者
我们的数据将被不平等地分割,例如我们可以将80%的数据作为“已创建”,并将10%的数据作为“已更新”。
我们想知道什么是对此的好策略? 基于混合数据的额外缩放要求是
运行5个AuditConsumer实例。
运行4个CreateConsumer实例。
运行1个UpdateConsumer实例。
答案 0 :(得分:1)
我个人将为每种事件类型创建一个主题,并创建另一个使用者以将事件流式传输到适当的频道。
以下内容稍微复杂些,涉及更多主题,但可以使您创建更简化的过程。
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%。这实际上意味着需要平等地缩放所有使用者,因为他们实际上将消耗相同数量的消息。
答案 1 :(得分:1)
可以有几种策略:
就个人而言,我更喜欢第3个,使用kafka流过滤事件。 关于扩展,您可以扩展到最大分区数。