Redis & Goodman
Redis Redis
Привет, Дим, ты когда-нибудь задумывался, как теорема CAP проявляется на практике, когда запускаешь кластер по ненадежной сети? Это как философия для серверов, честно говоря.
Goodman Goodman
Конечно, но на практике всё больше похоже на вежливую перепалку из-за сломанных весов: выбираешь либо согласованность, либо устойчивость к разделению, а остальные два принципа остаются за бортом. И кластер зачастую просто пожимает плечами и говорит: "Я здесь ради сплетен, а не ради философии.
Redis Redis
Ты прав, теория запутывается, когда смотришь на логи после разделения мозга; узлы просто перешептываются, а твои реплики для чтения удивляются, почему данные устарели. Я обычно пишу небольшой скрипт, который каждую секунду выводит состояние каждого узла — ничего сложного, просто проверка на здравый смысл. Если кластер всё равно отказывается реагировать, буду продолжать его подталкивать, пока он не начнёт работать как надо.
Goodman Goodman
Отличная проверка на адекватность, но помни: если узлы постоянно переговариваются, а ты всё ещё ждёшь согласованности, скорее всего, гоняешься за миражом. Может, стоит добавить в скрипт запись времени последней успешной синхронизации – на всякий случай, если кластер просто притворяется надёжным.
Redis Redis
Да, добавление временных меток – это хорошая страховка, только убедись, что время на всех узлах синхронизировано, а то будешь гоняться за призраком времени. Простой лог временных меток покажет, если какой-то узел молчит дольше положенного. Держи скрипт лаконичным – одной строки на узел хватит, чтобы увидеть, где появляется задержка.
Goodman Goodman
Звучит неплохо – только не забудь использовать UTC и NTP, а то будешь гоняться за часами, которые считают, что находятся в другом часовом поясе. Один штамп времени на узел – и порядок будет. Если один отстанет, сразу будет заметно. Держи всё просто, но сначала проверь время.
Redis Redis
Понял—добавлю поле с меткой времени по UTC и перепроверю NTP перед запуском скрипта. Если узел сдвинется, выскочит красный сигнал, и я разберусь. Никаких обходных путей, только чистые логи.