2011-02-10 5 views
4

У меня есть кластер узлов membase, и у меня также есть набор процессов moxi, работающих в разных блоках, все настроенные для общения с этим кластером.Spymemcached, конфигурирование для отказоустойчивости

Мой клиент использует spymemcached, и я пытаюсь настроить MemcachedClient, чтобы он знал обо всех доступных процессах moxi. Таким образом, если один из этих процессов умирает, я хочу, чтобы spymemcached использовал другой moxi и продолжал отправлять данные в кластер.

В идеале все это должно быть сделано без потери информации о очередях.

Я играю с двумя процессами moxi, но не могу заставить его делать то, что я хочу.

Я искал http://groups.google.com/group/spymemcached/browse_thread/thread/d33ca15c0a928d37# и http://groups.google.com/group/spymemcached/browse_thread/thread/f7cc37fc509b70a6/cbb967e824a0ab04?hl=en&lnk=gst&q=redistribute#cbb967e824a0ab04 не повезло.

Может кто-нибудь сказать мне, если это выполнимо в spymemcached? и если да, то как его настроить?

Я играю с различными конфигурациями ConnectionFactoryBuilder.

ConnectionFactoryBuilder builder = new ConnectionFactoryBuilder(); 
builder.setFailureMode(FailureMode.Redistribute); 
builder.setProtocol(Protocol.BINARY); 
builder.setLocatorType(Locator.CONSISTENT); 

builder.setMaxReconnectDelay(1); 
builder.setTimeoutExceptionThreshold(2); 

ConnectionFactory cf = builder.build(); 
+1

Что вы делаете, что вам не нравится? Почему вы чувствуете, что вам нужны как spymemcached, так и moxi (последний из них - инструмент, предназначенный для работы как первый, где у вас нет долгоживущих процессов)? – Dustin

+0

Мне нужно использовать moxi, чтобы он мог распространять ключи через кластер membase. AFAIK существует бета-версия spymemcached, которая добавляет поддержку этой и других функций membase, но мы не хотим использовать бета-версию. У нас есть один vbucket в membase и вы хотите, чтобы осколки выполнялись процессами moxi. Но мы также хотим иметь механизм отказоустойчивости на стороне клиента, чтобы он мог переходить от одного мокси к другому, если используемое moxi умирает, не теряя данные в очереди. –

ответ

0

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