Как php знает, в каком memcached узле искать свои данные?
Я новичок в мире кластеров Memcached
Если у меня есть веб-приложение php, которое использует memcache - как оно делает свой хеш и решает, какой узел проверять определенное значение, чтобы избежать необходимости проверять их все.
Бонус: Как я могу легко добавить узел таким образом, чтобы избежать необходимости перестраивать все хэши.
1 ответ
Клиенты Memcache знают, какой узел проверять, хэшируя значение ключа. По умолчанию он использует значение ключа crc32. В старом стиле вы бы сделали что-то вроде
serverId = crc32(key) % servers.size
Это означало, что при добавлении нового узла сервера большинство вещей переназначается на другой узел.
Для получения бонуса используйте новый стиль, где каждый узел покрывает линейную яркость значений crc, определяемых случайно выбранным номером сервера, а не каждым N-м значением. Это называется последовательным хешированием.