Kafka Streams 用于聚合事件处理和对大量任务的可扩展性

问题描述 投票:0回答:1

我有以下任务:假设我正在开发一个由一百万用户使用的在线商店。用户在不同的时间进行购买。每个用户的每次购买都会变成一次交易事件。我想立即处理这些事件,如果用户在下周或一个月(可配置的时间段)内至少再进行三笔交易,我想给用户某种礼物。

我想问一下是否可以用Kafka和Kafka Streams来实现这样的任务。例如,当用户进行第一笔交易时,我想向 Kafka Streams 分配一个任务,以跟踪该用户从该时刻起在一周内进行的交易数量。如果该用户在该周内进行的新交易数量超过 3 笔,Kafka Streams 应该为我生成一个事件。

面临的挑战是,一百万个用户可能会在不同的时间进行购买,在最坏的情况下,我需要为 Kafka Streams 分配一百万个这样的任务,每个任务都有一个独特的滑动时间窗口(基于其第一笔交易的时间)系统中)。是否可以在 Kafka Streams 中实现这一点,并且它们可以扩展以处理那么多任务吗?

apache-kafka apache-kafka-streams
1个回答
0
投票

跟踪该用户从该时刻起一周内进行的交易数量

是的。从第一个事件开始使用SessionWindow

需要为 Kafka Streams 分配一百万个这样的任务

Kafka Streams 任务不能超过其正在使用的主题中的分区数量。 Kafka 无法处理数百万个主题/分区。

© www.soinside.com 2019 - 2024. All rights reserved.