AbstractRoutingDataSource позволяет динамически выбирать DataSource per-запрос. @ReadOnly аннотация или @Transactional(readOnly=true) → направить в replica. Write транзакции → primary. Реализация: кастомный AbstractRoutingDataSource.determineCurrentLookupKey() смотрит на TransactionSynchronizationManager.isCurrentTransactionReadOnly(). Важно: replica лагает за primary (replication lag) — данные могут быть немного устаревшими. Не использовать replica для reads после writes в одной операции.
Как построить read replica стратегию в Spring Boot?
Senior
199 просмотровAFK Offer AI
Что такое off-heap memory и когда её использовать?