У меня есть приложение, использующее Redis для кеша, пока оно работает хорошо. Однако нам нужно распространить наши приложения на разные регионы (через динамический диспетчер DNS через местоположение пользователя, локальный пользователь может посетить ближайший сервер). Учитывая ограничение сети и пропускную способность, маловероятно создание централизованного Redis. Таким образом, мы должны назначить разные Redis для разных регионов. Итак, проблема здесь в том, как мы можем справиться со случаем роуминга. Пользователь открывает приложение в местоположении 1, продолжая использовать приложение в местоположении 2, не пропуская кеш в местоположении 1.
Распределение кэша Redis по регионам
Ответы (1)
Вам придется использовать многоуровневую архитектуру. Так работает большинство CDN, таких как Akamai или Amazon Cloudfront. Проще говоря, вот как это работает:
Когда объект запрашивается, проверьте, существует ли он на кэш-сервере Redis S1, назначенном для местоположения L1.
Если его нет на S1, проверьте, существует ли он на кэширующих серверах в других местах, т. е. S2, S3....SN.
Если он найден в S2...SN, сохраните объект также в S1 и обслуживайте объект.
Если объект также не найден в S2...SN, извлеките объект из серверной части и сохраните в S1.
Если вы используете memcached для кэширования, вам поможет проект Facebook с открытым исходным кодом mcrouter, так как он выполняет централизованное кэширование. .
person
DhruvPathak
schedule
09.12.2015
спасибо за подробный ответ, вроде по мере роста нод будет больше проверок кеша на разные ноды. кроме этого, я посмотрю на предложенные вами инструменты.
- person Qingjian Wang; 13.12.2015