私のWebアプリケーションは、Web層とDB層の両方でスケーラビリティをサポートする必要があります。私は次のコンポーネントを持っています:
- N個のWebサーバー(Tomcat)
- シャードキーとしてユーザー名でシャーディングされたMDBサーバー(PostgreSQL)
次のようなシャード戦略:
シャード戦略はルックアップテーブルベースであり、1つのインデックステーブル(username、shardId)ともう1つのシャードテーブル(shardId、connectionString、loading)があります。
シャードDBを定期的に監視し、読み込みステータスフィールドを更新します。
新しいユーザーを作成するときは、常に負荷が最も低いシャードを取得し、インデックステーブルに保存します。
DBシャードは動的に追加または削除されます。
getDBConnection(username)
シャードキー(この場合はログインユーザー)に従って1つのJDBC接続を取得するようなAPIを実装する必要があります。
質問は次のとおりです。
1.接続プールで機能する方法でこのAPIを実装するにはどうすればよいですか?各シャードが500の接続をサポートしているとすると、Javaコードを介してこれをどのように行うことができますか?