2013-08-14 2 views
2

В Memcached Обзор hereПочему Memcached не синхронизируется между узлами

Он говорит:

Memcached servers are generally unaware of each other. There is no crosstalk, no syncronization, no broadcasting. The lack of interconnections means adding more servers will usually add more capacity as you expect. There might be exceptions to this rule, but they are exceptions and carefully regarded. 

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

ответ

3

Memcache не дает никаких особенностей, связанных с ключом сегментирование, хеширования, репликация, HA, избыточности или сбоя.

Это клиент библиотеки, которые используют некоторый тип алгоритма хэширования для распространения ключей через кластер серверов memcached, но эта функциональность полностью не зависит от самого memcached.

Там много клиентских библиотек, в зависимости от вашего целевого языка, просто выбрать тот, который обеспечивает функции хеширования вам нужно, и вы хорошо идти:
http://code.google.com/p/memcached/wiki/Clients

-1

Если вы спросите кэш памяти для записи в кэш-память для ключа X, он посылает трафик на осколок ч (X) где Н отображает элемент в узел он живет. Если вы хотите читать из кеша для ключа X, аналогичным образом трафик переходит к shard h (X) аналогичным образом.

+0

Спасибо. Так никогда не бывает избыточности? В этом случае, как он обрабатывает переход на другой ресурс? – Victor

+0

@ Victor Это не так; этот ответ немного вводит в заблуждение, см. комментарии ниже. – raffian