Неравномерное попадание в кэш

Я интегрировал twemproxy в веб-слой, и у меня есть 6 Elasticache(1 мастер, 5 реплик чтения). У меня возникает проблема, что все реплики имеют одинаковые ключи, все одинаковые, но попадания в кэш на одной реплике намного больше, чем у других, и я выполнил несколько загрузок. тестирование по-прежнему на каждом тесте я получаю один и тот же результат. У меня есть отдельный механизм обработки данных, который записывает данные на мастер этого кластера, а остальные 5 реплик получают синхронизацию с ним. Поэтому я использую twemproxy только для чтения данных из Elasticache, а не для шардинга. Поэтому мой простой вопрос: почему я получаю 90% обращений к одиночным репликам чтения Elasticache, которые должны равномерно распределять попадания по всем репликам чтения? право?

заранее спасибо

1 ответ

Twemproxy хэширует все, насколько я помню. Это означает, что он попытается разделить ключи между мастерами, которые вы ему дадите. Если у вас есть один мастер, это означает, что он хэширует все на одном сервере. Таким образом, что касается этого, у вас есть один сервер для приемлемых запросов. Таким образом, это не поможет вам в этом случае.

Если вы хотите иметь единственную конечную точку для распределения чтений по банку идентичных ведомых устройств, вам нужно будет установить балансировщик нагрузки TCP перед подчиненными и заставить ваше приложение общаться с IP: портом балансировщика нагрузки. Распространенными вариантами являются Nginx и HAProxy для программных приложений, в AWS вы можете использовать их балансировщик нагрузки, но вы можете столкнуться с различными ограничениями ресурсов вне вашего контроля, и почти любой аппаратный балансировщик нагрузки также будет работать (хотя это сложно, если не возможно на AWS).

Какой балансировщик нагрузки использовать, зависит от вашего (или вашего персонала) уровня комфорта и уровня знаний в каждой опции.

Другие вопросы по тегам