いくつかのサービスを開発し、APIをいくつかの第三者に公開する必要があります。 これらのサービスでは、(単純なCRUDだけでなく)複雑な計算を伴うデータのフェッチ/挿入/更新/削除が必要な場合があります。私はSpringとMyBatisを使用する予定です。複数のデータベースを使用してフェールオーバーをサポートするSpring + MyBatisのベスト・アプローチ
しかし、実際の課題は、同じデータを持つ複数のDBノードが存在することです(いくつかの外部設定では、それらを同期させて管理することになります)。私はいくつかのデータを要求したときに、ランダムに1つのDBノードを選択してクエリを実行し、結果を返す必要があります。選択されたDBに到達できない場合や、ネットワークに問題がある場合や、未知の問題がある場合は、他のDBノードに接続する必要があります。
私はSpringのAbstractRoutingDataSourceを認識しています。しかし、どこにDB接続リトライロジックを注入するのですか?データソースを動的に切り替えると、Springはトランザクションを正しく処理しますか?
Springを避ける必要がありますか?& MyBatisはすぐに使用でき、MyBatisを使用して自分でトランザクション管理を行いますか?
あなたは何をお勧めしますか?
クエリごとにランダムにデータベースを選択するのはなぜですか?実際に何かが間違っていることを実際に認識するまで、単一のサーバーを使用してみませんか? – Killnine