Назад | Перейти на главную страницу

Медленное соединение между ведущим и ведомым Redis

У меня небольшая (~ 40 МБ, данные мониторинга + много обработанных метрик) основная база данных redis, но большая часть ключей обновляется очень часто (максимальное время между обновлениями составляет 60 секунд). Этот сервер размещен в стране (регион A), у которой очень плохой пиринг с остальным миром (непоследовательный и медленный большую часть времени). При подключении нового ведомого устройства из-за пределов страны (регион B) полная репликация занимает около 300 секунд. В то же время мастер начинает накапливать отставание, когда новое подчиненное устройство завершает начальную репликацию, ему никогда не удается догнать мастера.

Это создает несколько проблем, ведущее устройство потребляет все больше и больше памяти до тех пор, пока OOM не выполнит свою работу, а ведомое устройство никогда не будет обновлено до последней версии. У меня есть несколько второстепенных ведомых устройств за пределами основного региона, которые связаны после этого первого ведомого. Они никогда не обновляются, поскольку первое подчиненное устройство никогда не завершает репликацию после первого полного (байты смещения подчиненного и главного устройства, возвращаемые "репликацией информации" на главном устройстве, расходятся отдельно).

Я просмотрел документацию и поискал в Интернете, но я не смог найти ключ к тому, что можно сделать. В настоящий момент я принудительно выполняю полную репликацию с "ничем не подчиненным; подчиненным" каждые 10 минут, но это действительно не идеально.

Приветствуются любые предложения относительно того, что может решить мою проблему. На данный момент я рассматриваю возможность дублирования службы и передачи только минимального набора данных (только данные мониторинга) и репликации обработки в регионе B, но пока я хотел бы найти более надежное решение.