ドルイド接続プールでのflinkの使用

ブロガーがflink統合接続プールを使用する前は、常に誤解がありました。これは、プログラムによるリソースの作成を減らすことです。すべてのロードリソースまたは接続の取得は、リソースの使用を減らすことができますが、flinkのopenメソッドに配置されます。 。ほとんどのシナリオに対応できますが、たとえば、mysql接続が長期間使用されない場合、接続はmysqlデータベース自体によって再利用されます。

Druidについて簡単に紹介
します。DRUIDはAlibabaのオープンソースプラットフォームでのデータベース接続プールの実装です。C3P0、DBCP、PROXOOL、その他のDBプールの利点を組み合わせ、ログ監視を追加して、DBプール接続とSQLを適切に監視できます。実装は監視用のDB接続プールと言えます(現時点で最良の接続プールと言われていますが、速度がBoneCPより速いかどうかはわかりません)。

構成パラメーター
DRUIDのDataSourceクラスは、他の接続プールと同じです:com.alibaba.druid.pool.DruidDataSource。基本的な構成パラメーターは次のとおりです。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
ここに画像の説明を挿入します
私の使用:

 @Override
    public void open(Configuration parameters) throws Exception {
        dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("****");
        dataSource.setUsername("***");
        dataSource.setPassword("****");
        dataSource.setInitialSize(10);   //初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
        dataSource.setMinIdle(10);  //最小连接池数量
        dataSource.setMaxActive(20);  //最大连接池数量
        dataSource.setMaxWait(1000 * 20); //获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
        dataSource.setTimeBetweenEvictionRunsMillis(1000 * 60);  //有两个含义:1) Destroy线程会检测连接的间隔时间2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
        dataSource.setMaxEvictableIdleTimeMillis(1000 * 60 * 60 * 10);  //<!-- 配置一个连接在池中最大生存的时间,单位是毫秒 -->
        dataSource.setMinEvictableIdleTimeMillis(1000 * 60 * 60 * 9);  //<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        dataSource.setTestWhileIdle(true);  // <!-- 这里建议配置为TRUE,防止取到的连接不可用 -->
        dataSource.setTestOnBorrow(true);
        dataSource.setTestOnReturn(false);
        dataSource.setValidationQuery("select 1");
    }

flinkのopenメソッドで接続プールを作成し、使用時にgetConnectionを介して接続を取得します。使用後、.closeメソッドを呼び出して接続を接続プールに戻します。

おすすめ

転載: blog.csdn.net/qq_44962429/article/details/106406954