Доброго времени суток, есть высоконагруженная программа, использующая redis как способ доставки сообщений.
Никаких высокоуровневых утилит, типа sentinel, мы не используем. Все вручную. Для каждого шарда создается свой объект в программе, в каждом узле программы хранятся в map’ке записи о текущих подключенных шардах.
Список доступных шардов программа получает при запуске, из переменных окружения.
Вопрос следующий: если отпал один из шардов, как оповестить программу о доступности нового шарда, без ее перезапуска? Вообще на ум приходит перезагрузка конфига через SIGHUP, но подумала, что может быть способ получше.
используем библиотеку redigo
UPD
Так как программа разворачивается на Kubernetes, может есть какие-то плюшки с уведомлением о доступности нового кластера? Или в configmap можно как-то использовать реактивность?
программа слушает сообщения от нескольких инстансов Redis? Может какое-то «служебное» сообщение предусмотреть, которое обновляет список доступных серверов?
Почему бы не воспользоваться consul.io? Этот инструмент как раз для этого и предназначен.
В принципе, подойдет любое распределенное хранилище, начиная от zookeper и заканчивая etcd.