Мне нужно разработать некоторые службы и предоставить API некоторым третьим лицам. В этих службах мне может потребоваться выборка/вставка/обновление/удаление данных с использованием некоторых сложных вычислений (а не просто CRUD). Я планирую использовать Spring и MyBatis.Лучший подход для Spring + MyBatis с несколькими базами данных для поддержки отказоустойчивости
Но реальная проблема заключается в том, что будут несколько узлов БД с одинаковыми данными (некоторые внешние настройки позаботятся об их синхронизации). Когда я получил запрос на некоторые данные, мне нужно случайно выбрать один узел БД и запросить его и вернуть результаты. Если выбранная БД недоступна или имеет некоторые сетевые проблемы или неизвестную проблему, мне нужно попытаться подключиться к другому узлу БД.
Мне известно о SpringRoutingDataSource от Spring. Но куда вводить логику повторного подключения DB Connection? Будет ли Spring обрабатывать транзакции правильно, если я динамически переключаю dataSource?
Или я должен избегать весны & Интеграция MyBatis из готового продукта и управление транзакциями самостоятельно с помощью MyBatis?
Что вы предлагаете?
Зачем выбирать базу данных наугад для каждого запроса? Почему бы не использовать один сервер, пока вы не поймете, что с ним что-то не так? – Killnine