2012-04-12 3 views
2

У меня есть то, что у меня есть 3 экземпляра memcached, работающих на 3 разных серверах. В настоящее время мое приложение имеет те же 3 разных узла. Все серверы приложений знают обо всех серверах memcached, но если один из них опускается, я не могу заметить. Идея состоит в том, чтобы переместить сервер memcached на собственные узлы.Знакомство с Couchbase с использованием memcached buckets

Я начал рассматривать CouchBase как альтернативу решения этого вопроса, но не уверен, что он будет работать.

Будет ли он работать так, чтобы у меня был кластер CouchBase, на каждом узле приложения, а затем подключался к другим серверам memcached, а CouchBase будет отслеживать и знать, какие из них являются живыми?

В этом случае, как приложение, которое в настоящее время связано с экземплярами memcached, знает, как получить данные, если один из экземпляров memcached не работает? Или это CouchBase, который будет средним человеком, заботящимся о том, где его хранить?

ответ

2

Couchbase - очень адаптивная платформа для использования при замене стандартного экземпляра memcached. Это позволяет вам переносить множество отказов по вине из вашего приложения на экземпляры couchbase.

Поскольку вы используете PHP, я рекомендую использовать PHP SDK при доступе к кластеру Couchbase. Это можно получить здесь: http://www.couchbase.com/develop/php/current

Теперь важно знать, что SDK для PHP является «vbucket aware». Это означает, что когда вы используете его для подключения к кластеру Couchbase, он будет собирать всю информацию для всех узлов из адреса, который вы ввели в конструктор. Например:

#Create the Couchbase object 
$cb_obj = new Couchbase("127.0.0.1:8091", "user", "pass", "default"); 

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

К кластеру можно управлять через интерфейс командной строки или через веб-URL, обращаясь к http://<nodehostname>:8091/. Это также URL-адрес, к которому вы будете иметь доступ, чтобы установить начальный кластер после его установки.

Я бы очень рекомендовал Couchbase в качестве альтернативы автономному memcached.

+0

Спасибо, один вопрос относительно сбора информации для всех узлов. Означает ли это, что если у меня есть кластер с серверами e.x 2 couchbase, которые, просто подключившись к одному из них, проинформируют объект об этих двух узлах? И если один из них опустится, попытается ли он получить его с других узлов? Просто интересно, что произойдет, когда сервер couchbase опустится, а не только хранилище memcached. – Nitro

+1

Итак, первоначальное сообщение получает список vbuckets, но он проверяет, где он обновляет эту информацию vbucket. Как правило, хорошей идеей является настройка своего рода виртуального IP-интерфейса или прокси-сервера, такого как nginx, который позволяет выполнять балансировку нагрузки по кругу на всех узлах. Таким образом, если один из узлов опустится, вы все равно сможете подключиться и получить эти обновления vbucket без необходимости внесения изменений кода для поддержки отказа. Кроме этого, да. Как только он разговаривает с начальным узлом с SDK Couchbase, он знает обо всех других серверах и соответственно распределяет трафик. – Drahkar

1

С Couchbase вы создали бы один кластер, состоящий из каждого из трех узлов. В приложении вы создаете экземпляр клиента PHP (?) Couchbase и присваиваете ему URI хотя бы одному из узлов. Клиент узнает о топологии кластера с любого из этих узлов.

Клиент поддерживает потоковое соединение с кластером и будет уведомлен о любых изменениях в топологии. Если узел опускается, клиент будет реагировать соответствующим образом.

Вы можете настроить автоматическое переключение и оповещения, чтобы предупредить вас о событиях с автоматическим переходом.