Как сбрасывать кеш веб сервера после репликации его локальной БД?
Всем привет.
Имеем Java веб приложение распределенное по нескольким ЦОДам (причем цоды в разных странах). На каждом сервере веб приложения установлен Tomcat и локальная БД PostgresSQL (9.4).
На БД настроена потоковая WAL репликация (мастер-слейвы).
Проблема в том, что после репликации данных, на всех слейвах, необходимо сбрасывать кеш и часто получается, что сброс кеша происходит первее чём сама репликация соответственно пользователи получают старые, уже закешированные, данные (так как обращение к серверам примерно 22-26К запросов в секунду).
Кто как решает такую проблему?
Самое просто, что приходит в голову, просто сделать сброс по timeout-ту скажем в 2-3 сек, тогда реплика точно будет успевать.
К сожалению, из названия репцированных сегментов не понять, какие именно данные были отправлены, соответственно не определить когда сбрасывать кеш и для каких таблиц. Пока сделал задержку в 5 сек, надеюсь станет лучше.