我们有一个用例,其中我们每天在Kafka中获得数百万个事件。每个事件类似于:
{"id" 123年,"state":"开始/在途的/stop","ts":"01-02-2021 12:00:00"}
对于每个id,我们可以有多个事件
我们需要生成警报,以防在xx天后这些事件流中没有收到特定id的任何一个状态。例如id 123,如果我们在5天后没有收到运输事件。
一种方法是将所有内容存储在数据湖中,并在其上连续运行spark作业。
我的问题是:我们是否可以在xx天后为每个id调度作业,并使用Kafka授权它,使其成为分布式的。
这样做,我们就不会连续轮询和检查是否违反了警报条件,而是在特定的时间安排一个作业,我们可以查询警报条件。
您可以为正在进行的事件创建一个紧凑的主题,该主题存储所有启动/传输状态,其中stop是用于从KTable中删除ID的delete。
但是,您仍然需要每秒扫描表,以验证任何时间戳不超过其窗口