Как MemCacheStore действительно работает с несколькими серверами? - PullRequest
0 голосов
/ 20 апреля 2011

Я не могу найти документацию о поведении ActiveSupport :: Cache :: MemCacheStore где-либо, и я надеюсь, что кто-то здесь может пролить немного света. РДОК говорит :

" Кластеризация и балансировка нагрузки. Можно указать несколько серверов memcached, и MemCacheStore будет балансировать нагрузку между всеми доступными серверами. Если сервер выйдет из строя, MemCacheStore будет игнорировать его, пока он не вернется.

Ok. Мне нужна последняя функция, поэтому, если сервер memcache выходит из строя, весь стек не выходит из строя. Но мне нужно понять функцию балансировки нагрузки. Я предполагаю, что это не просто круговые запросы, так как это может привести к ненужным потерям кэша, кажется. Кроме того, я использую memcache для сеансов, поэтому я не хотел бы, чтобы кто-то вошел в систему, чтобы внезапно не иметь сеанса, потому что клиент memcache "сбалансировал нагрузку" для этого запроса к серверу, который не имеет этого сеанса ...

Может кто-нибудь помочь мне понять, как работает функция «балансировки нагрузки»?

1 Ответ

3 голосов
/ 20 апреля 2011

Насколько я понимаю, он использует механизм хеширования, чтобы определить, на какой сервер memcache отправлять запросы. Механизм хеширования использует ключ, если пара ключ-значение сохраняется, таким образом, когда значение запрашивается ключом, тот же самый метод хеширования сообщит рельсу правильный сервер memcache для получения данных.

Это означает, что если сервер memcache умирает, вы потеряете часть данных, которые кешируются на нем (т. Е. В конфигурации с 3 серверами, если один сервер умирает, вы потеряете 33% вашего кэша)

РЕДАКТИРОВАТЬ: см. http://www.ruby -forum.com / topic / 100104 для гораздо лучшего объяснения этого, чем я только что дал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...