使用Kafka的实时窗口计数器

时间:2019-01-14 21:22:06

标签: apache-kafka kafka-consumer-api

我希望有一个实时高效的系统来执行事件的实时窗口计数器。例如,最近30分钟内每个国家/地区的点击次数。我的想法是,使用Kafka和Cassandra:

当在时间 t 发生点击事件 e 时,会将增量发送到累加器(我想为此目的使用Cassandra计数器);同时,此事件应在时间 t + 30min 处生成一个递减事件,该事件基本上标志着事件e从关注窗口的退出。然后,该减量将在时间 t + 30min 处存储在累加器中。随时查询累加器将给出当前正确的计数器值

我不确定如何使用Kafa实现这一目标。我想到了两种方法

    点击被发送到主题C;消费者将从C中读取内容并在带有消息( Tdelay key )的主题 Cdelayed 中产生事件;另一个使用者将从 Cdelayed 中读取并检查所读取的第一条消息的内容:如果消息中的时间戳等于或当前时间之后,则读取消息并将减量发送到累加器
  1. 主要使用者将从 C 中进行轮询,并且在执行首次读取时将触发延迟的使用者,该使用者将从最早的时间戳开始读取之前会休眠30分钟;后者将负责减量,前者将负责增量

这两种解决方案中哪一种是最好的?如果我1)阻止使用者或2)延迟使用者,我是否以正确的方式使用Kafka API?

0 个答案:

没有答案