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

Распределение Memcached

У меня вопрос о распределении memcached по узлам. У нас есть 20 узлов memcached по 200 ГБ на каждом. Наши приложения - это приложения PHP.

$memcache->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

Каков будет результат, если произойдет следующее:

  1. Узел 2 выходит из строя
  2. Ключ "XXX", который находится на узле 2, просит установить

    => Я полагаю, что ключ будет записан на другом узле, возможно узле 5

  3. Узел 2 возвращается
  4. Попробуйте получить ключ «ХХХ».

От какого узла memcached будет получать ключ: от узла 5 или узла 2?

Узел выбирается на основе алгоритма хеширования, который решает, как распределять ключи между доступными хостами. Вы можете прочитать о двух типах распространения, предлагаемых клиентской библиотекой PHP, поискав Memcached::DISTRIBUTION_MODULA и Memcached::DISTRIBUTION_CONSISTENT алгоритмы распределения.

По мере добавления или удаления узлов это может привести к получению / сохранению для любого конкретного ключа, приземляющегося на том же или другом узле, но в конечном итоге это не имеет значения. Вы все равно будете заполнять ключ при промахе кеша в новом узле, и любое старое значение для того же ключа в других узлах просто не будет доступно, истечет и исчезнет.

С точки зрения хранения Memcache больше похож на матрас, чем на банк.