我正在研究基于Apache Flink的金融反欺诈系统。我需要根据金融交易计算许多不同的总计。我使用Kafka作为流数据源。例如,在平均交易金额计算中,我使用MapState存储总交易次数和每张卡的总金额。聚合数据存储在Apache Accumulo中。我知道Flink中的持久状态,但这不是我所需要的。有什么方法可以在计算开始之前将初始数据加载到Flink中?是否可以通过将两个连接的流与来自Accumulo的数据一起使用最新计算的聚合和事务流来完成?事务流是无限的,而聚集流则不是。我应该挖掘哪种方式?任何帮助表示赞赏。

我考虑过AsyncIO,但是状态不能与异步函数一起使用。我的想法是:在内存状态下检查聚合。如果此处没有卡的数据,则代码将调用存储服务,从中获取数据,执行计算并更新内存中状态,因此,无需通过调用外部数据服务来处理该卡的下一次交易。但是我认为这是一个很大的瓶颈。

最佳答案

您可以这样尝试:

TASK::setInitialState
    TASK::invoke
        create basic utils (config, etc) and load the chain of operators
        setup-operators
        task-specific-init
        initialize-operator-states
        open-operators
        run
        close-operators
        dispose-operators
        task-specific-cleanup
        common-cleanup

10-07 12:24