У меня довольно тяжелый java-сайт, который обслуживает тысячи запросов/сек, и он использует master Postgresql db, который реплицируется на одну вторичную (только для чтения) базу данных с использованием потоковой (асинхронной) репликации.
Таким образом, я отделяю запрос от первичного до вторичного (только для чтения) с использованием URL-адресов, чтобы избежать вызовов только для чтения, чтобы первичная база данных ошибок считала, что время репликации минимально.
ПРИМЕЧАНИЕ. Я использую один sessionFactory с источником RoutingDataSource, предоставленным весной, который ищет db для использования на основе ключа. Я заинтересован в многопользовательской работе, поскольку я использую hibernate 4.3.4, который ее поддерживает.
У меня есть два вопроса:
- Я не думаю, что разделение на основе URL-адресов является эффективным, поскольку я могу перемещать только 10% трафика, потому что URL-адресов, доступных только для чтения, недостаточно. Какой подход следует рассмотреть?
- Может быть, каким-то образом, на основе URL-адресов я достигаю некоторый уровень распределения среди обоих узлов, но что бы я сделал с моими кварцевыми заданиями (у которых даже есть отдельная JVM)? Какой прагматичный подход я должен принять?
Я знаю, что я не могу получить идеальный ответ здесь, так как это действительно широко, но я просто хочу, чтобы ваше мнение касалось контекста.
Dudes У меня в моей команде:
- Spring4
- Hibernate4
- Quartz2.2
- Java7/Tomcat7
Пожалуйста, проявите интерес. Заранее спасибо.