我正在设计一个基于 Kafka 的事件源架构,并使用 Flink 进行流处理。
一个用例是查询(过滤和排序结果(随着时间的推移通过 Kafka 主题的历史交易数据。 例如,"给我过去 5 年中具有这些属性的所有交易,按 xx 排序"。 总贸易历史将在1000万左右,每年增加100万。
Flink 本身是否是此类历史查询的正确工具,并且能够以合理的性能(几秒钟(做到这一点? 或者我是否最好将来自 Kafka 的事件馈送到像 MongoDB/RDBMS 这样的可索引/可查询数据存储中,并将其用于历史查询?
做前者感觉它会更紧密地遵循 Kappa 架构,而诉诸历史数据库感觉就像我正在远离它回到 Lambda 架构。
Flink 非常适合处理来自 Kafka 主题(或任何其他数据源(的历史数据,因为它支持事件时间处理,即基于记录中的时间戳而不是基于处理机器时钟的基于时间的处理(也称为处理时间(。
如果你只想执行分析,你可能想看看 Flink 的 SQL 支持。