Глобальная Redis Twemproxy Architecture

Я запускаю глобальный сервис для стека Node/Mongo/Redis. У меня есть вопрос по архитектуре моего конфига Redis/Twemproxy. В этом суть проблемы: все мои данные являются "глобальными", то есть пользователям из любой точки мира необходим доступ к одним и тем же данным. К сожалению, через океан проходит ~300 мсек, поэтому, чтобы избежать медленного чтения, мне нужно разместить копию всех моих данных на сервере, который является "локальным" для пользователя.

Это довольно легко сделать с MongoDB. Вы просто создаете набор реплик с членами по всему земному шару, и вы устанавливаете readPreference как "ближайший" (минимальная задержка). Готово.

Однако с Redis/Twemproxy это не так просто...

Мое текущее решение состоит в том, чтобы серьезно повлиять на производительность записи путем записи на каждый глобальный сервер (в рамках цикла req/res). Это приводит к более быстрому чтению, так как я могу позволить каждому пользователю читать из локального набора данных. Если вы делаете это наоборот, пишите "local", читаете "global" - вы экономите кучу места (у вас есть только одна копия данных), но чтение требует огромного снижения производительности. Если бы мне пришлось выбирать, мне нужно быстрее читать.

Я попытался создать "главный" кластер (AMER), а затем подчинить ему другие "глобальные" кластеры (ASIA, EUROPE), но когда я попытался прочитать данные из "глобальных" кластеров, он ничего не дал. Это работает с одним экземпляром Redis, поэтому я предполагаю, что это связано с добавлением Twemproxy и отображением ключей.

У кого-нибудь есть какие-либо предложения или идеи? Каков оптимальный способ настройки глобальной архитектуры Redis / Twemprox?

0 ответов

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