@anonymous Диаграмма показывает, как надо размазать данные по N серверам (количество сегментов в отдельном кольце) и создавая K копий (количество колец) для достижения максимальной отказоустойчивости.
consistent hashing ring же означает подход, при котором в хранилище ключ-значение пространство ключей организцется в виде кольца и отдельные серверы отвечают за конкретные его сегменты, т.е. имея в наличии только ключ и зная характристики кольца, можно точно сказать, на какой из серверов надо пойти, чтобы прочитать/записать данные. Альтернативой данному подходу являются серверы метаданных, которые хранят информацию о том, какой ключ на каком из серверх хранится.
Недостатком первого подхода является негибкость, т.к., например, при добавлении сегмента в кольце (нового сервера в кластер) все остальные смещаются и надо перемещать кучу данных во всем кластере, что при большом размере кластера затратно. Недостатком второго подхода является необходимость отдельного хранилища метаданных, которое становится SPoF и также узким местом в производительности хранилища.
@etw Ах да, еще consistent hashing ring используется в балансировщиках нагрузки, чтобы один и тот же клиент всегда попадал на один и тот же сервер бэкенда, что дает лучший cache hit, а также отсутствие необходимости отслеживать клиентские сессии на балансировщиках и синхронизировать их (если балансировщиков несколько), недостатки также очевидны: если количество бэкендов меняется, пользователи начинают попадать на другие бэкенды, cache hit падает до нуля, в особо тяжелых случаях сессии пользователей рвутся.
Требую поддержки древнего говна!