Привет, цветочки,
Можем ли мы в настройке Sentinel/кластера Redis использовать команду WAIT с общим количеством ведомых устройств, чтобы обеспечить строгую согласованность между серверами Redis? Почему нет?
С уважением
Привет, цветочки,
Можем ли мы в настройке Sentinel/кластера Redis использовать команду WAIT с общим количеством ведомых устройств, чтобы обеспечить строгую согласованность между серверами Redis? Почему нет?
С уважением
WAIT
реализует синхронную репликацию для Redis. Синхронная репликация требуется, но недостаточна для достижения строгой согласованности. Сильная согласованность — это практически сумма двух вещей:
WAIT не предоставляет "2". Процесс репликации в Redis выполняется Sentinel или Redis Cluster и не может предоставить свойство 2
(поскольку синхронная репликация в Redis является исключением, а не правилом, поэтому этому аспекту не уделялось особого внимания). Однако репликация Redis пытается продвигать ведомое устройство, которое похоже, сохраняет наибольший объем данных. Хотя это не меняет теоретических гарантий аварийного переключения Redis, при котором все еще могут быть потеряны подтвержденные записи, это означает, что если вы используете WAIT
, в памяти будет больше ведомых устройств, выполняющих данную операцию, и, в свою очередь, гораздо более вероятно, что в в случае аварийного переключения операция будет сохранена. Однако, несмотря на то, что это затруднит запуск режима сбоя, который отбрасывает подтвержденную операцию, всегда существует режим сбоя с такими свойствами.
TLDR: WAIT
не делает Redis линеаризуемым, он гарантирует, что указанное количество ведомых устройств получит запись, что, в свою очередь, делает аварийное переключение более надежным, но без каких-либо жестких гарантий.
fsync=always
, иначе во время перезапуска каждая реплика может потерять записи, что сделает схему слабой.
- person antirez; 15.12.2015
fsync=always
, а RDB будет отключен. 2 подчиненных устройства этого мастера не будут вести журналы. Будет ли это полностью безопасно (учитывая, что жесткий диск мастера никогда не выйдет из строя), или мне следует также записать RDB в один из ведомых устройств? (Хотя я не чувствую необходимости.)
- person ptntialunrlsd; 16.12.2015
fsync=always
.
- person Sergei Patiakin; 14.09.2016