Репликация с AWS ElastiCache (Memcached) - PullRequest
0 голосов
/ 02 мая 2019

Я использую AWS ElastiCache Cluster (memcached) с несколькими узлами. Кажется, что данные не реплицируются между узлами. При запросе данных из конечной точки кластера ElasticCache иногда возвращаются данные из более ранней записи, но иногда выбирается другой узел для чтения, и данные не могут быть найдены.

Есть ли практический способ репликации данных между узлами с помощью ElastiCache (Memcached)? (Я бы предпочел избегать сложного решения, которым мне нужно управлять самостоятельно, поскольку это противоречит цели использования управляемого сервиса, такого как ElastiCache)

Мне было поручено перенести устаревшее предварительное приложение на AWS, предыдущая конфигурация сервера мне недоступна.

Альтернативный подход, который я рассматривал, заключался в том, чтобы гарантировать, что одни и те же экземпляры EC2 всегда попадают на один и тот же узел, однако данные сеанса пользователя также сохраняются в memcached, и это не гарантирует, что последующие запросы пользователей будут выполнены одним и тем же экземпляром EC2 ( используя ALB).

1 Ответ

0 голосов
/ 02 мая 2019

Memcached изначально не поддерживает репликацию.Есть клиенты, которые реализуют репликацию, отправляя запросы на набор множественным конечным точкам.

Как правило, это не проблема, поскольку практически все клиенты Memcached используют хеширование для выбора конкретной конечной точки для ключа.Это означает, что клиент Memcached выполняет свою собственную балансировку нагрузки, и вы никогда не должны использовать балансировщик нагрузки для выбора конечной точки Memcached.Однако иногда (например, из-за короткого перехвата сети) клиент может по-прежнему выбирать другую конечную точку для ключа, что приводит к несоответствиям.

Если вам нужен согласованный управляемый Memcache, вы можете использовать такой сервис, как MemCachier (полное раскрытие, в настоящее время я работаю в MemCachier).Любой план MemCachier с несколькими конечными точками всегда согласован, т. Е. Каждая конечная точка всегда имеет одинаковый вид вашего кэша.

...