我有以下任务:假设我正在开发一个由一百万用户使用的在线商店。用户在不同的时间进行购买。每个用户的每次购买都会变成一次交易事件。我想立即处理这些事件,如果用户在下周或一个月(可配置的时间段)内至少再进行三笔交易,我想给用户某种礼物。
我想问一下是否可以用Kafka和Kafka Streams来实现这样的任务。例如,当用户进行第一笔交易时,我想向 Kafka Streams 分配一个任务,以跟踪该用户从该时刻起在一周内进行的交易数量。如果该用户在该周内进行的新交易数量超过 3 笔,Kafka Streams 应该为我生成一个事件。
面临的挑战是,一百万个用户可能会在不同的时间进行购买,在最坏的情况下,我需要为 Kafka Streams 分配一百万个这样的任务,每个任务都有一个独特的滑动时间窗口(基于其第一笔交易的时间)系统中)。是否可以在 Kafka Streams 中实现这一点,并且它们可以扩展以处理那么多任务吗?
跟踪该用户从该时刻起一周内进行的交易数量
是的。从第一个事件开始使用SessionWindow。
需要为 Kafka Streams 分配一百万个这样的任务
Kafka Streams 任务不能超过其正在使用的主题中的分区数量。 Kafka 无法处理数百万个主题/分区。