我有一个事件流,需要丰富订阅信息。有些事件是广播事件,也就是说当收到这样的事件时,我需要去数据库表中,找到该事件的所有订阅者,在我的用例中可以是10000行,然后将单个广播事件转化为10000个通知事件。对于普通的事件类型,有额外的user_id键可以用来加入订阅表,不存在这个问题。
面临的挑战是
我刚刚开始使用Flink,对于这个用例,什么是正确的或性能良好的架构?如果需要的话,可以将广播事件类型和正常事件类型分成两个源。
理想情况下,你可以提供辅助信息(数据库表)作为额外的输入给Flink,然后简单地使用连接。只有当信息可以被Flink连接器获取时,这才是可行的。这样做的好处是,如果你做得正确,即使表的更新也会适当地反映在输出中。你也不需要关心结果的大小,因为这将由Flink自动处理。
另外,你也可以使用 asyncIO
特别是为了与外部系统互动而制作的。它的缺点是 asyncIO
是目前所有活动请求的所有结果都必须放入主内存中。但这对于10_000行来说应该是可行的,尤其是各个事件似乎很少发生。