Spymemcached алгоритм хеширования для нескольких мембранных серверов - PullRequest
0 голосов
/ 18 января 2012

Платформа: spymemcached-2.7.3.jar, 64-разрядная ОС Windows 7

У нас есть два мембранных сервера ( Некластерная среда ), и мы используем spymemcached java-клиент для установки и получения данных из memcache. Мы не используем репликацию между двумя мембранными серверами.

Мы используем следующий код для установки данных в memcache. Похоже, MemcachedClient всегда сначала пытается поместить / получить данные на сервере server1, если он доступен. Если server1 не работает, то MemcachedClient ставит / получает от server2. Использует ли spymemcached какой-либо хэширующий алгоритм, чтобы решить, с какого сервера ему нужно установить / получить данные? Любая доступная документация, объясняющая, как это работает?

код

public class Main {

    public static void main(String[] args) throws IOException, URISyntaxException {

        MemcachedClient client;

        URI server1 = new URI("http://192.168.100.111:8091/pools");
        URI server2 = new URI("http://127.0.0.1:8091/pools");
        ArrayList<URI> serverList = new ArrayList<URI>();
        serverList.add(server1);
        serverList.add(server2);
        client = new MemcachedClient(serverList, "default", "");

        client.set("spoon", 50, "Hello World!");
        client.shutdown(10, TimeUnit.SECONDS);

        System.exit(0);
    }
}

1 Ответ

1 голос
/ 18 января 2012

Конструктор MemcachedClient (List, String, String) подключится к первому URI в списке для получения информации обо всем кластере.Это означает, что если в вашем кластере было 10 серверов, вы можете указать один IP-адрес для подключения ко всем из них.Причина, по которой список URI разрешен, заключается в том, что если сервер, с которого вы получаете информацию о кластере, выходит из строя, вы можете попытаться получить информацию о кластере с другого сервера в кластере.

Алгоритм хеширования, используемый Spymemcached в этомслучай определяется Membase, когда начинается конфигурация кластера.Если вы посмотрите какой-нибудь json, который отправляется в Spymemcached на этапе настройки, вы увидите, что алгоритм хэширования - CRC.Посмотрите класс DefaultHashAlgorithm для получения дополнительной информации о CRC.

Кроме того, мне любопытно, почему вы используете Membase, как описано.

...