Я использую spymemcached & HashAlgorithm.KETAMA_HASH для подключения к пулу memcached из 5 узлов.Как справиться с восстанавливаемыми memcached узлами при использовании spymemcached и HashAlgorithm.KETAMA_HASH
Я понимаю, когда мы используем алгоритм последовательного хеширования, как, когда узел вниз, нам не нужно беспокоиться, как ключ будет перераспределяться (с мин. Воздействия)
Что делать, если при сокращенный узел собирается присоединиться к пулу. Что мне нужно сделать?
Должен ли я быть уверенным, что устаревшие данные необходимо удалить? Или должна ли моя программа нуждаться в специальной обработке для этого случая?
Я понимаю, что мне нужно очистить все устаревшие данные во всех узлах. Зачем? Потому что некоторые клиенты могут видеть, что вниз-вверх узел вверх, но некоторые клиенты могут все еще предположить, что узел опущен. Поэтому, учитывая, что клиенты могут использовать хэш-ключ в другом узле, может возникнуть несогласованность данных. Но эта проблема сложна, если у нас нет возможности заблокировать все узлы memcached и выполнить флеш - чтобы избежать состояния гонки. – Howard
Основываясь на моем мнении, я думаю, что безопасно только очистить узел вниз. Это чисто, если есть какой-либо запрос к узлу, это приведет к промаху, добавив новую и свежую информацию. Если клиент считает, что он не работает, он будет хешировать на другом узле, что также приведет к промаху. Если это произойдет, у обоих узлов есть ключ «foo», например. Когда нисходящий узел возвращается к этому клиенту, вам нужно снова его очистить. Вот еще об этом: http://www.caiapps.com/duplicate-key-problem-in-memcache-php/ –
да, но то, что вы сказали, было действительным только тогда, когда у вас есть один клиент, но несколько серверов. нет способа координировать различные клиенты для использования одного и того же набора серверов memcached в определенный момент времени (предположим, что используется последовательное хеширование). – Howard