如何跨flink操作符共享jdbc数据源?

siv3szwd  于 2021-06-21  发布在  Flink
关注(0)|答案(0)|浏览(209)

我需要访问多运营商的数据库。目前的解决方案是 AbstractRichFunction 管理数据源的生命周期 open 以及 close 方法。
这是我的密码:

public class DbRichFunction extends AbstractRichFunction {
    private final DbConfig dbConfig;
    private transient DataSource dataSource;

    public DbRichFunction(DbConfig dbConfig) {
        this.dbConfig= dbConfig;
    }

    @Override
    public void open(Configuration parameters) throws Exception {
        dataSource = dbConfig.create();
    }

    @Override
    public void close() throws Exception {
        dataSource.close();
    }
}

如果我可以在同一个jvm中共享同一个示例跨任务(同一个操作符与否),这将节省资源。我不确定如果我使用带有引用计数器的静态变量是否会导致内存泄漏。
我想做的是:

public class DbRichFunction extends AbstractRichFunction {
    private transient DataSource dataSource;

    public DbRichFunction() {
    }

    @Override
    public void open(Configuration parameters) throws Exception {
        dataSource = DbConfig.acquire();
    }

    @Override
    public void close() throws Exception {
        DbConfig.release();
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题