Так как запросы и нужды росли, нам перестало хватать 80 RPS/store
а с новой схемой, carbonserver <-> carbonzipper может обслуживать несколько тысяч запросов в секунду - то есть больше эта связка не узкое место
(картинка с одного из последних кластеров со старым хэшом)
Когда store серверов становится много, встает вопрос о том как этим управлять
И в большинстве случаев люди приходят к использованию какого-нибудь consistent hash'а
В carbon-relay есть свой, но нас он быстро перестал устраивать
Собственно возвращаясь на минутку - хэш нужен чтобы отправлять метрики только на какой-то определенный store
а свойство консистентности гарантирует то, что добивив новый сервер ты не получишь полного перераспределения метрик. Только часть со старых серверов смигрирует на новый.
Но как и у любого хэша, встает вопрос того насколько хороша сама функция
Мы реализовали одну из более равномерных, но там тоже возникли те же проблемы
Собственно на картинке выше - разница между самым загруженным и свободным серверов составляет несколько тысяч метрик в секунду.