我想有一个实时高效的系统来执行实时窗口计数器的事件。例如,过去30分钟内每个国家的点击次数。我的想法如下,使用Kafka和Cassandra:
当点击事件e在时间t发生时,一个增量被发送到累加器(为此我想使用cassandra计数器);同时,该事件应在t+30min时产生一个递减事件,基本上标志着事件e退出感兴趣窗口。然后,该减量将在时间t+30min存储在累加器中。在任何时间查询累加器将给出当前正确的计数器值
我不知道如何使用kafa实现这一点。我想了两种方法
点击发送到主题c;使用者将从c中读取并在主题cdelayed中生成事件和消息(tdelay,key);另一个消费者将从cdelayed读取并检查第一条消息的内容:如果消息中的时间戳等于或晚于当前时间,则读取消息并将减量发送到累加器
主消费者将从c进行轮询,并且在执行第一次读取时将触发延迟消费者,该延迟消费者将在从最早的时间戳开始读取之前睡眠30分钟;后者负责递减,前者负责递增
两种解决方案中哪一种是最好的?如果我1)阻止消费者或2)延迟消费者,我是否以正确的方式使用kafka api?
暂无答案!
目前还没有任何答案,快来回答吧!